时间:2021-07-01 10:21:17 帮助过:43人阅读
1.社区版
2.企业版
3.集群版
数据库的安装
1. 专用软件包管理器(二进制)
deb 、rpm等
mysql MySQL客户端程序和共享库
mysql-server MySQL服务器需要的相关程序
2. 源代码软件包(编译安装)
configure、cmake
数据库常用的配置选项
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql ----指定残可安装路径(默认的就是/usr/local/mysql)
-DMYSQL_DATADIR=/data/mysql ----mysql的数据文件路径
-DSYSCONFDIR=/etc ----配置文件路径
-DWITH_INNOBASE_STORAGE_ENGINE=1 ----使用INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 ----常应用于日志记录和聚合分析,不支持索引
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 ----黑洞存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 编译过程中取消一些存储引擎指令介绍
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
-DWITH_READLINE=1 ----支持批量导入mysql数据
-DWITH_SSL=system ----mysql支持ssl会话,实现基于ssl的数据复
-DWITH_ZLIB=system ----压缩库
-DWITH_LIBWRAP=0 ----是否可以基于WRAP实现访问控制
-DMYSQL_TCP_PORT=3306 ----默认端口
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock ----默认套接字文件路径
-DENABLED_LOCAL_INFILE=1 ----是否启用LOCAL_INFILE功能
-DEXTRA_CHARSETS=all ----是否支持额外的字符集
-DDEFAULT_CHARSET=utf8 ----默认编码机制
-DDEFAULT_COLLATION=utf8_general_ci ----设定默认语言的排序规则
-DWITH_DEBUG=0 ----DEBUG功能设置
-DENABLE_PROFILING=1 ----性能分析功能是否启用
3. 服务:mysqld
4. 端口:3306
5. 主配置文件:/etc/my.cnf
6. 脚本:mysql_install_db
7. mysqld_safe
8. 数据目录:/var/lib/mysql
9. 套接字文件:/var/lib/mysql/mysql.sock
10. 当意外关闭数据库时,再开启时假如开启不了,找到这个,删除再启动
11. 进程文件:/var/run/mysqld/mysqld.pid
登录及退出mysql环境
a) 设置密码 mysqladmin -uroot password ‘123’
b) 登录 mysql -u 用户名 -p
-p 用户密码
-h 登陆位置(主机名或ip地址)
-P 端口号(3306改了就不是了)
-S 套接字文件(/var/lib/mysql/mysql.sock)
c) 退出 exit
d) 创建登录用户 create user 用户名@’%’ identified by ‘密码’
e) 修改密码 set password=password(‘新密码’)
setpassword for 用户@登录位置=password(‘新密码’) — — — root用户为其他用户找回密码
当管理员把自己密码忘记了,怎么找回???
1)关闭数据库
2)修改主配置文件(/etc/my.cnf)<------ skip-grant-tables
3)启动数据库
4)空密码登录并修改密码
update mysql.user setpassword=password(‘新密码’) where user=’root’;
5)删除skip-grant-tables,重启数据库验证新密码
SQL语句
关于库的操作:
Mysql命令 | 功能 |
show databases; | 查看服务器中当前有哪些数据库 |
use 数据库名; | 选择所使用的数据库 |
create database 数据库名; | 创建数据库 |
drop database 数据库名; | 删除指定的数据库 |
关于表的操作
MySQL命令 | 功能 |
create table 表名 (字段1 类型1,...); | 在当前数据库中创建数据表 |
show tables; | 显示当前数据库中有哪些数据表 |
describe 表名; | 显示当前或指定数据库中指定数据表的结构(字段)信息 |
drop table 表名; | 删除当前或指定数据库中指定的数据表 |
alter table 旧表名 rename 新表名; | 修改数据表的名称 |
alter table 表名 modify 字段 类型; | 修改字段的类型 |
alter table 表名 change 旧字段名 新字段名 类型; | 修改字段 |
alter table 表名 add 字段 类型(first/after) | 增加字段 |
alter table 表名 drop 字段 | 删除字段 |
MySQL命令 | 功能 |
insert into 表名(字段1,字段2,……) values(字段1的值, 字段2的值,……); | 向数据表中插入新的记录 |
update 表名 set 字段名 =新数据 where 条件表达式; | 修改、更新数据表中的记录 |
select 字段名1,字段名2……from 表名 where 条件表达式; | 从数据表中查找符合条件的记录 |
select * from 表名; | 显示当前数据库的表中的记录 |
delete from 表名 where 条件表达式; between...and... | 在数据表中删除指定的记录 指定范围 |
delete from 表名; | 将当前数据库表中记录清空 |
注:库和表的删除用drop,记录删除用delete
权限
grant权限1,权限2,...... on 数据库.数据表 to 用户@登录位置 (identified by ‘密码’);
revoke取消的权限1,取消的权限2,...... on 数据库.数据表 from 用户@登录位置;
showgrants for 用户@登录位置;
备份和还原
冷备份:把数据库关闭,离线备份(使用cp、tar等命令直接备份数据库所存放的目录)
FRM 结构
MYI 索引
MYD 数据
快照备份:(利用逻辑卷)
逻辑备份:
mysqldump
备份:mysqldump -u 用户名 -p 数据库名 > /备份路径/备份文件名(备份单个数据库)
mysqldump-u 用户名 -p 数据库名 表名 > /备份路径/备份文件名(备份数据表)
--databases库1,库2 (此时还原--->mysql< 备份文件)
--all-databases—备份服务器中的所有数据库内容
还原:mysql 数据库 < 备份文件
mysqlhotcopy
备份:mysqlhotcopy--flushlog -u=’用户’ -p=’密码’--regexp=正则 备份目录
还原:cp-rpf 备份目录 数据目录(/var/lib/mysql)
补充的备份机制
1.日志备份
>mysqlshow global variables like ‘%log%’
列出mysql中和日志相关的变量
错误日志
服务器启动和关闭时的信息
服务器运行过程中的错误信息
从服务器启动从服务器进程时产生的信息
log-error 错误日志的路径
一般日志(不启用)
记录用户对数据库的查询操作
general-log=ON 启动一般查询日志
log=ON 全局日志开关
log-output 日志的记录类型
慢查询日志
记录需要较长时间的查询操作
log-slow-queries=保存路径 启动慢查询日志,并设置个路径
二进制日志
所有对数据库状态更改的操作(create、drop、update等)
log-bin=位置 启动二进制日志
>mysql show binary logs 查看当前使用的二进制日志
>mysqlshow binlog events in ‘二进制日志(mysql-bin.000001)’ 查看二进制日志的内容
还原:(mysqlbinlog)
按时间还原:
mysqlbinlog --start-datetime ‘YY-MM-DD HH:MM:SS’--stop-datetime ‘YY-MM-DD HH:MM:SS’ 二进制日志 | mysql(-urot -p)
按文件大小还原:
--start-position
--stop-position
事务日志:记录事务相关的日志信息
中继日志:记录从服务器的备份信息
主从配置:实时备份
主主配置:(配置了2遍的主从)实时备份、负载均衡
多从一主:实时备份(更多的备份节点)
多主一从:实时备份、节约成本
实验
1.创建mysql的登录用户yzh可以登录mysql服务器
1.创建登录用户
# yum install mysql-server –y
# servicemysqld start
在另一台虚拟机上测试
创建的用户为自己更改密码
root用户为其他用户找回密码
root找回自己的密码并修改
数据库的增、删、改、查实验
创建数据库
创建数据表
复杂一点的,,,
插入数据
将表a2的数据复制到表a1
删除数据库
删除数据表
删除表里的数据记录
删除年龄在23-25之间的
修改表中的数据
修改数据表的名称
修改数据表的字段类型
修改数据表的字段
添加字段
删除字段
给用户授权
1.给用户全部权限
取消yzh用户的删除库、表、表中数据的权限
查看用户的权限
单个备份命令mysqldump -uroot -p --databases ab > /ab.sql
多个数据库的备份,数据库之间用空格隔开
mysqldump -uroot -p --databases aa ab> /1.sql
1.把数据库aa备份到/root目录下
2.模拟数据库aa丢失(删除数据库aa)
3.还原
注:此处可以会报错,如下:
解决方法为:
A、修改配置文件添加 skip-grant-tables 跳过密码验证。进入mysql后再修改root密码,
B、删除配置文件中的skip-grant-tables ,重启服务用新密码再进入!
1.备份多个数据库(--databases)
2.还原
1.备份有规则的数据库
2.模拟数据库删除
3.还原
5.关于二进制日志还原(此处实验都没有成功,以后再试)
开启二进制日志
查看二进制日志文件
按时间还原:
1.如果数据库中的bb库被删,需要还原
2.查看二进制日志内容
3.还原并查看
按文件大小还原:
还原到bb库被删除的数据状态
1.查看bb库被删除前后的文件大小
2.还原并查看
前提条件:安装了mysql,开启了二进制日志