🔑
MYSQL · 课程资料

设置 root 密码

把 MySQL 的 root 密码置空,实现 mysql -uroot 免密登录(适用于教学、测试环境)

设置为空密码

步骤

1
使用现有 root 密码登录 mysql
bash
mysql -uroot -p

输入你当前的 root 密码,进入 mysql 命令行。

2
执行 SQL(推荐写法,同时指定认证插件 mysql_native_password)
sql
-- 将root@localhost密码置空
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
FLUSH PRIVILEGES;

如果你的 root 还有 root@127.0.0.1、root@::1,需要一并修改才能全部免密:

sql
ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '';
ALTER USER 'root'@'::1' IDENTIFIED WITH mysql_native_password BY '';
FLUSH PRIVILEGES;

备选:直接更新 user 表(上面 ALTER 报错时使用)

sql
USE mysql;
UPDATE mysql.user SET authentication_string='', plugin='mysql_native_password' WHERE user='root' AND host='localhost';
FLUSH PRIVILEGES;
3
验证
sql
SELECT user,host,plugin,authentication_string FROM mysql.user WHERE user='root';

authentication_string 为空字符串,代表密码清空成功。

4
退出测试免密登录
bash
mysql -uroot

直接回车,不用输入密码就能登录。

常见报错:密码策略不允许空密码

执行 ALTER 时报错:Your password does not satisfy the current policy requirements

这是 validate_password 插件限制,临时关闭策略(测试环境):

sql
-- 降低策略,允许空密码
SET GLOBAL validate_password_policy=LOW;
SET GLOBAL validate_password_length=0;

然后再执行上面的 ALTER 语句。

永久关闭密码校验插件(my.cnf [mysqld])

ini
validate_password=OFF

修改后重启 MySQL 生效。

补充

恢复设置密码(需要改回去时)

sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
FLUSH PRIVILEGES;