MySQL学习 02 创建用户与授权

创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

注意点:

  1. username和host相对应,就算是相同用户名,host不同,视为不同用户。
  2. 从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

图片.png

# 赋予lucky用户在luckyDB数据库所有的权限
grant all privileges on luckyDB.* to lucky@localhost;
# 赋予lucky用户在所有数据库上查询的权限
grant select on *.* to lucky@localhost;

资源的限制

咨询的限制一般指一下内容:

  1. 单个账号每小时执行查询的次数
  2. 单个账号每小时执行更新的次数
  3. 单个账号每小时连接服务器的次数
  4. 单个账号并发连接服务器的次数
    参考官方文档: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