查看mysql用户权限_mysql 如何查看该数据库用户具有哪些权限?
展開全部
背景
在了解動態權限之前,我們先回顧下 MySQL 的權限列表。
權限列表大體分為服務級別和表級別,列級別以32313133353236313431303231363533e59b9ee7ad9431333433633464及大而廣的角色(也是MySQL 8.0 新增)存儲程序等權限。我們看到有一個特殊的 SUPER 權限,可以做好多個操作。比如 SET 變量,在從機重新指定相關主機信息以及清理二進制日志等。那這里可以看到,SUPER 有點太過強大,導致了僅僅想實現子權限變得十分困難,比如用戶只能 SET 變量,其他的都不想要。那么 MySQL 8.0 之前沒法實現,權限的細分不夠明確,容易讓非法用戶鉆空子。
那么 MySQL 8.0 把權限細分為靜態權限和動態權限,下面我畫了兩張詳細的區分圖,圖 1 為靜態權限,圖 2 為動態權限。
圖 1- MySQL 靜態權限的權限管理圖
圖 2-動態權限圖
那我們看到其實動態權限就是對 SUPER 權限的細分。 SUPER 權限在未來將會被廢棄掉。
我們來看個簡單的例子,
比如, 用戶 'ytt2@localhost', 有 SUPER 權限。
mysql> show grants for ytt2@'localhost';+---------------------------------------------------------------------------------+| Grants for ytt2@localhost ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |+---------------------------------------------------------------------------------+| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER, SUPER ON *.* TO ytt2@localhost |+---------------------------------------------------------------------------------+1 row in set (0.00 sec)
但是現在我只想這個用戶有 SUPER 的子集,設置變量的權限。那么單獨給這個用戶賦予兩個能設置系統變量的動態權限,完了把 SUPER 給拿掉。
mysql> grant session_variables_admin,system_variables_admin on *.* to ytt2@'localhost';Query OK, 0 rows affected (0.03 sec)mysql> revoke super on *.* from ytt2@'localhost';Query OK, 0 rows affected, 1 warning (0.02 sec)
我們看到這個 WARNINGS 提示 SUPER 已經廢棄了。mysql> show warnings;
+---------+------+----------------------------------------------+
| Level ? | Code | Message ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
+---------+------+----------------------------------------------+
| Warning | 1287 | The SUPER privilege identifier is deprecated |
+---------+------+----------------------------------------------+
1 row in set (0.00 sec)`
mysql> show grants for ytt2@'localhost';
+-----------------------------------------------------------------------------------+
| Grants for ytt2@localhost ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+-----------------------------------------------------------------------------------+
| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER ON *.* TO ytt2@localhost ? ? ? ? ?|
| GRANT SESSION_VARIABLES_ADMIN,SYSTEM_VARIABLES_ADMIN ON *.* TO ytt2@localhost |
+-----------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
當然圖 2 上還有其它的動態權限,這里就不做特別說明了。
總結
以上是生活随笔為你收集整理的查看mysql用户权限_mysql 如何查看该数据库用户具有哪些权限?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 因旗下 SSD 质量问题,西部数据面临超
- 下一篇: 2023戴尔科技峰会:双驱升级 构筑数实