一 用户授权
grant授权
命令格式
-grant 权限列表 on 库名 to 用户名@"客户端地址" identified by "密码" //授权用户密码
with grant option; //有授权权限,可选项
mysql> GRANT all ON *.* TO root@'192.168.4.%' IDENTIFIED BY 'tarena'; // %代表所有网段的主机
grant授权(1)
-权限列表
-all //所有权限
-usage //无权限
-select , update, insert //个别权限
-select ,update (字段名,.. .., 字段N) //指定字段
-库名
-*.* //所有库所有表
-库名.* //一个库
-库名.表名 //一张表
grant授权(2)
-用户名
-授权时自定义 要有标识性
-存储在mysql库库的user表里
客户端地址
-% //所有主机
-192.168.4.% //网段内所有主机
-192.168.4.1 //1台主机
-localhost //数据库服务器本机
相关命令
命令 | 作用 |
select user( ) ; | 显示登录用户名及客户端 |
show grants; | 用户显示自身访问权限 |
show grants for 用户名@" 客户端地址" ; | 管理员查看已有授权用户权限 |
set passwiord= password( "密码" ); | 授权用户连接修改密码 |
set password for 用户名@ "客户端地址" = password( "密码" ); | 管理员重置授权用户连接密码 |
drop user 用户名@" 客户端地址"; | 删除授权用户( 必须有管理权限) |
授权库
mysql库 记录授权信息,主要表如下:
- user表 记录已有的授权用户及权限
- db表 记录已有授权用户对数据库的访问权限
- tables_priv表 记录已有授权用户对字段的访问权限
撤销权限
命令格式:
mysql> revoke 权限列表 on 库名.表 from 用户名@" 客户端地址";
mysql> REVOKE all ON webdb.* FROM webuser@'%';
root密码
恢复root密码 (续1)
[root@50~]# systemctl stop mysqld.service //停止服务 [root@50~]# systemctl status mysqld.service //确认状态 [root@dbsvr1 ~]# vim /etc/my.cnf [mysqld] skip_grant_tables //添加skip_grant_tables .. .. [root@50~]# systemctl start mysqld.service
使用mysql命令连接到MySQL服务,重设root的密码
[root@50 ~]# mysql //直接回车即可
进入 mysql> 环境后,通过修改mysql库中user表的相关记录,重设root用户从本机登录的密码:
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('123qqq…A') -> WHERE user='root' AND host='localhost'; //重设root的密码 mysql> FLUSH PRIVILEGES; //刷新授权表 mysql> exit
备份概述
数据备份方式
物理备份
-冷备: cp tar
逻辑备份
- mysqldump //备份命令
- mysql //恢复命令
备份操作
cp -r /var/lib/mysql 备份目录/mysql.bak
tar -zcvf /root/mysql.tar.gz /var/lib/mysql/*
恢复操作
cp -r 备份目录/mysql.bak /var.lib/mysql/
tar -zxvf /root/mysql.tar.gz -C /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql
数据备份策略
完全备份
- 备份所有数据
增量备份
- 备份上次备份后,所有新产生的数据
差异备份
- 备份完全备份后, 所有新产生的数据
完全备份及恢复
- 完全备份
]# mysqldump -uroot -p密码 库名 > 目录/xxx.sql
- 完全恢复
]# mysql -uroot -p密码 [ 库名 ] < 目录/xxx.sql
[root@50 ~]# mysqldump -u root -p --all-databases > /root/alldb.sql Enter password: //验证口令 [root@50 mysql]# file /root/alldb.sql //确认备份文件类型 /root/alldb.sql: UTF-8 Unicode English text, with very long lines
完全备份及恢复 ( 续1)
~ 备份是库名表示方式
- --all-databases 或 -A //所有库
- 数据库名 //单个库
- 数据库名 表名 //单张表
- -B 数据库1 数据库2 //多个库
注意事项
-无论备份还是恢复, 都要验证用户权限 ! ! !
binglog 日志
日志概述
~ 什么是binlog日志
1. 也称做 二进制日志
2. MySQL服务日志文件的一种
3. 记录除查询之外的所有的SQL命令
4. 可用于数据备份和恢复
5. 配置mysql主从同步的必要条件
启用日志
配置项 | 用途 |
server_id=数字 | 指定id值( 1-255 ) |
log_bin[ =目录名/文件名] | 启用binlog日志 |
max_binlog_size=数值m | 指定日志文件容量,默认1G |
[root@50 ~]# vim /etc/my.cnf
[mysqld] //在他下边手动添加
server_id=1 //指定server_id
log-bin=/mylog/db50 //指定日志目录及名称
[root@50~]# systemctl restart mysqld //重启服务
binglog相关文件
- 主机名-bin.index 索引文件
- 主机名-bin.000001 第一个二进制日志
- 主机名-bin.000002 第二个二进制日志
mysql> show master status; //查看日志信息
mysql> flush logs; //刷新日志 (自动生成日志)
清楚日志
~ 删除指定编号之前的binlog日志文件
- mysql> purge master logs to "binlog文件名";
~ 删除所有binlog日志,重建新日志
- mysql> reset master;
mysql> purge master logs to "db50.000003"; //删除日志 mysql> system ls /mylog/ //查看日志文件 db50.000003 db50.000004 db50.index mysql> mysql> system cat /mylog/db50.index //查看索引文件 /mylog/db50.000003 /mylog/db50.000004 mysql>
恢复数据
分析日志
- 查看日志当前记录格式
mysql> show variables like " binlog_format";
修改日志记录格式
]# vim /etc/my.cnf
[mysqld]
binlog_format= "名称"
]# systemctl restart mysqld
三种记录方式:
1. statement 报表模式
2. row 行模式
3. mixed 混合模式
分析日志
~ 查看日志内容
- mysqlbinlog [选项] binlog日志文件名
选项 | 用途 |
--start-datetime=" yyyy-mm-dd hh:mm:ss" | 起始时间 |
--stop-datetime=" yyyy-mm-dd hh:mm:ss" | 结束时间 |
--start-position=数字 | 起始偏移量 |
--stop-position=数字 | 结束偏移量 |
恢复数据
~ 基本思路
- 使用mysqlbinlog提取历史SQL操作
- 通过管道交给 mysql命令执行
~ 命令格式
- mysqlbinlog 日志文件 | mysql -uroot -p密码