mysql数据库密码的修改与恢复
一、mysql密码的修改与恢复
1.修改密码
mysqladmin -u root -p123 password 456
数据库内修改
method.first:
update mysql.user set password=password('123') where user='root' and host='localhost';
flush privileges;
method.second:
set password for root@'localhost' =password('123');
注: 此方法无序刷新权限
method.third:
mysql_secure_installation
注: 安全配置向导,会对数据库进行简单的优化
二、忘记mysql密码后的恢复
1.跳过mysql安全验证,直接mysql无密码登录,然后进入修改密码
1
2
|
/etc/init.d/mysqld stop mysqld_safe --skip-grant-table --user=mysql &>/dev/ null & |
1
|
<span style= "font-size: 14px;" ><br>三、如何防止mysql密码泄露<br></span> |
1. 设置环境变量强制linux不记录敏感历史命令
临时生效(命令行操作):HISTCONTROL=ignorespace 然后[ root@ 001 ~] # mysql -uboy -pboy123
永久生效:
echo ' HISTCONTROL=inorespace ' >>/etc/bashrc 然后source生效
2. 通过history删除命令行记录
清空所有记录 history -c
删除指定行记录 history -d 行号
清空历史记录文件 >~/.bash_history
3.把密码写入my.cnf 配置文件的 [ mysqld ] 下添加 skip-grant-tables 重启数据库生效
四、数据库的备份与恢复
1、单库备份与还原
1
2
3
4
5
6
7
|
备份 mysqldump -uroot -p123456 lll>/opt/backup/lll.sql 注:此操作只备份其中的表(包括创建表的语句和数据) 还原 mysql -uroot -p123 -e ' create database lll;' mysql -uroot -p123 lll < /opt/backup/lll.sql |
2.多库备份与还原
1
2
3
4
5
|
备份 mysqldump -uroot -p123 库名 表1 表2>/opt/backup/mysql_bak_db.sql 还原 mysql -uroot -p123 库名 </opt/backup/mysql_bak_db.sql |
3.全库备份
1
2
3
|
mysqldump -uroot -p123 -A >/opt/backup/mysql_bak_db.sql 或 mysqldump -uroot -p123 --all-databases > /opt/backup/mysql_bak_db.sql |
4.还原备份
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#备份lol数据库 [root@ c6s02 ~]# mysqldump -uroot -p123456 -B lol >lol.sql #先删除lol数据库 [root@ c6s02 ~]# mysql -uroot -p123456 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | lol | | mysql | | performance_schema | | test | | wg | +--------------------+ 6 rows in set (0.00 sec) mysql> drop database lol; Query OK, 3 rows affected (0.03 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | wg | +--------------------+ 5 rows in set (0.00 sec) mysql> \q #测试恢复并查看 [root@ c6s02 ~]# mysql -uroot -p123456 <lol.sql Warning: Using a password on the command line interface can be insecure. [root@ c6s02 ~]# mysql -uroot -p123456 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | lol | | mysql | | performance_schema | | test | | wg | +--------------------+ 6 rows in set (0.00 sec) mysql> select * from lol.hero; +----+--------+--------+-----------+--------+ | id | 角色 | 职业 | 攻击力 | 血量 | +----+--------+--------+-----------+--------+ | 1 | 蛮王 | 战士 | 200 | NULL | | 2 | 狗头 | 战士 | 100 | NULL | | 3 | 剑圣 | 战士 | 300 | NULL | +----+--------+--------+-----------+--------+ 3 rows in set (0.00 sec) |
(2)、method.second:
1
2
|
[root@ c6s02 ~]# mysql -uroot -p123456 mysql> source /root/lol.sql |
通过二进制日志备份和恢复
1.备份二进制日志
cp /var/lib/mysql/mysql-bin.* /home/backup/
2.恢复
查看二进制日志
mysqlbinlog /var/lib/mysql/mysql-bin.000001
恢复
从日志文件mysql-bin.000004的位置1379恢复到1966
mysqlbinlog mysql-bin.000004 --start-position=1379 --stop-position=1966 | mysql -uroot
从日志文件mysql-bin.000004的日期2019-09-27 15:08:49 恢复到2019-09-27 15:09:06
mysqlbinlog mysql-bin.000004 --start-datetime="2019-09-27 15:08:49" --stop-datetime="2019-09-27 15:09:06" | mysql -uroot
更多操作详情参考如下:
https://github.com/crazywjj/bawei