一、用户授权
     命令格式:
     grant 权限列表 on 库名 to 用户名@"客户端地址" 
     identified by "密码"                                  ==>>授权用户密码
     with grant option;                                    ==>>使该用户有授权权限,可选项
         权限列表:
         all    所有权限
         usage  无权限
         select,update,insert  个别权限
         select,update,insert(字段1,.....,字段N) 指定字段
         库名:
         *.*   所有库所有表
         库名.*   一个库
         库名.表名  一张表
         客户端地址:
         %      所有主机
         192.168.4.% 网段内所有主机
         192.168.4.5 一个主机
         locahost    数据库服务器本机
 mysql>  grant all on db4.* to yaya@"%" identified by "123qqq...A";
     登录用户使用:
     select user();   显示登陆用户名及客户端地址
     show grants;       用户显示自身访问权限
     set password=password(“密码”)  授权用户连接后修改连接密码
     set password for 用户名@“客户端地址”=password(“密码”)  管理员重置授权用户连接密码
     show grants for 用户名@“客户端地址”;    管理员查看已有授权用户权限
     drop user 用户名@“客户端地址”;         删除授权用户(必须有管理员权限)
 授权用户
 mysql> select user();
 mysql> show grants;
 mysql> set password=password("123qqqq...A");
 管理员用户
 mysql> show grants for yaya@"%";
 mysql> set password for yaya@"%" = password("123qqq...A");
 mysql> drop user yaya@"%";
 mysql库记录授权信息
     user表  记录已有的授权用户及权限
     db表    记录已有授权用户对数据库的访问权限
     tables_priv  记录已有授权用户对表的访问权限
     columns_priv 记录已有授权用户对字段的访问权限
     可以通过修改表记录修改权限
 mysql> select host,user from mysql.user;
 +-------------+---------------+
 | host        | user          |
 +-------------+---------------+
 | %           | mydna         |
 | %           | yaya          |
 | 192.168.4.% | admin         |
 | localhost   | admin         |
 | localhost   | mysql.session |
 | localhost   | mysql.sys     |
 | localhost   | root          |
 +-------------+---------------+
 mysql> select host,user,db from mysql.db;
 +-----------+---------------+--------------------+
 | host      | user          | db                 |
 +-----------+---------------+--------------------+
 | %         | yaya          | db4                |
 | localhost | admin         | db3                |
 | localhost | mysql.session | performance_schema |
 | localhost | mysql.sys     | sys                |
 +-----------+---------------+--------------------+
 mysql> select host,user,db,table_name from mysql.tables_priv;
 +-------------+---------------+-------+------------+
 | host        | user          | db    | table_name |
 +-------------+---------------+-------+------------+
 | 192.168.4.% | admin         | db3   | user       |
 | localhost   | mysql.session | mysql | user       |
 | localhost   | mysql.sys     | sys   | sys_config |
 +-------------+---------------+-------+------------+
 mysql> select host,user,db,table_name from mysql.columns_priv;
 +------+------+-----+------------+
 | host | user | db  | table_name |
 +------+------+-----+------------+
 | %    | yaya | db3 | user       |
 | %    | yaya | db3 | user       |
 +------+------+-----+------------+
 撤销权限
     命令格式:
     revoke 权限列表 on 库名.表名 from 用户名@“客户端地址”;
 mysql> revoke grant option on *.* from mydna@"%";
 mysql> revoke delete,update on *.* from mydna@"%";
 mysql> revoke all on *.* from mydna@"%";
 mysql> drop user mydna@"%";二、备份
 物理备份及恢复
 备份操作
 [root@mysql50 ~]# cp -r /var/lib/mysql /opt/mysql.bak
 [root@mysql50 ~]# tar -zcvf /opt/mysql.tar.gz /var/lib/mysql/*
 恢复操作
 [root@mysql53 ~]# cp -r /opt/mysql.bak /var/lib/mysql/
 [root@mysql53 ~]# tar -zxvf /opt/mysql.tar.gz -C /var/lib/mysql/
 [root@mysql53 ~]# chown -R mysql:mysql /var/lib/mysql1.完全备份:备份所有数据
     备份数据:]#mysqldump -uroot -p密码   库名 > 目录/xxx.sql
     库名:
     --all-databases或-A   所有库
     数据库名              单个库
     数据库名 表名         单张表
     -B 数据库1 数据库2    多个库
 [root@mysql50 ~]# mysqldump -uroot -ptarena db3 user > /root/db3_user.sql
     恢复数据: ]#mysql -uroot -p密码   [库名] < 目录/xxx.sql
 [root@mysql51 ~]# mysql -uroot -ptarena db3 < db3_user.sql2.增量备份:备份上次备份后,所有新产生的数据
 1)启用binlog日志
 [root@mysql50 ~]# vim /etc/my.cnf
 [mysqld]
 ....
 log_bin                  ==>>启用binlog日志
 server_id=50            ==>>标识本机服务id
 max_binlog_size=500MB    ==>>指定日志文件容量,默认为1G
 ....
 [root@mysql50 ~]# systemctl restart mysqld
 mysql> show master status;                     ==>>查看binlog日志
 [root@mysql50 ~]# ls /var/lib/mysql
 mysql50-bin.index                                 ==>>binlog日志的索引文件
     手动生成新的日志文件
     1.[root@mysql50 ~]# systemctl restart mysqld
     2.[root@mysql50 ~]# mysqldump --flush-logs
     3.[root@mysql50 ~]# mysql -uroot -ptarena -e 'flush log'
     4.mysql> flush logs
     
 2)清理日志
 mysql> purge master logs to "mysql50-bin.000003";    ==>>删除指定编号之前的binlog日志
 mysql> reset master;                             ==>>删除所有binlog日志,重建新日志3)自定义日志名和存储位置
 [root@mysql50 ~]# vim /etc/my.cnf
 [mysqld]
 ....
 log_bin=/myload/50-logs               ==>>定义目录与文件民前缀
 ....
 [root@mysql50 ~]# systemctl restart mysqld
 [root@mysql50 ~]# chown mysql.mysql /myload
 mysql> show master status;4)分析日志
     三种记录方式:
     statement    报表模式
     row          行模式
     mixed        混合模式
 mysql> show variables like "binlog_format";         ==>>查看日志房前记录格式
 [root@mysql50 ~]# vim /etc/my.cnf           ==>>修改日志记录格式
 [mysqld] 
 .....
 binlog_format=row
 ....
 [root@mysql50 ~]# systemctl restart mysqld5)查看日志内容
     格式:mysqlbinlog [选项] binlog日志文件名
         选项:
         --start-datetime=“yyyy-mm-dd hh:mm:ss”   起始时间
         --stop-datetime=“yyyy-mm-dd hh:mm:ss”    结束时间
         --start-position=数字                      起始偏移量
         --stop-position=数字                       结束偏移量
 [root@mysql50 ~]# mysqlbinlog --start-datetime="2020-01-01 00:00:00" /var/lib/mysql/mysql50-bin.0000016)恢复数据
     命令格式:
     mysqlbinlog [选项] 日志文件 |mysql -uroot -p密码
         选项:
         --start-datetime=“yyyy-mm-dd hh:mm:ss”   起始时间
         --stop-datetime=“yyyy-mm-dd hh:mm:ss”    结束时间
         --start-position=数字                      起始偏移量
         --stop-position=数字                       结束偏移量
 [root@mysql50 ~]# mysqlbinlog /var/lib/mysql/mysql50-bin.000001 |mysql -uroot -ptarena   ==>>恢复全部
 [root@mysql50 ~]# mysqlbinlog --start-position=125 --stop-position=535 /var/lib/mysql/mysql50-bin.000001 |mysql -uroot -ptarena   ==>>恢复指定范围数据
 3.差异备份:备份上次完全备份后,所有新产生的数据三、root密码管理
 恢复root密码
 [root@mysql54 ~]# vim /etc/my.cnf
 [mysqld]
 ....
 skip-grant-tables                       ==>>添加此行,跳过权限列表认证,有密码策略注释掉
 ....
 [root@mysql54 ~]# systemctl restart mysqld
 [root@mysql54 ~]# mysql
 mysql> update mysql.user set authentication_string=password("123qqq...A")
     -> where user="root" and host="localhost";
 mysql> flush privileges;
 mysql> quit
 [root@mysql54 ~]# vim /etc/my.cnf
 [mysqld]
 ....
 #skip-grant-tables
 ....
 [root@mysql54 ~]# systemctl restart mysqld
 [root@mysql54 ~]# mysql -uroot -p123qqq...A
 重置root密码
 [root@mysql54 ~]# mysqladmin -uroot -p password "123qqq...A"
 Enter password:
 --------------------------------------------------------------------
     [root@mysql54 ~]# mysqladmin -uroot -p password "新密码"
     Enter password:旧密码
 --------------------------------------------------------------------