码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2018-10-31 17:52:06      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:.so   ros   password   oca   bye   不同   stop   select   权限   

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

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

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

mysql> grant all privileges on *.* to system@‘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 单实例设置管理员用户的密码

[root@mysql-server ~]# mysqladmin -uroot password ‘alinuxer‘ 

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

[root@mysql-server ~]# mysqladmin -uroot password ‘alinuxer‘ -S /data/3306/mysql.sock  

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

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

[root@mysql-server ~]# mysqladmin -uroot -p ‘oldboy123‘ password ‘alinuxer‘     #  单实例。     

[root@mysql-server ~]# 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)

[root@mysql-server ~]# 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

[root@mysql-server ~]# mysql -uroot -p111111

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

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

4.1 停止 MySQL 数据库

[root@mysql-server ~]# /etc/init.d/mysqld stop

Shutting down MySQL. SUCCESS!

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

[root@mysql-server ~]# mysqld_safe --skip-grant-tables --user=mysql  &

[1] 6678

[root@mysql-server ~]# 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   

[root@mysql-server ~]# 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   # 退出数据库。

[root@mysql-server ~]# 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 关闭并启动数据库

[root@mysql-server ~]# /etc/init.d/mysqld stop   

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

[root@mysql-server ~]# mysqladmin -uroot -p111111 shutdown

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

[root@mysql-server ~]# /etc/init.d/mysqld start    #  启动数据库。

Starting MySQL.. SUCCESS!

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

[root@mysql-server ~]# mysql -uroot -p111111    #  登录数据库。

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

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

标签:.so   ros   password   oca   bye   不同   stop   select   权限   

原文地址:https://www.cnblogs.com/alinuxer/p/9884443.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!