设为首页 收藏本站
查看: 642|回复: 0

[经验分享] MySQL 查看用户授予的权限

[复制链接]

尚未签到

发表于 2018-10-5 09:59:37 | 显示全部楼层 |阅读模式
MySQL 查看用户授予的权限
  
  在MySQL中,如何查看一个用户被授予了那些权限呢? 授予用户的权限可能分全局层级权限、数据库层级权限、表层级别权限、列层级别权限、子程序层级权限。具体分类如下:
  全局层级
  全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。
  数据库层级
  数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。
  表层级
  
  表权限适用于一个给定表中的所有列。这些权限存储在mysql.tables_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。
  列层级
  
  列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。
  子程序层级

  CREATE ROUTINE,>  1:那么我们来创建一个测试账号test,授予全局层级的权限。如下所示:
mysql> grant select,insert on *.* to test@'%' identified by 'test';Query OK, 0 rows affected (0.01 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql>  那么可以用下面两种方式查询授予test的权限。如下所示:
mysql> show grants for test;+--------------------------------------------------------------------------------------------------------------+| Grants for test@%                                                                                            |+--------------------------------------------------------------------------------------------------------------+| GRANT SELECT, INSERT ON *.* TO 'test'@'%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |+--------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)mysql> select * from mysql.user where user='test'\G;*************************** 1. row ***************************                  Host: %                  User: test              Password: *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29           Select_priv: Y           Insert_priv: Y           Update_priv: N           Delete_priv: N           Create_priv: N             Drop_priv: N           Reload_priv: N         Shutdown_priv: N          Process_priv: N             File_priv: N            Grant_priv: N       References_priv: N            Index_priv: N            Alter_priv: N          Show_db_priv: N            Super_priv: N Create_tmp_table_priv: N      Lock_tables_priv: N          Execute_priv: N       Repl_slave_priv: N      Repl_client_priv: N      Create_view_priv: N        Show_view_priv: N   Create_routine_priv: N    Alter_routine_priv: N      Create_user_priv: N            Event_priv: N          Trigger_priv: NCreate_tablespace_priv: N              ssl_type:            ssl_cipher:           x509_issuer:          x509_subject:         max_questions: 0           max_updates: 0       max_connections: 0  max_user_connections: 0                plugin: mysql_native_password authentication_string:      password_expired: N1 row in set (0.04 sec)ERROR:No query specifiedmysql>
  2:那么我们来创建一个测试账号test,授予数据库层级的权限。如下所示:
mysql> drop user test;Query OK, 0 rows affected (0.00 sec)mysql> grant select,insert,update,delete on MyDB.* to test@'%' identified by 'test';Query OK, 0 rows affected (0.01 sec)mysql>mysql> select * from mysql.user where user='test'\G; --可以看到无任何授权。mysql> select * from mysql.db where user='test'\G;*************************** 1. row ***************************                 Host: %                   Db: MyDB                 User: test          Select_priv: Y          Insert_priv: Y          Update_priv: Y          Delete_priv: Y          Create_priv: N            Drop_priv: N           Grant_priv: N      References_priv: N           Index_priv: N           Alter_priv: NCreate_tmp_table_priv: N     Lock_tables_priv: N     Create_view_priv: N       Show_view_priv: N  Create_routine_priv: N   Alter_routine_priv: N         Execute_priv: N           Event_priv: N         Trigger_priv: N1 row in set (0.04 sec)ERROR:No query specifiedmysql>mysql> show grants for test;+-----------------------------------------------------------------------------------------------------+| Grants for test@%                                                                                   |+-----------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'test'@'%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' || GRANT SELECT, INSERT, UPDATE, DELETE ON `MyDB`.* TO 'test'@'%'                                      |+-----------------------------------------------------------------------------------------------------+2 rows in set (0.00 sec)mysql>  3:那么我们来创建一个测试账号test,授予表层级的权限。如下所示:
mysql> drop user test;Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql> grant all on MyDB.kkk to test@'%' identified by 'test';Query OK, 0 rows affected (0.01 sec)mysql>mysql> show grants for test;+-----------------------------------------------------------------------------------------------------+| Grants for test@%                                                                                   |+-----------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'test'@'%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' || GRANT ALL PRIVILEGES ON `MyDB`.`kkk` TO 'test'@'%'                                                  |+-----------------------------------------------------------------------------------------------------+2 rows in set (0.00 sec)mysql> select * from mysql.tables_priv\G;*************************** 1. row ***************************       Host: %         Db: MyDB       User: test Table_name: kkk    Grantor: root@localhost  Timestamp: 0000-00-00 00:00:00 Table_priv: Select,Insert,Update,Delete,Create,Drop,References,Index,Alter,Create View,Show view,TriggerColumn_priv:1 row in set (0.01 sec)ERROR:No query specifiedmysql>
  4:那么我们来创建一个测试账号test,授予列层级的权限。如下所示:
mysql> drop user test;Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql> grant select (id, col1) on MyDB.TEST1 to test@'%' identified by 'test';Query OK, 0 rows affected (0.01 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql>mysql> select * from mysql.columns_priv;+------+------+------+------------+-------------+---------------------+-------------+| Host | Db   | User | Table_name | Column_name | Timestamp           | Column_priv |+------+------+------+------------+-------------+---------------------+-------------+| %    | MyDB | test | TEST1      | id          | 0000-00-00 00:00:00 | Select      || %    | MyDB | test | TEST1      | col1        | 0000-00-00 00:00:00 | Select      |+------+------+------+------------+-------------+---------------------+-------------+2 rows in set (0.00 sec)mysql> show grants for test;+-----------------------------------------------------------------------------------------------------+| Grants for test@%                                                                                   |+-----------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'test'@'%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' || GRANT SELECT (id, col1) ON `MyDB`.`TEST1` TO 'test'@'%'                                             |+-----------------------------------------------------------------------------------------------------+2 rows in set (0.00 sec)mysql>
  5:那么我们来创建一个测试账号test,授子程序层级的权限。如下所示:
mysql> DROP PROCEDURE IF EXISTS PRC_TEST;Query OK, 0 rows affected (0.00 sec)mysql> DELIMITER //mysql> CREATE PROCEDURE PRC_TEST()    -> BEGIN    ->    SELECT * FROM kkk;    -> END //Query OK, 0 rows affected (0.00 sec)mysql> DELIMITER ;mysql> grant execute on procedure MyDB.PRC_TEST to test@'%' identified by 'test';Query OK, 0 rows affected (0.01 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql>mysql> show grants for test;+-----------------------------------------------------------------------------------------------------+| Grants for test@%                                                                                   |+-----------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'test'@'%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' || GRANT EXECUTE ON PROCEDURE `MyDB`.`prc_test` TO 'test'@'%'                                          |+-----------------------------------------------------------------------------------------------------+2 rows in set (0.00 sec)mysql> select * from mysql.procs_priv where User='test';+------+------+------+--------------+--------------+----------------+-----------+---------------------+| Host | Db   | User | Routine_name | Routine_type | Grantor        | Proc_priv | Timestamp           |+------+------+------+--------------+--------------+----------------+-----------+---------------------+| %    | MyDB | test | PRC_TEST     | PROCEDURE    | root@localhost | Execute   | 0000-00-00 00:00:00 |+------+------+------+--------------+--------------+----------------+-----------+---------------------+1 row in set (0.00 sec)mysql>
  所以,如果需要查看用户被授予的权限,就需要从这五个层级来查看被授予的权限。从上到下或从小到上,逐一检查各个层级被授予的权限。
  转载:https://www.cnblogs.com/wangchaoyuana/p/7545419.html



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-612535-1-1.html 上篇帖子: mysql-5.5.55 多实例安装总结 下篇帖子: 邮件服务器postfix+dovecot+mysql-12905075
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表