Mysql重置root密码


一、mysql 查看当前版本

1、命令行登录后查看: 登录到MySQL服务器后,执行以下命令:

1
SELECT VERSION();

2、仅在命令行查看而不登录

1
2
mysql --version  
mysql -V

3、版本解释 Ver 14.14 Distrib 5.7.44, for Linux (x86_64) using EditLine wrapper

1
2
3
4
5
6
7
8
9
10
11
Ver: 这是版本(Version)的简写,指的是MySQL服务器的版本。

14.14: 这是MySQL服务器的具体版本号。在这里,14.14 可能是指开发系列版本,例如 5.7.14。

Distrib: 这个词是“Distribution”的缩写,意味着这是一个分发版,通常是由第三方编译的,用于特定的操作系统和平台。

5.7.44: 这是MySQL数据库管理系统的主要版本号,表明这是5.7系列的第44次更新或补丁。

for Linux (x86_64): 这指定了MySQL服务器被编译和设计运行的操作系统和处理器架构。在这个例子中,它被编译为在Linux操作系统上运行,并且适用于x86_64(即64位)的处理器架构。

using EditLine wrapper: EditLine是一个为读取、编辑和缓存输入而设计的库,通常用于实现命令行编辑功能,比如命令历史的记录和编辑。using EditLine wrapper 表示MySQL服务器使用了EditLine库作为其命令行编辑接口。

二、不记得mysqlroot密码重置MySQL的root密码

1、停止MySQL服务。

1
service mysql stop

2、启动MySQL服务,跳过授权表。

(1)第一种方法 : 命令行修改 启动

1
mysqld_safe --skip-grant-tables &

(2)第二种方法 :修改配置文件再启动

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
find / -name my.cnf
vim /etc/my.cnf


[client]
port = 3306
socket = /tmp/mysql.sock

[mysql]
prompt="MySQL [\d]> "
no-auto-rehash

[mysqld]
port = 3306
socket = /tmp/mysql.sock

basedir = /usr/local/mysql
datadir = /data/mysql
pid-file = /data/mysql/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1

# mysqld 模块下添加此行 ,改密码生效后重新注释掉再启动
skip-grant-tables

3、登录修改密码

1
2
mysql -u root

1
2
3
4
5
6
USE mysql;
UPDATE user SET Password=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;
quit;


或者

1
2
3
4
USE mysql;
UPDATE user SET authentication_string = password('新密码') WHERE User = 'root';
FLUSH PRIVILEGES;
quit;

例如:密码为 abc@123

1
UPDATE USER SET AUTHENTICATION_STRING = PASSWORD('abc@123') WHERE USER = 'ROOT';

MySQL 5.7及之前版本: UPDATE user SET Password=PASSWORD(‘你的新密码’) WHERE USER=’root’;

MySQL 8.0及之后版本: UPDATE user SET authentication_string = password(‘新密码’) WHERE User = ‘root’;

MySQL 8.0移除了 password 字段,取而代之的是 authentication_string 字段。

4、删除或注释掉my.cnf中的skip-grant-tables。

1
2
3
4
5
6
7
8
9
10
11
12
13
[mysqld]
port = 3306
socket = /tmp/mysql.sock

basedir = /usr/local/mysql
datadir = /data/mysql
pid-file = /data/mysql/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1

# mysqld 模块下添加此行 ,改密码生效后重新注释掉再启动
#skip-grant-tables

5、重启MySQL服务:

1
/etc/init.d/mysqld restart

6、使用新密码登录

1
mysql -uroot  -p

三、记得mysqlroot密码可以登陆重置MySQL的root密码

知道 密码

1
2
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

1
SET PASSWORD for 'root'@'%' = password('新密码');

或 有些情况下需要顺带修改plugin认证方式,可用以下写法

1
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';

1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '新密码';

四、使用bin目录下mysqladmin

写法1:

1
mysqladmin -u root -p password 新密码;

回车后输入旧密码,再回车即可

写法2:

1
mysqladmin -uroot -p原密码 password 新密码;

此命令就一步到位,但密码会暴露在命令上(注意-u及-p后面不能用空格)
有些版本MySQL安装完后root是没有临时密码的,就可以用此命令直接修改root密码

1
mysqladmin -u root password 新密码;

文章作者: caoyutao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 caoyutao !
评论
  目录