关于MySQL的用户授权管理

 

一、常用示例

### 添加全局授权
mysql > grant all privileges on *.* to 'test'@'%' identified by 'test' with grant option;
### 撤销授权
mysql > revoke all privileges on *.* to 'test'@'%' identified by 'test'
### 刷新权限
mysql > flush privileges;

其中的具体含义:

  1. all privileges :授权类型,表示全部权限;也可以传入具体的权限名称:select,insert,update,delete;也可以传入列名(列级):select(id,name)。
  2. *.* :授权范围,表示所有库的所有表(全局);也可以传入dbname.*表示指定库的所有表(库级);也可以传入dbname.tbname表示指定库的指定表(表级)。
  3. 'test'@'%' :@符前面的是登录名,后面的是允许登录的客户端地址表达式,%占位符表示全部;也可以传入192.168.%表示仅允许内网登录。
  4. identified by 'test' :引号中的字符为登录密码。
  5. with grant option :可选,带上这几个单词表示当前接受授权的用户可将权限向其他用户继续授权。

二、查看授权

不同级别的授权信息,保存在了不同的表中:

  1. 全局:mysql.user
  2. 库级:mysql.db
  3. 表级:mysql.tables_priv
  4. 列级:mysql.columns_priv

因此,想要查询授权信息,就要首先确定要查询的目标层级,比如查询 dbuser 用户全局的授权信息:

mysql > SELECT * FROM mysql.user WHERE user='dbuser'\G;

其中的具体含义:

  1. mysql.user :因为要查询全局级,因此要在mysql.user表中查询。如果是库级则为mysql.db
  2. \G :表示将结果进行换行显示

posted @ 2021-03-02 15:04  网无忌  阅读(18)  评论(0编辑  收藏