1.用户授权
1.1 用户授权介绍:数据库管理员root用户,登陆数据库服务后,添加新的用户,给可以连接数据服务使用。
1.2 用户授权的命令格式 (数据库管理员登录后执行)
grant 权限列表 on 数据库名 to 用户名@“客户端地址” identified by “密码” with grant option;
1.3 命令参数介绍
权限列表的表示方式
数据库名的表示方式
用户名的定义
客户端地址的表示方式
密码
with grant option 可选
1.4 权限例子
grant all 代表所有权限) select,insert,create
grant update(name,age) on(对name,age有更新权限)
grant usage(无权限)
*.* 所有库 所有表
db1.*
mysql> grant all on *.* to mydba@"192.168.4.%" identified by "123qqq...A";
[root@localhost ~]# mysql -h192.168.4.10 -umydba -p
Enter password:
mysql> grant select on db3.user to admin@"192.168.4.%" identified by "123qqq...A";
1.5 相关命令
mysql> select user();
mysql> select @@hostname;
+-----------------------+
| @@hostname |
+-----------------------+
| localhost.localdomain |
+-----------------------+
1 row in set (0.00 sec)
mysql> show grants;
+------------------------------------------------------+
| Grants for mydba@192.168.4.% |
+------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'mydba'@'192.168.4.%' |
+------------------------------------------------------+
1 row in set (0.00 sec)
修改密码为
mysql> set password=password("A...qqq321");
mysql> set password for admin@"192.168.4.%"=password("123qqq...A");
Query OK, 0 rows affected, 1 warning (0.00 sec)
删除用户
1.6 测试授权
mysql -h 数据库服务器ip -u登陆的用户 -p123qqq...A
1.7 授权库mysql
user表 记录已有的授权用户及权限
mysql> show grants for mydba@"192.168.4.%";
+------------------------------------------------------+
| Grants for mydba@192.168.4.% |
+------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'mydba'@'192.168.4.%' |
+------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from mysql.user where host="%" amd user="mydba" \G
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'amd user="mydba"' at line 1
mysql> select * from mysql.user where host="%" and user="mydba" \G
Empty set (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
db表 记录已有授权用户对数据库的访问权限
tables_priv表 记录已有授权用户对表的访问权限
columns_priv表 记录已有授权用户对字段的访问权限
1.8 撤销权限
revoke 权限列表 on 库.表 from
mysql> revoke all on *.* from mydba@"192.168.4.%";
root修改密码
修改数据管理员本机登陆密码
root密码管理
修改数据管理员本机登录密码
命令格式
[root@host50 ~]# mysqladmin -hlocalhost -uroot -p旧密码 password "新密码"
例子
[root@host50 ~]# mysqladmin -hlocalhost -uroot -ptarena password "123456"
验证 使用新密码登录
[root@host50 ~]# mysql -uroot -p123456
MySQL >
恢复数据库管理员本机登录密码
具体步骤如下:
修改配置文件
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables
#validate_password_policy=0
#validate_password_length=6
:wq
重启数据库服务
[root@host50 ~]# systemctl restart mysqld
无密登录
[root@host50 ~]# mysql
修改密码字段的值 并执行刷新
mysql> update mysql.user set authentication_string=password("123qqq...A") where user="root" and host="localhost";
mysql> flush privileges;
mysql> exit
修改配置文件 并重启服务
[root@host50 ~]# vim /etc/my.cnf
mysqld]
#skip-grant-tables
validate_password_policy=0
validate_password_length=6
:wq
[root@host50 ~]# systemctl restart mysqld
**使用修改的密码登录**
[root@host50 ~]# mysql -uroot -p123qqq...A
MYSQL>
命令格式
2 数据备份
2.1 相关概念
什么是备份?
备份的目的?
备份的手段?执行写好的数据备份脚本
搭建服务结构对数据做备份
备份的方式?物理备份 直接拷贝数据库目录
cp tar
[root@localhost ~]# cp -r /var/lib/mysql /root/mysql.bak
[root@localhost mysql.bak]# scp -r /root/mysql.bak/ root@192.168.4.11:/opt/
物理恢复
具体操作如下:
停止数据服务
[root@localhost ~]# systemctl stop mysqld.service
清空数据库目录
[root@localhost ~]# rm -rf /var/lib/mysql/*
拷贝备份文件
[root@localhost ~]# cp -r /opt/mysql.bak /var/lib/mysql
修改所有者和组用户为mysql
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql
启动服务
[root@localhost ~]# systemctl start mysqld
管理员登陆并查看
[root@localhost ~]# mysql -uroot -p
mysql> show databases;
逻辑备份
使用数据库服务提供的软件自带的命令或安装其他软件提供的命令对数据做备份,在执行备份命令时,根据已有的数据自动创建对应的命令。
备份策略? 完全备份
差异备份 是现在有多少数据减去完全备份的数据就是备份的数据
增量备份 增加了多少数据 就备份多少的数据
2.2 数据完全备份 命令(mysql dump)
命令格式
mysqldump -uroot -p密码 库.表 > 目录名
库名的表示方式:
一张表 库名 表名 例如db1 t10
[root@localhost mybak]# mysqldump -uroot -p123456 db3 user > /mybak/db3bak.sql
一个库 库名 例如 mysql
[root@localhost mybak]# mysqldump -uroot -p123456 mysql > /mybak/mysql.sql
一台服务器 --all-databases 或者 -A
[root@localhost /]# mysqldump -uroot -p123456 -A > /mybak/all.sql
-B 一起备份多个库的所有数据
参数写法
2.3 数据完全恢复 命令 (mysql )
命令格式
mysql -uroot -p密码 库名 < 目录名/文件名
3 增量备份 之binlog日志的使用
使用mysql的 binlog日志实现数据的备份和恢复
日志的管理
日志介绍(binlog日志是什么)
启用日志
[root@localhost mybak]# vim /etc/my.cnf
[mysqld]
secure_file_priv="/myload"
server_id=10
log_bin
[root@localhost mybak]# systemctl restart mysqld
mysql> show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000001 | 154 | | | |
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> exit
Bye
[root@localhost mybak]# cd /var/lib/mysql
[root@localhost mysql]# ls /var/lib/mysql
mysql/ mysql-files/ mysql-keyring/
[root@localhost mysql]# ls /var/lib/mysql/*-bin.*
/var/lib/mysql/localhost-bin.000001 /var/lib/mysql/localhost-bin.index
[root@localhost mysql]#
手动创建新的日志文件
[root@localhost mysql]# mysqlbinlog /var/lib/mysql/host50-bin.000001
[root@localhost mysql]# vim /etc/my.cnf
[root@localhost mysql]# mkdir /mylog
[root@localhost mysql]# chown mysql /mylog
[root@localhost mysql]# ls -ld /mylog
drwxr-xr-x. 2 mysql root 6 Jul 22 11:27 /mylog
[root@localhost mysql]# setenforce 0
[root@localhost mysql]# systemctl restart mysqld
[root@localhost mysql]# ls /mylog
plj.000001 plj.index
[root@localhost mysql]# mysql -uroot -p123456 -e 'show master status'
删除已有的日志文件
验证日志文件的作用
使用日志恢复数据
恢复所有数据
恢复部分数据