用户管理

创建用户、授权、修改密码和撤销权限

语法

CREATE USER 'user'@'host' IDENTIFIED BY 'password';
GRANT privileges ON db.table TO 'user'@'host';
REVOKE privileges ON db.table FROM 'user'@'host';

参数

参数说明示例级别
CREATE USER 创建新用户 CREATE USER 'app'@'%' IDENTIFIED BY 'StrongPass123!'; 常用
GRANT 授予权限 GRANT SELECT, INSERT ON ecommerce.* TO 'app'@'%'; 常用
REVOKE 撤销权限 REVOKE DELETE ON ecommerce.* FROM 'app'@'%'; 常用
ALTER USER 修改用户(如改密码) ALTER USER 'app'@'%' IDENTIFIED BY 'NewPass456!'; 常用
DROP USER 删除用户 DROP USER IF EXISTS 'temp'@'%'; 危险
SHOW GRANTS 查看用户权限 SHOW GRANTS FOR 'app'@'%'; 常用

示例

创建应用专用用户

-- 创建用户,只允许从应用服务器连接
CREATE USER 'ecommerce_app'@'192.168.1.%'
  IDENTIFIED BY 'K8s#Prod$2026!';

-- 授予业务所需的最小权限
GRANT SELECT, INSERT, UPDATE ON ecommerce.* TO 'ecommerce_app'@'192.168.1.%';

-- 刷新权限
FLUSH PRIVILEGES;
遵循最小权限原则,不给 DELETE 和 DROP 权限

创建只读用户

CREATE USER 'readonly'@'%' IDENTIFIED BY 'ReadOnly2026!';
GRANT SELECT ON ecommerce.* TO 'readonly'@'%';
FLUSH PRIVILEGES;
适合数据分析、报表等只读场景

修改密码

-- MySQL 8.0+ 推荐方式
ALTER USER 'ecommerce_app'@'192.168.1.%'
  IDENTIFIED BY 'NewSecurePass2026!';

-- 修改当前用户密码
ALTER USER CURRENT_USER() IDENTIFIED BY 'MyNewPass!';
定期轮换密码是安全最佳实践

查看和撤销权限

-- 查看用户权限
SHOW GRANTS FOR 'ecommerce_app'@'192.168.1.%';

-- 撤销 UPDATE 权限
REVOKE UPDATE ON ecommerce.* FROM 'ecommerce_app'@'192.168.1.%';
FLUSH PRIVILEGES;
撤销权限后记得 FLUSH PRIVILEGES

常见错误

ERROR 1396 (HY000): Operation CREATE USER failed for 'user'@'host' 用户已存在。先 DROP USER 再创建,或使用 CREATE USER IF NOT EXISTS(MySQL 8.0+)
ERROR 1044 (42000): Access denied for user (using password: YES) 当前用户没有 GRANT 权限。需要用 root 或有 GRANT OPTION 的用户操作

技巧

相关命令