這篇說說 MySQL 權限管理。
MySQL 從用戶、密碼和IP三個維度來管理用戶鏈接的。
1. 創(chuàng)建用戶
先看一個示例:
# 創(chuàng)建 david 用戶,密碼為 123, 101.32.19.* 可以訪問
mysql> create user 'david'@'101.32.19.%' identified by '123';
# 當然也可以在創(chuàng)建用戶時,先不設定密碼
mysql> create user 'david'@'101.32.19.%';
以上腳本就是創(chuàng)建 david 的用戶,密碼是 123,且只能是 101.32.19.* 網段的 IP 能訪問。
剛剛創(chuàng)建的用戶只有鏈接權限:
(root@localhost) [mysql]> show grants for 'david'@'101.32.19.%';
+---------------------------------------------+
| Grants for david@101.32.19.% |
+---------------------------------------------+
| GRANT USAGE ON *.* TO `david`@`101.32.19.%` |
+---------------------------------------------+
1 row in set (0.00 sec)
2. 修改用戶密碼
# 修改用戶密碼
(root@localhost) [(none)]> alter user 'david'@'101.32.19.%' identified by '456';
3. 授權
授權是指給予 MySQL 用戶一定的權限。新創(chuàng)建的用戶只有鏈接權限,無創(chuàng)建表等權限。
mysql> grant select, update, insert, delete on test.* to 'david'@'10.0.4.%' [with grant option];
授予 'david'@'101.32.19.%' 用戶針對 mysql 庫中所有表的增刪查改權限。with grant option 表示 david 用戶還可以給其他用戶授予他擁有的權限。
再次查看其權限:
(root@localhost) [(none)]> show grants for 'david'@'101.32.19.%';
+----------------------------------------------------------------------------+
| Grants for david@101.32.19.% |
+----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `david`@`101.32.19.%` |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `mysql`.* TO `david`@`101.32.19.%` |
+----------------------------------------------------------------------------+
2 rows in set (0.00 sec)
4. 回收權限
示例:回收 david 用戶的增刪改查權限:
(root@localhost) [(none)]> revoke select, insert, update, delete on mysql.* from 'david'@'101.32.19.%';
Query OK, 0 rows affected (0.01 sec)
# 也可以回收所有權限,但是不刪除用戶
mysql> revoke all on *.* from 'david'@'101.32.19.%';
# 仍然具有鏈接權限
(root@localhost) [(none)]> show grants for 'david'@'101.32.19.%';
+---------------------------------------------+
| Grants for david@101.32.19.% |
+---------------------------------------------+
| GRANT USAGE ON *.* TO `david`@`101.32.19.%` |
+---------------------------------------------+
1 row in set (0.00 sec)
5. 刪除用戶
mysql> drop user 'david'@'101.32.19.%'; # 刪除用戶 david
以上是最基本的 MySQL 權限管理,當然 MySQL 的權限管理內容還有很多,權限還可以設置的很細致。具體可以參考 mysql 庫中相應的表。附表如下:
| 序號 | 表 | 作用 |
|---|---|---|
| 1 | user | 控制用戶的鏈接等權限 |
| 2 | db | 控制用戶對于某個數(shù)據(jù)庫的權限 |
| 3 | tables_priv | 控制用戶對于某張表的權限 |
| 4 | columns_priv | 控制用戶對于表中某列的權限 |
至此,MySQL 常用的權限管理說完了,下一篇說一款 MySQL 的插件,敬請期待......
大家加油?。。?/strong>
下面是廣告時間,關注 “老劉說技術” 獲取更多教程