mysql8创建用户并赋权
MySQL 8.0 及以上版本对 GRANT
语句的语法进行了调整。在 MySQL 8.0 中,GRANT
语句不再支持在创建用户的同时设置密码。你需要将创建用户和授权分为两步来完成。
正确步骤
1. 创建用户并设置密码
使用 CREATE USER
语句创建用户并设置密码:
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
2. 授予权限
使用 GRANT
语句授予用户所有权限:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
3. 刷新权限
刷新权限使更改生效:
FLUSH PRIVILEGES;
完整代码
-- 创建用户并设置密码CREATE USER 'user'@'%' IDENTIFIED BY 'password';
-- 授予所有权限GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
-- 刷新权限FLUSH PRIVILEGES;
注意事项
-
MySQL 版本:
- 如果你的 MySQL 版本是 5.x,可以使用你原来的语法。
- 如果是 MySQL 8.0 及以上版本,必须分开执行
CREATE USER
和GRANT
。
-
用户已存在: 如果用户
'wcmuser'@'%'
已经存在,直接运行GRANT
语句即可:GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
-
密码强度: MySQL 8.0 默认启用了密码强度检查。如果密码不符合要求,可能会报错。可以通过以下命令禁用密码强度检查(不推荐):
SET GLOBAL validate_password.policy = LOW;
-
远程访问:
'user'@'%'
表示允许从任何主机访问。如果只允许特定主机访问,可以将%
替换为具体 IP 或主机名。- 确保 MySQL 配置文件中
bind-address
允许远程访问(默认是127.0.0.1
,需要改为0.0.0.0
或注释掉)。
验证
- 检查用户是否创建成功:
SELECT User, Host FROM mysql.user WHERE User = 'user';
- 检查权限是否生效:
SHOW GRANTS FOR 'user'@'%';