修改用户账号
可以使用 RENAME USER 语句修改一个或多个已经存在的 MySQL 用户账号。
语法格式:
RENAME USER <旧用户> TO <新用户>
语法说明如下:
<旧用户>:系统中已经存在的 MySQL 用户账号。<新用户>:新的 MySQL 用户账号。
使用 RENAME USER 语句时应该注意以下几点:
RENAME USER 语句用于对原有的 MySQL 账户进行重命名。若系统中旧账户不存在或者新账户已存在,则该语句执行时会出现错误。要使用 RENAME USER 语句,必须拥有 MySQL 中的 MySQL 数据库的 UPDATE 权限或全局 CREATE USER 权限。
使用 RENAME USER 语句将用户名 james 修改为 jack,主机是 localhost。输入的 SQL 语句和执行过程如下所示。
mysql> RENAME USER james@'localhost'-> TO jack@'localhost';
Query OK, 0 rows affected (0.03 sec)
在 Windows 命令行工具中,使用 jack 和密码 tiger 登录数据库服务器,如下所示。
C:\Users\USER>mysql -h localhost -u jack -p
Enter password: *****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.20-log MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
修改用户口令
可以使用 SET PASSWORD 语句修改一个用户的登录口令。
语法格式:
SET PASSWORD [ FOR <用户名> ] =
{PASSWORD('新明文口令')| OLD_PASSWORD('旧明文口令')| '加密口令值'
}
语法说明如下。
FOR 子句:可选项。指定欲修改口令的用户。PASSWORD('新明文口令'):表示使用函数 PASSWORD() 设置新口令,即新口令必须传递到函数 PASSWORD() 中进行加密。加密口令值:表示已被函数 PASSWORD() 加密的口令值。
注意:PASSWORD() 函数为单向加密函数,一旦加密后不能解密出原明文。
使用 SET PASSWORD 语句应注意以下几点:
在 SET PASSWORD 语句中,若不加上 FOR 子句,表示修改当前用户的口令。若加上 FOR 子句,表示修改账户为 user 的用户口令。user 必须以 'user_name'@'host_name' 的格式给定,user_name 为账户的用户名,host_name 为账户的主机名。该账户必须在系统中存在,否则语句执行时会出现错误。在 SET PASSWORD 语句中,只能使用选项 PASSWORD('新明文口令') 和加密口令值中的一项,且必须使用其中的一项。
使用 SET 语句将用户名为 jack 的密码修改为 lion,主机是 localhost。输入的 SQL 语句和执行过程如下所示。
mysql> SET PASSWORD FOR 'jack'@'localhost'=-> PASSWORD('lion');
Query OK, 0 rows affected, 1 warning (0.03 sec)
在 Windows 命令行工具中,使用 jack 和密码 lion 登录数据库服务器,如下所示。
C:\Users\USER>mysql -h localhost -u jack -p
Enter password: *****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.20-log MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.