MySQL 用户权限与密码修改

MySQL 用户权限与密码修改

修改root允许远程登录

update mysql.user set Host = '%' where User = 'root';
flush privileges;

Host='%' 代表允许从任意IP地址连接,生产环境建议限制为指定网段。

修改用户密码

不同MySQL版本语法存在差异: MySQL5.7:PASSWORD() 函数可用; MySQL8.0:不再支持 PASSWORD() 函数,推荐使用 ALTER USER。

方法一:UPDATE语句修改(适合MySQL5.7)

-- UPDATE mysql.user SET authentication_string = PASSWORD('新密码') WHERE User = '用户名' AND Host = '访问主机';
UPDATE mysql.user SET authentication_string = PASSWORD('123456') WHERE User = 'root' AND Host = '%';
FLUSH PRIVILEGES;

执行FLUSH PRIVILEGES;刷新权限缓存,使修改立即生效。

方法二:ALTER USER语句修改(推荐,5.7/8.0通用)

ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

示例:修改root,允许任意IP,密码123456

ALTER USER 'root'@'%' IDENTIFIED BY '123456';

方法三:SET PASSWORD语句

SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');

注意事项

  1. 修改完权限/密码,要么执行FLUSH PRIVILEGES;,要么重启mysql服务。
  2. MySQL8.0移除PASSWORD()函数,不能在8.0中使用PASSWORD()。
  3. 生产环境不建议直接开放root@%全网远程访问。