设置修改及找回 MySQL 数据库 root 用户的密码

Posted alinuxer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置修改及找回 MySQL 数据库 root 用户的密码相关的知识,希望对你有一定的参考价值。

1. MySQL 数据库用户安全策略介绍

安装 mysql 数据库后,默认的管理员 root 密码为空,很不安全,需要设置密码。针对 MySQL数据库的用户处理,还有更严格的做法:

① 增加 system 并提升权限为超级管理员,即和 root 等价的用户,只是名字不同。        

mysql> grant all privileges on *.* to [email protected]‘localhost‘ identified by ‘alinuxer123‘ with grant option;

Query OK, 0 rows affeccted (0.00 sec)

② 删除所有 MySQL 中的用户,包括 root 管理员。

mysql> delete from mysql.user;

Query OK, 2 rows affeccted (0.00 sec)

提示:可以保留 root 用户,也可以把超级管理员 root 用户修改为其他用户名。

2. 为超级管理员 ROOT 用户设置密码

2.1 单实例设置管理员用户的密码

[[email protected] ~]# mysqladmin -uroot password ‘alinuxer‘ 

2.2 多实例指定 sock 文件设置管理员的密码     

[[email protected] ~]# mysqladmin -uroot password ‘alinuxer‘ -S /data/3306/mysql.sock  

3. 修改管理员用户 root 密码的多种方法

3.1 方法一:通过 mysqladmin 命令修改

[[email protected] ~]# mysqladmin -uroot -p ‘oldboy123‘ password ‘alinuxer‘     #  单实例。     

[[email protected] ~]# mysqladmin -uroot -p ‘oldboy123‘ password ‘alinuxer‘ -S /data/3306/mysql.sock    # 多实例。

3.2 方法二:进入数据库通过 SQL 语句 修改密码

mysql> select user,host,password from mysql.user;

+-----------+---------------+-------------------------------------------+

| user      | host          | password                                  |

+-----------+---------------+-------------------------------------------+

| root      | localhost      | *FD571203974BA9AFE270FE62151AE967ECA5E0AA |   #  加密。

| root      | 127.0.0.1     |                                           |

| wordpress | 192.168.136.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| bbs       | 192.168.136.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

+-----------+---------------+-------------------------------------------+

4 rows in set (0.00 sec)

mysql> update mysql.user set password=password("123456") where user=‘root‘ and host=‘localhost‘;      

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

提示:此方法必须指定 where 条件,必须使用 password() 函数加密。

查看修改的密码(加密):  

mysql> select user,host,password from mysql.user;            

 +-----------+---------------+-------------------------------------------+

| user      | host          | password                                  |

+-----------+---------------+-------------------------------------------+

| root      | localhost     | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| root      | 127.0.0.1     |                                           |

| wordpress | 192.168.136.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| bbs       | 192.168.136.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

+-----------+---------------+-------------------------------------------+

4 rows in set (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

[[email protected] ~]# mysql -uroot -p123456 

mysql>      #  修改密码后登录成功。

3.3 方法三:管理员身份登陆修改当前登录用户的密码

mysql> set password=password(‘111111‘);     # 修改当前登录用户的密码。

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;                         

Query OK, 0 rows affected (0.00 sec)

mysql> Bye

[[email protected] ~]# mysql -uroot -p111111

mysql>      #  修改密码后登录成功。

4. 找回丢失的 MySQL 数据库 ROOT 密码

4.1 停止 MySQL 数据库

[[email protected] ~]# /etc/init.d/mysqld stop

Shutting down MySQL. SUCCESS!

4.2 使用 --skip-grant-tables 忽略授权表的方式登陆验证

[[email protected] ~]# mysqld_safe --skip-grant-tables --user=mysql  &

[1] 6678

[[email protected] ~]# 180408 16:58:44 mysqld_safe Logging to ‘/application/mysql/data/mysql-server.err‘.

180408 16:58:44 mysqld_safe Starting mysqld daemon with databases from /application/mysql/data   

[[email protected] ~]# mysql    #  空密码登录。

4.3 通过 update 指定 password 函数和用户修改加密密码

mysql>update mysql.user set password=password("111111") where user=‘root‘ and host=‘localhost‘;

ser=‘root‘ and host=‘localhost‘;

Query OK, 1 row affected (0.07 sec)

Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;     #  刷新权限。  

Query OK, 0 rows affected (0.07 sec)

mysql> Bye   # 退出数据库。

[[email protected] ~]# ps -ef|grep mysql    #  查看数据库进程。

root       1184      1  0 14:27 ?        00:00:00 /sbin/dhclient -H mysql-server -1 -q -lf /var/lib/dhclient/dhclient-eth0.leases -pf /var/run/dhclient-eth0.pid eth0

root       6678   6134  0 16:58 pts/0    00:00:00 /bin/sh /application/mysql/bin/mysqld_safe --skip-grant-tables --user=mysql

mysql      6921   6678  0 16:58 pts/0    00:00:00 /application/mysql/bin/mysqld --basedir=/application/mysql --datadir=/application/mysql/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --skip-grant-tables --log-error=/application/mysql/data/mysql-server.err --pid-file=/application/mysql/data/mysql-server.pid --socket=/tmp/mysql.sock --port=3306

root       6978   6134  0 17:09 pts/0    00:00:00 grep mysql

#  重启之前 MySQL 数据库进程依旧是忽略授权表方式启动的。

4.4 关闭并启动数据库

[[email protected] ~]# /etc/init.d/mysqld stop   

#  此时用这种方式关闭数据库关不了。

[[email protected] ~]# mysqladmin -uroot -p111111 shutdown

#  用这种方式关闭数据库。

[[email protected] ~]# /etc/init.d/mysqld start    #  启动数据库。

Starting MySQL.. SUCCESS!

4.5 找回管理员密码并登录成功

[[email protected] ~]# mysql -uroot -p111111    #  登录数据库。

mysql>      #  找回密码后登录成功。

以上是关于设置修改及找回 MySQL 数据库 root 用户的密码的主要内容,如果未能解决你的问题,请参考以下文章

mysql忘记root用户密码找回步骤

Mysql忘记root密码,如何找回来呢?值得收藏

mysql 找回密码

[读书笔记]mysql 找回丢失的root密码

Mysql找回root密码

MySQL数据库应用管理实战-- 找回密码