Linux-关于MySQL(四)

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'

删除已有的日志文件
验证日志文件的作用
使用日志恢复数据
恢复所有数据
恢复部分数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值