查看使用者權限
show grants for 你的使用者
比如:
show grants for root@'localhost';
mysql 5種權限等級:global level,database level,table level,column level,routine level。進階別會覆蓋低層級的許可權。
給使用者賦權,與撤消許可權
GRANT SELECT,UPDATE,DELETE,INSERT ON *.* TO 'def'@'localhost';
REVOKE SELECT,UPDATE,DELETE,INSERT ON *.* FROM 'def'@'localhost';
許可權相關表格儲存體在資料庫mysql中,有user, db, host, tables_priv, columns_priv, procs_priv, proxies_priv。
--查看目前使用者
select user();
--查看所有使用者
SELECT host,user,password FROM mysql.user ORDER BY user;
我們先瞭解何時 MySQL 存放於記憶體結構中的許可權資訊被更新: FLUSH PRIVILEGES 會強行讓 MySQL 更新 Load 到記憶體中的許可權資訊; GRANT 、 REVOKE 或者 CREATE USER 和 DROP USER 操作會直接更新記憶體中的許可權資訊;重啟 MySQL 會讓 MySQL 完全從 grant tables 中讀取許可權資訊。
那記憶體結構中的許可權資訊更新之後對已經串連上的使用者何時生效呢?對於 Global Level 的許可權資訊的修改,僅僅只有更改之後建立串連才會用到,對於已經串連上的 session 並不會受到影響。而對於 Database Level 的許可權資訊的修改,只有當用戶端請求執行了 “ USE database_name ” 命令之後,才會在重新校正中使用到新的許可權資訊。所以有些時候如果在做了比較緊急的 Global 和 Database 這兩個 Level 的許可權變更之 後 ,可能需要通過 “ KILL ” 命令將已經串連在 MySQL 中的 session 殺掉強迫他們重新串連以使用更新後的許可權。對於 Table Level 和 Column Level 的許可權,則會在下一次需要使用到該許可權的 Query 被請求的時候生效,也就是說,對於應用來講,這兩個Level 的許可權,更新之後立刻就生效了,而不會需要執行 “ KILL ” 命令。