mysql的權限等級,mysql權限等級
mysql有5個層級的許可權,分別是:
Clobal Level,Database Level,Table level,Column Level,Routine Level。
1,Clobal Level:它是針對整個mysql資料庫伺服器的全域許可權。對mysql裡的某個資料庫,或某個資料庫的某張表的許可權。所有的許可權資訊都存在mysql.user這張表中。
全域許可權的設定語句:
GRANT ALL ON *.* to 'root'@'localhost'
第一個*代表資料庫名,這裡是所有的資料庫,第二個*代表表名。
全域許可權有ALTER ALTER ROUTINE CREATE ALL CREATE ROUTINE CREATE TEMPORARY TABLES CREATE USER CREATE VIEW DELETE All DROP All EXECUTE FILE All INTO FILE INDEX All INSERT All LOCK TABLES PROCESS All RELOAD All REPLICATION CLIENT SLAVE STATUS REPLICATION SLAVE SELECT SHOW DATABASES SHOW VIEW view SHUTDOWN SUPER UPDATE USAGE
2,Database Level: 資料庫層級的許可權,通過databasename.* 設定許可權。設定語句如下:
GRANT ALL ON databasename.* to 'root'@'localhost'
它會被global level的許可權給覆蓋掉,如有兩條如下的使用權限設定語句:
GRANT SELECT on test.* to 'root'@'localhost';REVOKE SELECT ON *.* FROM 'root'@'localhost';
'root'@'localhost'將不再對test擁有select許可權。
資料庫許可權有: CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHUTDOWN,SUPER USAGE
3,Table Level:表層級的許可權能被全域許可權和資料庫層級許可權覆蓋
GRANT SELECT ON test.test to 'root'@'localhost';SHOW GRANTS FOR 'root'@'localhost';
可以通過use選中某個資料庫,直接對table名設定許可權
GRANT SELECT ON test to 'root'@'localhost';
表的許可權有:ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT UPDATE
4,Column Level:表的某個列的許可權。它會被前面三個許可權給覆蓋掉
GRANT SELECT(id) ON test to 'root'@'localhost';
欄位層級的許可權有INSERT,SELECT ,UPDATE
5,Routine Level:是針對函數和預存程序的許可權,他會被1,2,3個許可權給覆蓋掉。
GRANT EXECUTE ON test.p to'root'@'localhost';
簡述構成mysql許可權控制步驟
1、mysql檢查user許可權表中的許可權資訊,匹配user、host欄位值,查看請求的全域許可權是否被允許,如果找到匹配結果,操作被允許執行,否則進行下一步。
2、mysql檢查db許可權表中的許可權資訊,匹配user、host欄位值,查看請求的資料庫層級的許可權是否被允許,如果找到匹配結果,操作被允許執行,否則進行下一步。
3、mysql檢查tables_priv許可權表中的許可權資訊,匹配user、host欄位值,查看請求的資料庫層級的許可權是否被允許,如果找到匹配結果,操作被允許執行,否則進行下一步。
4、mysql檢查columns_priv許可權表中的許可權資訊,匹配user、host欄位值,查看請求的資料庫層級的許可權是否被允許,如果找到匹配結果,操作被允許執行,否則返回錯誤資訊。
mysql中怎設定使用者與管理員的許可權?
MySQL管理員應該知道如何設定MySQL使用者帳號,指出哪個使用者可以串連伺服器,從哪裡串連,串連後能做什麼。MySQL 3.22.11開始引入兩條語句使得這項工作更容易做:GRANT語句建立MySQL使用者並指定其許可權,而REVOKE語句刪除許可權。兩條語句扮演了MySQL資料庫的前端角色,並提供與直接操作這些表的內容不同的另一種方法。CREATE和REVOKE語句影響4個表: 中.國站長站
還有第5個授權表(host),但它不受GRANT和REVOKE的影響。 中.國.站長站
當你對一個使用者發出一條GRANT語句時,在user表中為該使用者建立一條記錄。如果語句指定任何全域許可權(系統管理權限或適用於所有資料庫的許可權),這些也記錄在user表中。如果你指定資料庫、表和列級許可權,他們被分別記錄在db、tables_priv和columns_priv表中。
站.長站
用GRANT和REVOKE比直接修改授權表更容易些,然而,建議你閱讀一下《MySQL安全性指南》。這些表異常重要,而且作為一名管理員,你應該理解它們如何超越GRANT和REVOKE語句的功能水平。
站.長站
在下面的章節中,我們將介紹如何設定MySQL使用者帳號並授權。我們也涉及如何撤權和從授權表中刪除使用者。 Chinaz
你可能也想考慮使用MySQLACCESS和mysql_setpermission指令碼,它是MySQL分發的一部分,它們是Perl指令碼,提供GRANT語句的另一種選擇設定使用者帳號。MySQL_setpermission需要安裝DBI支援。
Chinaz.com
1、建立使用者並授權 Chinaz.com
GRANT語句的文法看上去像這樣:
以下為引用的內容:
GRANT privileges (columns)
ON what
TO user IDENTIFIED BY "password"
WITH GRANT OPTION
www.Chinaz.com
要使用該語句,你需要填寫下列部分:
中國.站.長站
privileges 站長.站
授予使用者的許可權,下表列出可用於GRANT語句的許可權指定符:
中國站.長.站
上表顯示在第一組的許可權指定符適用於資料庫、表和列,第二組數系統管理權限。一般,這些被相對嚴格地授權,因為它們允許使用者影響伺服器的操作。第三組許可權特殊,ALL意味著“所有許可權”,UASGE意味著無許可權,即建立使用者,但不授予許可權。 Www^Chinaz^com
columns
中國.站長站
許可權運用的列,它是可選的,並且你只能設定列特定的許可權。如果命令有多於一個列,應該用逗號分開它們。
中國站長.站
what
站長.站
許可權運用的層級。許可權可以是全域的(適用於所有資料庫和所有表)、特定資料庫(適用於一個資料庫中的所有表)或特定表的。可以通過指定一個columns字句是許可權是列特定的。 Www@Chinaz@com
user 中國站長_站,為中文網站提供動力
許可權授予的使用者,它由一個使用者名稱和主機名稱組成。在MySQL中,你不僅指定誰能串連,還有從哪裡串連。這允許你讓兩個同名使用者從不同地方串連。MySQL讓你區分他們,並彼此獨立地賦予許可權。
中國.站長站
MySQL中的一個使用者名稱就是你串連服......餘下全文>>