mysql授權管理
1 簡介
許可權系統的作用是授予來自某個主機的某個使用者可以查詢、更新、刪除等資料庫操作的許可權。
通過create user、grant、revoke語句授權
許可權資訊儲存在名叫mysql的資料庫中,並在資料庫啟動後加載到記憶體。
認證資訊包括使用者名稱@主機名
2 許可權的分級
全域性:作用於整個mysql例項
資料庫級:作用於特定資料庫
資料庫物件級:作用於表、檢視
3 檢視預設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.01sec) 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;