說到mysql許可權管理,我們先要明確許可權管理的概念:許可權管理,一般指根據系統設定的安全規則或者安全策略,使用者可以訪問而且只能訪問自己被授權的資源,不多不少。許可權管理幾乎出現在任何系統裡面,只要有使用者和密碼的系統。
賬戶許可權資訊被儲存在mysql資料庫的幾張許可權表中,在mysql啟動時,伺服器將這些資料庫表中許可權資訊的內容讀入記憶體。其中grant和revoke語句所涉及的常用許可權大致如下這些:create、drop、select、insert、update、delete、index、alter、create、routine、file等,還有乙個特殊的proxy許可權,是用來賦予某個使用者具有給他人賦予許可權的許可權。下面我們來看看這些mysql許可權:
1. grant 所有許可權
mysql> grant all privileges on *.* to 'username'@'host';
mysql> flush privileges;
2. grant super許可權在*.*上(super許可權可以對全域性變數更改);
mysql> grant super on *.* to 'username'@'host';
mysql> flush privileges;
3. grant某個庫下所有表的所有許可權
mysql> grant all privileges on db_name.* to 'username'@'host';
mysql> flush privileges;
4. grant某個庫下所有表的select許可權
mysql>grant select on db_name.* to 'username'@'host';
mysql> flush privileges;
5. grant某個庫下某個表的insert許可權
mysql> grant insert on db_name.table_name to 'username'@'host';
mysql> flush privileges;
6. grant某個庫下某個表的update許可權
mysql>grant update on db_name.table_name to 'username'@'host';
mysql> flush privileges;
7. grant某個庫下某個表的某個欄位update許可權
mysql> grant update(column_name) on db_name.table_name to 'username'@'host';
mysql> flush privileges;
8.通過grant語句中的usage許可權,可以建立賬戶而不授予任何許可權
mysql> grant usage on *.* to 'username'@'host';
mysql> flush privileges;
9. grant建立、修改、刪除mysql資料表結構許可權
mysql> grant create on testdb.* to developer@'192.168.0.%';
mysql> grant alter on testdb.* to developer@'192.168.0.%';
mysql> grant drop on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
10. grant操作mysql外來鍵許可權
mysql> grant references on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
11. grant操作mysql臨時表許可權
mysql> grant create temporary tables on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
12. grant操作mysql索引許可權
mysql> grant index on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
13.grant操作mysql檢視、檢視檢視源**許可權
mysql> grant create view on testdb.* to developer@'192.168.0.%';
mysql> grant show view on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
14. grant操作mysql儲存過程、儲存函式許可權
mysql> grant create routine on testdb.* to developer@'192.168.0.%';
mysql> grant alter routine on testdb.* to developer@'192.168.0.%';
mysql> grant execute on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
15.proxy特殊許可權如果想讓某個使用者具有給他人賦予許可權的能力,那麼就需要proxy許可權了。當你給乙個使用者賦予all許可權之後,你檢視mysql.user表會發現grant_priv欄位還是為n,表示其沒有給他人賦予許可權的許可權。
我們可以檢視一下系統預設的超級管理員許可權:
mysql> show grants for 'root'@'localhost';
| grants for root@localhost |
| grant all privileges on *.* to 'root'@'localhost' with grant option |
| grant proxy on ''@'' to 'root'@'localhost' with grant option |
2 rows in set (0.00 sec)
可以看到其本身有proxy許可權,並且這個語句跟一般授權語句還不太一樣。所以如果想讓乙個遠端使用者有給他人賦予許可權的能力,就需要給此使用者proxy許可權,如下:
mysql> grant all on *.* to 'test'@'%' identified by 'helloword';
mysql> grant proxy on ''@'' to 'test'@'%' with grant option;
mysql> flush privileges;
16. 檢視使用者的許可權
mysql> show grants for 'username'@'host';
17. 移除使用者許可權
# 移除tom使用者對於db.xsb的許可權;
mysql> revoke all on db.xsb from 'tom'@'localhost';
# 重新整理授權表;
mysql> flush privileges;
使用revoke收回許可權之後,使用者帳戶的記錄將從db、host、tables_priv、columns_priv表中刪除,但是使用者帳號依然在user表中儲存。
以上就是mysql資料庫中的mysql許可權管理,實際上就是通過mysql語句來實現的。合理使用mysql許可權管理對於mysql資料庫的使用是至關重要的,也能夠加速我們對mysql資料庫的熟練掌握,在本站的mysql教程中,還有更多的詳細的解析,能夠幫助我們查漏補缺。
mysql 外來鍵 del 記錄 MySQL 外來鍵
在mysql中 1 mysql 資料表主要支援六種型別 分別是 bdb heap isam merge myisam innobdb。這六種又分為兩類,一類是 事務安全型 transaction safe 包括bdb和innodb 其餘都屬於第二類,稱為 非事務安全型 non transaction...
mysql副鍵 mysql外來鍵
外來鍵是為了保證資料的完整性,但也會帶來許多 使用不當會使資料處理變得複雜,在資料量大的時候會明顯影響效能。所以,工具是工具,具體如何使用,根據自己情況取捨。注意 目前在mysql資料庫中,只有innodb儲存引擎支援外來鍵。外來鍵定義 兩個有關聯關係的表,其中乙個表中的某個欄位a指向另乙個表中的主...
mysql建立外來鍵案例 MySQL外來鍵例項
外來鍵例項 性別表create table gender gid int auto increment primary key not null,gender char 10 insert into gender gender values male female unknown 乙個表只能有乙個主...