您好,登錄后才能下訂單哦!
小編給大家分享一下mysql權限有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
mysql的各種權限:
1.usage:連接(登錄)權限,建立一個用戶,就會自動授予其usage權限(默認授予),該權限只能用于數據庫登陸,不能執行任何操作;且usage權限不能被回收,也即REVOKE用戶并不能刪除用戶。
2.select:必須有select權限才能使用select table
3.create :必須有create的權限,才可以使用create table
4.create routine:必須具有create routine的權限,才可以使用{create |alter|drop} {procedure|function},當授予create routine時,自動授予EXECUTE, ALTER ROUTINE權限給它的創建者:
5.create temporary tables:(注意這里是tables,不是table)必須有create temporary tables的權限,才可以使用create temporary tables
6.create view 必須有create view的權限,才可以使用create view
7.create user:要使用CREATE USER,必須擁有mysql數據庫的全局CREATE USER權限,或擁有INSERT權限。
8.insert:必須有insert的權限,才可以使用insert into ….. values….
9.alter:必須有alter的權限,才可以使用alter table
undefinedupdateundefined必須有update的權限,才可以使用update table
使用這個命令使權限生效,尤其是你對那些權限表user、db、host等做了update或者delete更新的時候。以前遇到過使用grant后權限沒有更新的情況,大家可以養成習慣,只要對權限做了更改就使用FLUSH PRIVILEGES命令來刷新權限。
FLUSH PRIVILEGES;
使用如下命令可以方便的查看到某個用戶的權限:
SHOW GRANTS FOR 'webuser'@'192.168.10.%';
將前面創建的webuser用戶的DELETE權限回收,使用如下命令
REVOKE DELETE ON test.* FROM 'webuser'@'192.168.10.%';
12. delete:必須有delete的權限,才可以使用delete from ….where….(刪除表中的記錄)
13. drop:必須有drop的權限,才可以使用drop database db_name; drop table tab_name;
14. show database:通過show database只能看到你擁有的某些權限的數據庫,除非你擁有全局SHOW DATABASES權限。
15:show view:必須擁有show view權限,才能執行show create view。
18.lock tables:必須擁有lock tables權限,才可以使用lock tables
19. references:有了REFERENCES權限,用戶就可以將其它表的一個字段作為某一個表的外鍵約束。
20. reload:必須擁有reload權限,才可以執行flush [tables | logs | privileges]
21. replication client:擁有此權限可以查詢master server、slave server狀態。
22.replication slave擁有此權限可以查看從服務器,從主服務器讀取二進制日志。
23. file:擁有file權限才可以執行 select ..into outfile和load data infile…操作,但是不要把file, process, super權限授予管理員以外的賬號,這樣存在嚴重的安全隱患。
24. super:這個權限允許用戶終止任何查詢;修改全局變量的SET語句;使用CHANGE MASTER,PURGE MASTER LOGS。
25. process:通過這個權限,用戶可以執行SHOW PROCESSLIST和KILL命令。默認情況下,每個用戶都可以執行SHOW PROCESSLIST命令,但是只能查詢本用戶的進程
PS:管理權限(如 super, process, file等)不能夠指定某個數據庫,on后面必須跟*.*
先了解一下mysql兩階段驗證:
第一階段:服務器首先會檢查你是否允許連接。因為創建用戶的時候會加上主機限制,可以限制成本地、某個IP、某個IP段、以及任何地方等,只允許你從配置的指定地方登陸。
第二階段:如果你能連接,Mysql會檢查你發出的每個請求,看你是否有足夠的權限實施它。比如你要更新某個表、或者查詢某個表,Mysql會查看你對哪個表或者某個列是否有權限。
一、授權
mysql> grant all privileges on *.* to 'myuser'@'%' identified by '123456' with grant option;
all privileges:表示將所有權限授予給用戶,也可指定具體的權限,如select,update,delete等;
on:表示這些權限對那些數據庫和表生效,格式:dbname.tablename 這里寫的是所有數據庫下的所有表、
to:將權限授予那個用戶
'myuser'@'%':@后面接限制的主機,可以是IP、IP段、域名以及%,%表示任何地方。注意:這里%有的版本不包括本地,以前碰到過給某個用戶設置了%允許任何地方登錄,但是在本地登錄不了,這個和版本有關系,遇到這個問題再加一個localhost的用戶就可以了。
identified by:指定用戶的登錄密碼;
with grant option:這個選項表示該用戶可以將自己擁有的權限授權給別人。注意:經常有人在創建操作用戶的時候不指定WITH GRANT OPTION選項導致后來該用戶不能使用GRANT命令創建用戶或者給其他用戶授權。
PS:可以使用GRANT重復給用戶添加權限,權限疊加,比如你先給用戶添加了一個select權限,然后又給用戶添加了一個insert權限,那么該用戶就同時擁有了select和insert權限.
1.創建一個超級用戶:創建一個只允許從本地登錄的超級用戶u01,并允許將權限賦予別的用戶
GRANT ALL PRIVILEGES ON *.* TO u01@'localhost' IDENTIFIED BY '111111' WITH GRANT OPTION;
2.創建一個網站用戶:(程序用戶)
創建一個一般的程序用戶,這個用戶可能只需要SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES等權限如果有存儲過程還需要加上EXECUTE權限,一般是指定內網網段192.168.10網段。
GRANT USAGE,SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ,CREATE TEMPORARY TABLES,EXECUTE ON `test`.* TO webuser@'192.168.10.%' IDENTIFIED BY '123456';
3.創建一個普通用戶:(僅有查詢權限)
GRANT USAGE,SELECT ON `test`.* TO public@'192.168.10.%' IDENTIFIED BY '123456';
二、權限管理
1.刷新權限:
3.回收權限:
1.刪除用戶
DROP USER 'webuser'@'192.168.10.%';
drop user 會將該用戶的信息全部刪掉,而 delete 只會清除user表,其他的比如db表中的信息還是存在。如果delete 后,再創建一個最小權限的用戶,那么他會重用以前的權限。
看完了這篇文章,相信你對mysql權限有哪些有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。