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,需要一并修改才能全部免密:sqlALTER 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])
inivalidate_password=OFF修改后重启 MySQL 生效。
补充
- Debian/Ubuntu 系统:root 默认用
auth_socket插件,就算密码为空,也只能系统 root 用户免密登录;上面语句会切换插件为mysql_native_password,实现mysql -uroot免密登录。 - 远程账号
root@%:如果需要远程 root 空密码,单独修改'root'@'%',强烈不建议。
恢复设置密码(需要改回去时)
sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
FLUSH PRIVILEGES;