首页 > 编程笔记 > MySQL笔记 阅读:4

MySQL修改密码(ALTER USER和SET)

MySQL 中,可以使用 root 用户修改自己的密码,也可以使用普通用户修改自己的密码。由于 root 用户拥有很高的权限,因此必须保证 root 用户的密码安全。

root 用户可以通过多种方式来修改密码,使用 ALTER USER 语句修改密码是 MySQL 官方推荐的方式。此外,也可以使用 SET 语句修改密码。

由于 MySQL 8.0 中移除了 PASSWORD() 函数,因此不再使用 UPDATE 语句直接操作用户表修改密码。

在 MySQL 8.0 以前的版本中,修改密码的语法如下所示:
# 修改当前用户的密码
mysql> SET PASSWORD = PASSWORD('123456');

# 修改某个用户的密码
# MySQL 5.5
mysql> UPDATE mysql.user SET PASSWORD = PASSWORD('123456') WHERE User = 'li4';

# MySQL 5.7(不适用于MySQL 8.0)
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('123456') WHERE User = 'li4';
mysql> FLUSH PRIVILEGES;  # 所有通过user表的修改必须执行该语句才能生效,否则需要重启MySQL服务

下面介绍 MySQL 8.0 中修改密码可以使用的语法,分为 ALTER USER 语句和 SET 语句两种:
1) 用户可以使用 ALTER USER 语句修改密码,其语法如下所示,表示修改当前用户的密码:
ALTER USER USER() IDENTIFIED BY 'new_password';

例如,使用 ALTER USER 语句将 root 用户的密码修改为“Hello_1234”,具体 SQL 语句如下所示:
mysql> ALTER USER USER() IDENTIFIED BY 'Hello_1234';

2) 使用 root 用户登录 MySQL 服务器后,可以使用 SET 语句修改密码,其语法如下所示:
SET PASSWORD = 'new_password';
该语句会自动将密码加密后赋予当前用户。

例如,使用 SET 语句将 root 用户的密码修改为 Hello_1234,具体 SQL 语句如下所示:
mysql> SET PASSWORD = 'Hello_1234';

修改普通用户的密码

root 用户不仅可以修改自己的密码,还可以修改普通用户的密码。

root 用户登录 MySQL 服务器后,也可以使用 ALTER USER 语句和 SET 语句修改普通用户的密码:
1) 使用 ALTER USER 语句修改普通用户密码的语法如下所示:
ALTER USER user [IDENTIFIED BY 'password'] [, user [IDENTIFIED BY 'password']]...;
其中,user 参数表示普通用户,由用户名(User)和主机名(Host)构成;IDENTIFIED BY 关键字用来设置密码;password 参数表示新密码。

例如,使用 ALTER USER 语句将 zhang3 用户的密码修改为“HelloWorld_123”,具体 SQL 语句如下所示:
mysql> ALTER USER 'zhang3'@'localhost' IDENTIFIED BY 'HelloWorld_123';

2) 使用 SET 语句修改普通用户密码的语法如下所示:
SET PASSWORD FOR 'username'@'hostname' = 'new_password';
其中,username 参数表示普通用户的用户名;hostname 参数表示普通用户的主机名;new_password 参数表示新密码。

例如,使用 SET 语句将 zhang3 用户的密码修改为 HelloWorld_123,具体 SQL 语句如下所示:
mysql> SET PASSWORD FOR 'zhang3'@'localhost' = 'HelloWorld_123';
让 zhang3 用户使用新密码登录 MySQL 服务器,命令如下所示,按回车键后输入新密码即可:
mysql> mysql -u zhang3 -p

相关文章