MySQL 許可權

pursuer.chen發表於2015-05-28

一、建立使用者

CREATE USER  li@localhost IDENTIFIED BY 'li';

授予使用者li資料庫person的所有許可權,並允許使用者li將資料庫person的所有許可權授予其它使用者

GRANT ALL ON PERSON.* TO li@localhost WITH GRANT OPTION;

立即生效,如果授予的許可權沒有生效執行以下命令,在5.6版本更改即會生效。

FLUSH PRIVILEGES;

GRANT建立使用者

如果當前不存在使用者,GRANT可以在授予許可權的時候建立使用者

授予使用者資料庫person所有表的select,insert許可權。

GRANT SELECT,INSERT ON PERSON.* TO 'abc'@'localhost' identified by 'abc';

同時執行使用者abc將person資料庫的SELECT,INSERT許可權授予給其它使用者
GRANT SELECT,INSERT ON PERSON.* TO 'abc'@'localhost' identified by 'abc' with grant option;
建立使用者root密碼123456並賦予伺服器所有許可權,允許IP192.168.1.5的客戶端連線。
grant all privileges on *.* to root@'192.168.1.5' identified by '123456'

退出當前使用者

exit

檢視當前使用者的許可權

show grants;

檢視使用者abc的許可權

show grants for abc@localhost

二、REVOKE回收許可權

回收使用者abc資料庫person的insert的許可權

REVOKE INSERT ON PERSON.* FROM abc@localhost;

回收許可權

回收person資料庫abc的所有許可權
REVOKE ALL ON PERSON.* FROM abc@localhost;

回收abc的所有資料庫所有許可權
REVOKE ALL ON *.* FROM abc@localhost;

三、刪除使用者

在早期版本需要回收使用者的許可權之後才能刪除使用者。刪除使用者建議使用這種辦法,有的人會使用delete from user的辦法刪除,但是有的使用者是針對db的許可權那麼在mysql.db裡面也存在記錄,而使用drop user的方式都會被刪除。

DROP USER abc@localhost;

四、修改使用者密碼

use mysql;

UPDATE user SET password=PASSWORD('輸入新密碼') WHERE user='使用者名稱';

FLUSH PRIVILEGES;

五、相關許可權授予

1.建立root使用者

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION;

2.建立一個伺服器基本的增刪改查使用者

GRANT UPDATE, DELETE, INSERT, SELECT ON *.* TO 'test'@'%' identified by 'test' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0

3.建立資料庫基本的增刪改查使用者

GRANT SELECT, INSERT, UPDATE, DELETE, SHOW VIEW, EXECUTE ON `new`.* TO 'test'@'%' identified by  'test';

4.授予資料庫名以db開頭的資料庫的許可權

GRANT SELECT, INSERT, UPDATE, DELETE, SHOW VIEW, EXECUTE ON `db%`.* TO 'perform'@'%'

5.建立備份使用者許可權

GRANT SELECT,EVENT,SHOW DATABASES,LOCK TABLES,SUPER,REPLICATION CLIENT,RELOAD ON *.* TO 'backup'@'localhost' identified by 'backup'

6.備份恢復使用者許可權 

GRANT INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON *.* TO 'restore'@'localhost' identified by '123456'

7.複製使用者許可權 

GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY '123456';

六、許可權表欄位詳解

基於mysql5.6

user表

user表的許可權是基於伺服器範圍的所有許可權,比如使用者擁有伺服器中所有資料庫的select許可權那麼在user表中的Select_priv列為Y,如果使用者單單隻擁有某個一資料庫的select許可權那麼user表中的Select_priv為N,會在DB表中記錄一條資訊在DB表中的select_priv為Y。

desc mysql.user;

filed                  type                            null key default

Host char(60)     NO    PRI         主機名,localhost表示本地登入,%表示不受限制,也可以單獨賦予某個IP的訪問許可權。  
User char(16) NO PRI   登入使用者名稱 
Password char(41) NO     登入使用者密碼 
Select_priv enum('N','Y') NO   N select許可權 
Insert_priv enum('N','Y') NO   N insert許可權
Update_priv enum('N','Y') NO   N update許可權 
Delete_priv enum('N','Y') NO   N delete許可權 
Create_priv enum('N','Y') NO   N create許可權 
Drop_priv enum('N','Y') NO   N drop許可權
Reload_priv enum('N','Y') NO   N 執行重新整理和重新載入MySQL各種內部快取命令的許可權 
Shutdown_priv enum('N','Y') NO   N 關閉mysql伺服器的許可權,不能授予root外的其它使用者 
Process_priv enum('N','Y') NO   N 執行show processlist命令的許可權 
File_priv enum('N','Y') NO   N 執行SELECT INTO OUTFILE和LOAD DATA INFILE命令 
Grant_priv enum('N','Y') NO   N 是否可以將許可權授予其它使用者 
References_priv enum('N','Y') NO   N 參照表的許可權
Index_priv enum('N','Y') NO   N 建立刪除索引的許可權 
Alter_priv enum('N','Y') NO   N ALTER許可權 
Show_db_priv enum('N','Y') NO   N 檢視有哪些資料庫的許可權
Super_priv enum('N','Y') NO   N Super許可權,包括kill許可權。 
Create_tmp_table_priv enum('N','Y') NO   N 建立建立臨時表許可權 
Lock_tables_priv enum('N','Y') NO   N 執行lock table許可權 
Execute_priv enum('N','Y') NO   N 執行儲存過程許可權 
Repl_slave_priv enum('N','Y') NO   N 複製相關的許可權 
Repl_client_priv enum('N','Y') NO   N 複製相關的許可權 
Create_view_priv enum('N','Y') NO   N 建立檢視的許可權 
Show_view_priv enum('N','Y') NO   N 檢視檢視的許可權 
Create_routine_priv enum('N','Y') NO   N 建立函式、儲存過程等許可權 
Alter_routine_priv enum('N','Y') NO   N 修改刪除函式、儲存過程等許可權 
Create_user_priv enum('N','Y') NO   N 建立使用者的許可權 
Event_priv enum('N','Y') NO   N 建立、修改和刪除事件的許可權 
Trigger_priv enum('N','Y') NO   N 建立、修改和刪除觸發器的許可權 
Create_tablespace_priv enum('N','Y') NO   N 建立表空間的許可權 
ssl_type enum('','ANY','X509','SPECIFIED') NO      
ssl_cipher blob NO      
x509_issuer blob NO      
x509_subject blob NO      
max_questions int(11) unsigned NO   0 最多問題數 
max_updates int(11) unsigned NO   0 允許的最大更新 
max_connections int(11) unsigned NO   0 允許的最大連線 
max_user_connections int(11) unsigned NO   0  
plugin char(64) YES      
authentication_string text YES      
password_expired enum('N','Y') NO   N  

db表

如果授予一個使用者單獨某個資料庫的許可權,就會在db表中記錄一條相關資訊。

desc mysql.db;

filed                  type          null    key   default

Host                            char(60)                  NO         PRI                   主機名,localhost代表只能本地登入,如果是%表示不受限制,也可以單獨賦予某個IP的訪問許可權。
Db char(64) NO PRI   資料庫名 
User char(16) NO PRI   使用者名稱 
Select_priv enum('N','Y') NO   N select許可權 
Insert_priv enum('N','Y') NO   N insert許可權 
Update_priv enum('N','Y') NO   N update許可權 
Delete_priv enum('N','Y') NO   N delete許可權 
Create_priv enum('N','Y') NO   N create許可權 
Drop_priv enum('N','Y') NO   N drop許可權 
Grant_priv enum('N','Y') NO   N 是否可以將許可權授予其它使用者  
References_priv enum('N','Y') NO   N  
Index_priv enum('N','Y') NO   N 建立刪除索引的許可權 
Alter_priv enum('N','Y') NO   N ALTER許可權 
Create_tmp_table_priv enum('N','Y') NO   N 建立臨時表的許可權 
Lock_tables_priv enum('N','Y') NO   N 執行lock table許可權 
Create_view_priv enum('N','Y') NO   N 建立檢視的許可權 
Show_view_priv enum('N','Y') NO   N 檢視檢視的許可權 
Create_routine_priv enum('N','Y') NO   N 建立函式、儲存過程的許可權 
Alter_routine_priv enum('N','Y') NO   N 修改刪除函式、儲存過程的許可權  
Execute_priv enum('N','Y') NO   N 執行儲存過程的許可權 
Event_priv enum('N','Y') NO   N 建立、修改、刪除事件的許可權 
Trigger_priv enum('N','Y') NO   N 建立、修改、刪除觸發器的許可權 

 

總結

 使用revoke all privileges並不能收回使用者的所有許可權,對於使用者的單個資料庫的許可權需要單獨回收,具體可以查詢mysql.db資料庫檢視使用者的每個資料庫的具體許可權,如果使用者許可權太多最快的回收許可權的方法是刪除該使用者再重新授予使用者新的許可權

 

注意:給一個資料庫授予一個使用者不同連線方式的許可權,mysql使用低許可權的原則。 

 

 

 

 

備註:

    作者:pursuer.chen

    部落格:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結,否則保留追究責任的權利。

《歡迎交流討論》

相關文章