mysql外來鍵許可權 MySQL許可權管理

2021-10-20 23:03:50 字數 3748 閱讀 7227

說到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 乙個表只能有乙個主...