创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
注意点:
- username和host相对应,就算是相同用户名,host不同,视为不同用户。
- 从MySQL 8.0起
grant
授权不会创建用户,需要创建用户之后才能进行授权。
授权
1. 能否登陆的权限
这个权限在创建用户的时候设置。即username、host和password三者相匹配,才能登陆使用MySQL服务。
当host为%
时,表示与任何host匹配。%.lucky.com
,表示与lucky.com域的任何主机匹配。
# 创建从localhost登陆的lucky用户,密码为123456
CREATE USER 'lucky'@'localhost' IDENTIFIED BY '123456';
# 创建可以从任何主机登陆的lucky用户,密码为空
CREATE USER 'lucky'@'%' IDENTIFIED BY '';
修改用户的密码
alter user 'username'@'host' identified by 'password';
2. 能否操作数据库的权限
操作数据库的权限分为两种:a. 对哪个数据库可以操作。b. 对这个数据库可以进行什么操作。
GRANT privileges ON databasename.tablename TO 'username'@'host'
privileges
指操作的权限,databasename.tablename
指哪个数据库,或哪个数据库的哪个表。
其中privileges
的合法值参考官方文档:MySQL8.0 privileges
# 赋予lucky用户在luckyDB数据库所有的权限
grant all privileges on luckyDB.* to lucky@localhost;
# 赋予lucky用户在所有数据库上查询的权限
grant select on *.* to lucky@localhost;
资源的限制
咨询的限制一般指一下内容:
- 单个账号每小时执行查询的次数
- 单个账号每小时执行更新的次数
- 单个账号每小时连接服务器的次数
- 单个账号并发连接服务器的次数
参考官方文档:MySQL8.0 user-resources
MAX_QUERIES_PER_HOUR
帐户每小时可以发出的查询数
MAX_UPDATES_PER_HOUR
帐户每小时可以发布的更新次数
MAX_CONNECTIONS_PER_HOUR
帐户每小时可以连接到服务器的次数
MAX_USER_CONNECTIONS
帐户与服务器同时连接的数量
在创建用户的时候设置:
mysql> CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank'
-> WITH MAX_QUERIES_PER_HOUR 20
-> MAX_UPDATES_PER_HOUR 10
-> MAX_CONNECTIONS_PER_HOUR 5
-> MAX_USER_CONNECTIONS 2;
修改用户设置:
mysql> ALTER USER 'francis'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 0