在 MySQL 5.7 中,可以使用以下步骤创建数据库和用户,并授权该用户在新建数据库上的权限:
创建数据库
使用 MySQL 的命令行客户端或者图形化管理工具,如 phpMyAdmin 等,连接到 MySQL 服务器,登录具有足够权限的用户账号,如 root
用户,然后执行以下 SQL 语句创建数据库:
CREATE DATABASE IF NOT EXISTS user;
上述语句中的 user 是要创建的数据库名称,IF NOT EXISTS
关键字可以确保如果数据库已经存在,则不会重复创建,避免出现错误。
创建用户
执行以下 SQL 语句创建用户:
CREATE USER 'user'@'%' IDENTIFIED BY 'userpassword';
上述语句创建了一个名为 user的用户,%
表示该用户可以从任何主机连接到 MySQL 服务器,如果只想限制在特定的主机上访问,可以将 %
替换为具体的主机 IP 地址或主机名,userpassword是用户的密码。
授权用户在新建数据库上的权限
执行以下 SQL 语句为用户 user 授权在数据库 user 上的权限:
GRANT ALL PRIVILEGES ON user.* TO 'user'@'%';
FLUSH PRIVILEGES;
第一条语句将数据库 user的所有权限授予用户 user,user.*
表示数据库 user中的所有表和对象,ALL PRIVILEGES
表示所有权限,包括查询、插入、更新、删除等。第二条语句用于刷新 MySQL 的权限缓存,使授权立即生效。
执行完上述步骤后,用户 user就可以使用密码 userpassword从任何主机连接到 MySQL 服务器,并对数据库 user 拥有所有权限。
如果发生错误,
mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'userpassword';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看当前密码策略
可以先通过以下命令查看 MySQL 5.7 当前设置的密码策略相关变量及其取值:
SHOW VARIABLES LIKE 'validate_password%';
执行该命令后,会展示出如 validate_password_length
(密码长度要求)、validate_password_policy
(密码策略等级,如 LOW、MEDIUM、STRONG)等相关变量的值,这样就能清楚知晓当前密码需要满足哪些具体要求了。
调整密码策略(可选)
如果只是在测试环境或者想要临时降低密码策略要求以便创建用户,可以通过以下方式修改密码策略变量:
SET GLOBAL validate_password_policy=LOW;
SET GLOBAL validate_password_length=4;
上述命令中,第一条语句将密码策略等级设置为 LOW
(最低要求等级),第二条语句把密码长度要求降低到了 4 个字符。不过需要注意,在生产环境中不建议随意这样调整密码策略,因为这会降低数据库的安全性,正常做法还是设置符合要求的强密码。
设置符合要求的密码
MySQL 5.7 默认的密码策略要求密码有一定长度(通常不少于 8 个字符),且要有一定的复杂度(包含大小写字母、数字、特殊字符等),还可能限制不能使用常见简单密码等。
你可以重新设置一个满足当前密码策略要求的密码,例如将密码设置为 Ksf@1234
,然后再执行创建用户的语句:
CREATE USER 'user'@'%' IDENTIFIED BY 'Kfs@1234';
按照上述步骤操作,一般就能顺利创建用户了。创建好用户后,若之前临时调整了密码策略,可根据实际安全需求将密码策略相关变量再恢复到合适的值。