设置、修改及找回 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>      #  找回密码后登录成功。

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

时间: 2024-10-16 22:45:27

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

重设MySQL数据库root用户的密码

在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法: 1.  在SHELL环境下,使用mysqladmin命令设置:mysqladmin –u root –p password "新密码"   回车后要求输入旧密码 2.  在mysql>环境中,使用update命令,直接更新mysql库user表的数据: Update mysql.user  set  password=password('新密码')  where  user='root'; flush   pri

初次修改MySql数据库root用户的的密码

首先进入命令行下:以root用户登录,命令:回车 输入密码: mysql>use mysql: mysql>UPDATE user SET password=PASSWORD('输入新密码') WHERE user='root'; 已经完成.

Centos系统mysql 忘记root用户的密码

第一步:(停掉正在运行的mysql)[root@maomao ~]# service mysqld stop  Stopping MySQL:                                            [  OK  ] 第二步:使用 "--skip-grant-tables"参数重新启动mysql[[email protected] ~]# mysqld_safe --skip-grant-tables [[email protected] ~]# Star

CentOS中对MySql的root用户重置密码

由于一般的修改ini文件来完成无密码登录数据库容易造成较大风险,所以使用修改启动服务参数的方式来更新user表,达到无密码登陆的目的. 1.关闭系统下运行的mysql服务 (1)杀掉进程号达到关闭目的 先使用ps -ef|grep mysql查找进程号,然后使用kill+ PID的方式杀掉进程. (2)使用systemctl工具来关闭mysql服务 systemctl stop mysql 2.修改mysql的启动选项更新user表,达到无密码登陆的效果 systemctl set-enviro

重设mysql数据库root用户密码

原文:http://blog.sina.com.cn/s/blog_a3695da601010mrs.html 1, 启用任务管理器,结束mysql进程 2,进入命令行,进入mysql的bin目录(<环境变里>path里面可以找到bin目录)启动mysql服务: mysqld -nt --skip-grant-tables  (以不检查权限的方式启动): (可能会出现:120705 17:41:14 [Warning] option 'new': boolean value 't' wasn'

Linux下 mysql忘记root用户密码

今天在接收一台MYSQL服务器的时候发现忘记MYSQL的root用户的密码,查找资料发了各种文档里面也没有root用户密码,因此需要修改root用户密码. 首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库.因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息.最安全的状态是到服务器的Console上面操作,并且拔掉网线. 1.修改MySQL的登录设置: 在[mysqld]的段中加上的s

CentOS下配置MySQL允许root用户远程登录

1.常用命令: 安装上传下载文件命令yum install lrzsz安装webget工具yum -y install wget ------------------------------------分割线--------------------------------------------- 在CentOS上成功安装MySQL Server后,发现无法用客户端进行连接,查阅相关质料后发现如果想让root用户支持远程登录,是需要进行额外配置的:配置步骤如下: 步骤:    修改root密码

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

修改或找回root密码步骤1.修改MySQL的登录设置: # vi /etc/my.cnf 在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vi. 2.重新启动mysqld # /etc/init.d/mysqld restart ( service mysqld restart )3 mysql -uroot -p 回车 mysql> USE mysql ; mysql> UPDATE user SET Password = password ( 'new-

Windows环境修改MYSQL的root用户密码

在使用MYSQL数据库的时候,第一次登录的时候,root默认没有密码.在使用过程中难免会忘记root用户的密码,密码不正确的时候,报如下错误: I:\Develop\mysql-5.6.19\bin>mysql -u root -pEnter password:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 具体修改root密码如下: 1.执行"net stop mysql