1. 创建用户
使用 CREATE USER 语句创建新用户。语法如下:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';username:新用户的用户名。host:指定用户可以从哪个主机连接到数据库。常见的值包括:localhost:仅允许从本地主机连接。%:允许从任何主机连接。
password:用户的密码。
示例:
创建一个名为 testuser 的用户,密码为 testpass,允许从任何主机连接:
CREATE USER 'testuser'@'%' IDENTIFIED BY 'testpass';2. 为用户设置密码
如果你需要为已创建的用户设置或更改密码,可以使用 ALTER USER 语句:
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';示例:
为用户 testuser 更改密码为 newpassword:
ALTER USER 'testuser'@'%' IDENTIFIED BY 'newpassword';3. 授予用户权限
创建用户后,需要为其授予相应的权限。使用 GRANT 语句:
GRANT privileges ON database_name.table_name TO 'username'@'host';privileges:可以是SELECT、INSERT、UPDATE、DELETE、ALL PRIVILEGES等。database_name.table_name:指定数据库和表。使用*.*表示所有数据库和表。
示例:
授予用户 testuser 在数据库 testdb 上的所有权限:
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'%';4. 刷新权限
更改用户权限后,需要刷新权限以使更改生效:
FLUSH PRIVILEGES;5. 完整的创建和授权流程
以下是一个完整的示例,创建用户并授予权限:
-- 创建用户
CREATE USER 'testuser'@'%' IDENTIFIED BY 'testpass';
-- 授予权限
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'%';
-- 刷新权限
FLUSH PRIVILEGES;6. 删除用户
如果需要删除用户,可以使用 DROP USER 语句:
DROP USER 'username'@'host';示例:
删除用户 testuser:
DROP USER 'testuser'@'%';注意事项:
安全性:
- 尽量避免使用
%允许用户从任何主机连接,除非确实需要。 - 确保密码足够复杂,以提高安全性。
- 尽量避免使用
权限管理:
- 根据用户的需求授予最小必要的权限,避免使用
ALL PRIVILEGES,除非确实需要。
- 根据用户的需求授予最小必要的权限,避免使用
MySQL 版本差异:
- 在 MySQL 5.7 及之前的版本中,创建用户和设置密码可以合并为一条语句:
CREATE USER 'testuser'@'%' IDENTIFIED BY 'testpass'; - 在 MySQL 5.7.6 及更高版本中,建议分开执行
CREATE USER和ALTER USER:CREATE USER 'testuser'@'%'; ALTER USER 'testuser'@'%' IDENTIFIED BY 'testpass';
- 在 MySQL 5.7 及之前的版本中,创建用户和设置密码可以合并为一条语句:

