mysql权限说明

作者:daodaoliang
时间:2016年5月18日
版本:0.0.1
邮箱:daodaoliang@yeah.net

官网相关文档

1.mysql 权限概述

mysql允许以下几种类别的权限操作:

  • 管理员权限,使用户能够管理mysql服务器的相关操作,这些权限都是全局的因为并不针对指定数据库做权限;
  • 数据库权限,可以管理数据库以及包含在数据库里面的对象内容,可以对特定数据库,也可以对全部数据库进行权限操作;
  • 数据库对象权限例如数据表、索引、视图和存储过程中,可以管理指定数据库的指定对象,也可以管理指定数据库的所有对象,也可以管理所有数据库的所有对象;

mysql 和权限相关的信息都存储在mysql数据库里面的 userdbtables_privcolumns_privprocs_priv, mysql 数据库在启动时或者reload时都会把权限内容读取到内存中;

2.mysql 权限列表

权限名字 权限表中列的名字 权限级别 权限内容
CREATE Create_priv 数据库、表、索引 允许创建新的数据库、表、索引
DROP Drop_priv 数据库、表 允许删除存在的数据库、表、视图
GRANT OPTION Grant_priv 数据库、表、存储过程 允许赋予或者移除其他用户你已经有的权限
LOCK TABLES Lock_tables_priv 数据库 允许使用LOCK TABLES显式锁定用户表
REFERENCES References_priv 数据库、表 官网也没有说清楚,貌似和外键有关
EVENT Event_priv 数据库 允许创建和查看event,同时create, alter, drop也需要该权限
ALTER Alter_priv 允许使用 ALTER TABLE该表表结构
DELETE Delete_priv 允许在表中删除列
INDEX Index_priv 允许在表中创建和删除索引,如果有create 权限可以在 create table时定义索引
INSERT Insert_priv 表、列 允许在数据表中插入数据
SELECT Select_priv 表、列 允许查询数据库,注意update和delete在where 子句中也是需要select 权限
UPDATE Update_priv 表、列 允许更新数据库里面的列信息
CREATE TEMPORARY TABLES Create_tmp_table_priv 允许创建临时表
TRIGGER Trigger_priv 允许触发操作
CREATE VIEW Create_view_priv 视图 允许创建视图
SHOW VIEW Show_view_priv 视图 允许允许使用SHOW CREATE VIEW
ALTER ROUTINE Alter_routine_priv 存储过程 允许修改和删除存储过程或者函数
CREATE ROUTINE Create_routine_priv 存储过程 允许创建存储过程
EXECUTE Execute_priv 存储过程 允许执行存储过程
FILE File_priv 服务器上关联的数据文件 允许读写相关文件
CREATE TABLESPACE Create_tablespace_priv 数据库管理 允许 create, alter, or drop tablespaces
CREATE USER Create_user_priv 数据库管理 允许 ALTER USER, CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES
PROCESS Process_priv 数据库管理 允许查看进程信息权限
PROXY see proxies_priv table 数据库管理 允许用户代理
RELOAD Reload_priv 数据库管理 允许使用 FLUSH 和 mysqladmin
REPLICATION CLIENT Repl_client_priv 数据库管理 允许 SHOW MASTER STATUS 、 SHOW SLAVE STATUS 和 SHOW BINARY LOGS
REPLICATION SLAVE Repl_slave_priv 数据库管理 复制权限
SHOW DATABASES Show_db_priv 数据库管理 允许 SHOW DATABASE
SHUTDOWN Shutdown_priv 数据库管理 允许 mysqladmin shutdown
SUPER Super_priv 数据库管理 允许kill 线程
ALL [PRIVILEGES] 数据库管理 all privileges available at a given privilege level
USAGE 数据库管理 no privileges

3.mysql 权限操作示例

3.1 grant 命令使用说明

1
grant all privileges on *.* to daodaoliang@'localhost' identified by 'mypass' with grant option;

grant命令说明:

  • all privileges : 是表示所有权限,你也可以使用select、update等权限;
  • on : 用来针对哪些库和表;
  • *.*: 前面的*用来指定数据库,后面的*用来指定数据表;
  • To : 将权限赋予某个用户;
  • daodaoliang@’localhost’: 用户为daodaoliang,@后面表示限制的主机,可以是IP地址、IP段、域名以及%,%表示任何地方,需要注意有的%不包含本地,所以当出现其他地方可以登录而本机不可以登录时,在添加localhost即可;
  • identified by : 指定用户的登录密码;
  • with grant option : 这个选项表示该用户可以将自己拥有的权限授权给别人;

PS: grant 可以重复给用户添加权限,权限叠加;

3.2 刷新权限

1
flush privileges;

在对权限做了修改之后要使用这个命令来使 privileges 生效;

3.3 查看权限

  • 查看当前用户的权限
1
show grants;
  • 查看指定用户的权限
1
show grants for 'daodaoliang@%'

3.4 撤销权限

1
revoke delete on *.* from daodaoliang@'%' identified by 'my pass'
daodaoliang wechat
点击上面图片后用微信扫描,你就能认识一个有趣的灵魂了呀。
Fork me on GitHub