Home MySQL赋予用户权限
Post
Cancel

MySQL赋予用户权限

本文实例,运行于MySQL5.0及以上版本。MySQL赋予用户权限的格式可概括为

1
grant 权限 on 数据库对象 to 用户

一、grant普通数据用户

1
2
3
4
grant select on testdb.* to common_user@'%' -- 查询
grant insert on testdb.* to common_user@'%' -- 插入
grant update on testdb.* to common_user@'%' -- 更新
grant delete on testdb.* to common_user@'%' -- 删除

或者,用一条MySQL命令来替代

1
grant select, insert, update, delete on testdb.* to common_user@'%'

二、grant数据库开发人员

  • grant创建、修改、删除MySQL数据表结构权限

    1
    2
    3
    
      grant create on testdb.* to developer@'192.168.0.%';
      grant alter  on testdb.* to developer@'192.168.ssss0.%';
      grant drop   on testdb.* to developer@'192.168.0.%';
    
  • grant操作MySQL外键权限

    1
    
      grant references on testdb.* to developer@'192.168.0.%';
    
  • grant操作MySQL临时表权限

    1
    
      grant create temporary tables on testdb.* to developer@'192.168.0.%';
    
  • grant操作MySQL索引权限

    1
    
      grant index on testdb.* to developer@'192.168.0.%';
    
  • grant操作MySQL视图、查看视图源代码权限

    1
    2
    
      grant create view on testdb.* to developer@'192.168.0.%';
      grant show   view on testdb.* to developer@'192.168.0.%';
    
  • grant操作MySQL存储过程、函数权限

    1
    2
    3
    4
    
      grant create routine on testdb.* to developer@'192.168.0.%';  
      -- now, can show procedure status
      grant alter  routine on testdb.* to developer@'192.168.0.%';  
      grant execute on testdb.* to developer@'192.168.0.%';
    

三、grant普通DBA管理某个MySQL数据库的权限

1
grant all privileges on testdb to dba@'localhost'

其中,关键字 “privileges” 可以省略。

四、grant高级DBA管理MySQL中所有数据库的权限

1
grant all on *.* to dba@'localhost'

五、MySQL grant权限,分别可以作用在多个层次上

  1. grant作用在整个MySQL服务器上

    1
    2
    
     grant select on *.* to dba@localhost; -- dba可以查询MySQL中所有数据库中的表。
     grant all    on *.* to dba@localhost; -- dba可以管理MySQL中的所有数据库
    
  2. grant作用在单个数据库上

    1
    
     grant select on testdb.* to dba@localhost; -- dba可以查询testdb中的表。
    
  3. grant作用在单个数据表上

    1
    
     grant select, insert, update, delete on testdb.orders to dba@localhost;
    
  4. grant作用在表中的列上

    1
    
     grant select(id, se, rank) on testdb.apache_log to dba@localhost;
    
  5. grant作用在存储过程、函数上

    1
    2
    
     grant execute on procedure testdb.pr_add to 'dba'@'localhost'
     grant execute on function  testdb.fn_add to 'dba'@'localhost'
    

六、查看MySQL用户权限

  • 查看当前用户(自己)权限

    1
    
      show grants;
    
  • 查看其他 MySQL 用户权限

    1
    
      show grants for dba@localhost;
    

七、撤销已经赋予给MySQL用户的权限

revoke跟grant的语法差不多,只需要把关键字“to”换成“from”即可

1
2
grant  all on *.* to   dba@localhost;
revoke all on *.* from dba@localhost;
This post is licensed under CC BY 4.0 by the author.