1. 程式人生 > 其它 >mysql授權管理

mysql授權管理

1 簡介

許可權系統的作用是授予來自某個主機的某個使用者可以查詢、更新、刪除等資料庫操作的許可權。

通過create user、grant、revoke語句授權

許可權資訊儲存在名叫mysql的資料庫中,並在資料庫啟動後加載到記憶體。

認證資訊包括使用者名稱@主機名

2 許可權的分級

全域性:作用於整個mysql例項

資料庫級:作用於特定資料庫

資料庫物件級:作用於表、檢視

檢視預設root許可權

mysql> show grants for root@localhost\G;

4 系統許可權表

user:存放使用者賬戶資訊,以及全域性級別許可權

db:存放資料庫級別許可權

tables_priv:表級別許可權

columns_priv:列級別許可權

procs_priv:儲存過程和函式級別許可權

5 修改許可權後生效時間

執行grant,revoke,setpassword,renameuser命令修改許可權之後,MySQL會自動將修改後的許可權資訊同步載入到系統記憶體中。

如果直接修改上面的許可權表,生效時間各不相同,這裡不詳述。

6 建立使用者並授權

CREATE USER/GRANT命令

例子:建立szj@*使用者

授權

mysql> CREATE USER 'szj'@'localhost' IDENTIFIED BY 'xxx';
Query OK, 0 rows affected (0.01
sec) mysql> GRANT ALL PRIVILEGES ON szj_db.* TO `szj`@`localhost` WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) mysql>

7 回收許可權

mysql> REVOKE ALL PRIVILEGES ON szj_db.* FROM 'szj'@'*';

8 刪除使用者

9 設定使用者訪問限制

max_user_connections

• 通過設定全域性變數max_user_connections可以限制所有使用者在同一時間連線MySQL例項的數量,但此引數無法對每個使用者區別對待,所以MySQL提供了對每個使用者的資源限制管理

MAX_QUERIES_PER_HOUR

• MAX_QUERIES_PER_HOUR:一個使用者在一個小時內可以執行查詢的次數(基本包含所有語句)

MAX_UPDATES_PER_HOUR

• MAX_UPDATES_PER_HOUR:一個使用者在一個小時內可以執行修改的次數(僅包含修改資料庫或表的語句)

MAX_CONNECTIONS_PER_HOUR

• MAX_CONNECTIONS_PER_HOUR:一個使用者在一個小時內可以連線MySQL的時間

MAX_USER_CONNECTIONS

    • MAX_USER_CONNECTIONS:一個使用者可以在同一時間連線MySQL例項的數量,注意,當針對某個使用者當MAX_USER_CONNECTIONS非0時,則忽略全域性系統引數MAX_USER_CONNECTIONS,反之則全域性系統引數生效!

    • 從5.0.3版本開始,對使用者‘user’@‘%.example.com’的資源限制是指所有 通過example.com域名主機連線user使用者的連線,而不是分別指從 host1.example.com和host2.example.com主機過來的連線

10 已存在使用者作訪問限制

mysql> ALTER USER szj@localhost WITH MAX_USER_CONNECTIONS 5;

11 已存在使用者取消訪問限制

取消某項資源限制即是把原先的值修改為0

mysql> ALTER USER szj@localhost WITH MAX_USER_CONNECTIONS 0;

12 使用者上鎖and解鎖

 mysql> alter user 'szj'@'localhost' account lock; 

 mysql> alter user 'szj'@'localhost' account unlock; 

13 附錄

顯示哪些執行緒正在執行

mysql> show processlist;
mysql> show engines;

由此可以看出,在諸多的儲存引擎中,只有InnoDB支援事務

檢視欄位資訊

 mysql> desc user;