所有的關(guān)于權(quán)限修改的語句憔涉,都需要刷新mysql的系統(tǒng)權(quán)限相關(guān)表方可生效。
mysql權(quán)限表是指在mysql數(shù)據(jù)庫下的5張表:user, db, tables_priv, columns_priv, procs_priv肘迎,這5張表記錄了所有的用戶及其權(quán)限信息,mysql就是通過這5張表控制用戶訪問的
>> flush privileges ;
查詢用戶權(quán)限:show grants for 你的用戶;
也可查詢用戶表查詢相關(guān)的權(quán)限:select * from user
格式
grant <privileges> on <what> to <user> [identified by "<password>"][with grant option];
<what>表示哪個數(shù)據(jù)庫
<user>表示用戶名@登錄主機(jī)
[with grant option]表示權(quán)限傳遞父叙,允許將權(quán)限傳遞給第三方
<privileges>是一個用逗號分隔的你想要賦予的MySQL用戶權(quán)限的列表徙垫。你可以指定的權(quán)限可以分為三種類型:
數(shù)據(jù)庫/數(shù)據(jù)表/數(shù)據(jù)列權(quán)限:
alter: 修改已存在的數(shù)據(jù)表(例如增加/刪除列)和索引
create: 建立新的數(shù)據(jù)庫或數(shù)據(jù)表
delete: 刪除表的記錄
drop: 刪除數(shù)據(jù)表或數(shù)據(jù)庫
index: 建立或刪除索引
insert: 增加表的記錄
select: 顯示/搜索表的記錄
update: 修改表中已存在的記錄
全局管理MySQL用戶權(quán)限:
file: 在mysql服務(wù)器上讀寫文件
process: 顯示或殺死屬于其它用戶的服務(wù)線程
reload: 重載訪問控制表,刷新日志等
shutdown: 關(guān)閉mysql服務(wù)
特別的權(quán)限:
all: 允許做任何事(和root一樣)
usage: 只允許登錄--其它什么也不允許做
創(chuàng)建新用戶
創(chuàng)建新用戶蛔添,用戶名為testuser痰催,密碼為123456:
>>grant all privileges on *.* to testuser@localhost identified by "123456" ;
設(shè)置用戶testuser,可以在本地訪問mysql:
>>grant all privileges on *.* to testuser@localhost identified by "123456" ;
設(shè)置用戶testuser迎瞧,可以在遠(yuǎn)程訪問mysql:
>>grant all privileges on *.* to testuser@"%" identified by "123456" ;
設(shè)置用戶訪問數(shù)據(jù)庫權(quán)限
設(shè)置用戶testuser夸溶,只能訪問數(shù)據(jù)庫test_db,其他數(shù)據(jù)庫均不能訪問:
>> grant all privileges on test_db.* to testuser@localhost identified by "123456" ;
設(shè)置用戶testuser凶硅,可以訪問mysql上的所有數(shù)據(jù)庫:
>> grant all privileges on *.* to testuser@localhost identified by "123456" ;
設(shè)置用戶testuser缝裁,只能訪問數(shù)據(jù)庫test_db的表user_infor,數(shù)據(jù)庫中的其他表均不能訪問:
>> grant all privileges on test_db.user_infor to testuser@localhost identified by "123456" ;
設(shè)置用戶操作權(quán)限
設(shè)置用戶testuser足绅,擁有所有的操作權(quán)限捷绑,也就是管理員:
>> grant all privileges on *.* to testuser@localhost identified by "123456" with grant option ;
設(shè)置用戶testuser,只擁有【查詢】操作權(quán)限:
>> grant select on *.* to testuser@localhost identified by "123456" with grant option ;
設(shè)置用戶testuser氢妈,只擁有【查詢\插入】操作權(quán)限:
>> grant select,insert on *.* to testuser@localhost identified by "123456" ;
取消用戶testuser的【查詢\插入】操作權(quán)限:
>> revoke select,insert on what from testuser
設(shè)置用戶遠(yuǎn)程訪問權(quán)限
設(shè)置用戶testuser粹污,只能在客戶端IP為192.168.1.100上才能遠(yuǎn)程訪問mysql:
>> grant all privileges on *.* to testuser@“192.168.1.100” identified by "123456" ;
刪除用戶
刪除用戶:
>> delete from user where user='test' and host='localhost';
刪除賬戶及權(quán)限:
>> drop user 用戶名@'%';
>> drop user 用戶名@ localhost;
關(guān)于root用戶的訪問設(shè)置
設(shè)置所有用戶可以遠(yuǎn)程訪問mysql,修改my.cnf配置文件首量,將bind-address = 127.0.0.1前面加“#”注釋掉壮吩,這樣就可以允許其他機(jī)器遠(yuǎn)程訪問本機(jī)mysql了进苍;
設(shè)置用戶root,可以在遠(yuǎn)程訪問mysql:
>> grant all privileges on *.* to root@"%" identified by "123456" ;
查詢mysql中所有用戶權(quán)限:
>> select host,user from user;
禁止root用戶在遠(yuǎn)程機(jī)器上訪問mysql:
>> delete from user where user="root" and host="%" ;
mysql的user表中的權(quán)限列名:
Select_priv:確定用戶是否可以通過SELECT命令選擇數(shù)據(jù)
Insert_priv:確定用戶是否可以通過INSERT命令插入數(shù)據(jù)
Update_priv:確定用戶是否可以通過UPDATE命令修改現(xiàn)有數(shù)據(jù)
Delete_priv:確定用戶是否可以通過DELETE命令刪除現(xiàn)有數(shù)據(jù)
Create_priv:確定用戶是否可以創(chuàng)建新的數(shù)據(jù)庫和表
Drop_priv:確定用戶是否可以刪除現(xiàn)有數(shù)據(jù)庫和表
Reload_priv:確定用戶是否可以執(zhí)行刷新和重新加載MySQL所用各種內(nèi)部緩存的特定命令鸭叙,包括日志觉啊、權(quán)限、主機(jī)递雀、查詢和表
Shutdown_priv:確定用戶是否可以關(guān)閉MySQL服務(wù)器柄延,將此權(quán)限提供給root賬戶之外的任何用戶時(shí),都應(yīng)當(dāng)非常謹(jǐn)慎
Process_priv:確定用戶是否可以通過SHOW
File_priv:確定用戶是否可以執(zhí)行SELECT INTO OUTFILE和LOAD DATA INFILE命令
Grant_priv:確定用戶是否可以將已經(jīng)授予給該用戶自己的權(quán)限再授予其他用戶缀程,例如搜吧,如果用戶可以插入、選擇和刪除foo數(shù)據(jù)庫中的信息杨凑,并且授予了GRANT權(quán)限滤奈,則該用戶就可以將其任何或全部權(quán)限授予系統(tǒng)中的任何其他用戶
References_priv:目前只是某些未來功能的占位符,現(xiàn)在沒有作用
Index_priv:確定用戶是否可以創(chuàng)建和刪除表索引
Alter_priv:確定用戶是否可以重命名和修改表結(jié)構(gòu)
Show_db_priv:確定用戶是否可以查看服務(wù)器上所有數(shù)據(jù)庫的名字撩满,包括用戶擁有足夠訪問權(quán)限的數(shù)據(jù)庫蜒程,可以考慮對所有用戶禁用這個權(quán)限,除非有特別不可抗拒的原因
Super_priv:確定用戶是否可以執(zhí)行某些強(qiáng)大的管理功能伺帘,例如通過KILL命令刪除用戶進(jìn)程昭躺,使用SET GLOBAL修改全局MySQL變量,執(zhí)行關(guān)于復(fù)制和日志的各種命令
Create_tmp_table_priv:確定用戶是否可以創(chuàng)建臨時(shí)表
Lock_tables_priv:確定用戶是否可以使用LOCK
Execute_priv:確定用戶是否可以執(zhí)行存儲過程伪嫁,此權(quán)限只在MySQL 5.0及更高版本中有意義
Repl_slave_priv:確定用戶是否可以讀取用于維護(hù)復(fù)制數(shù)據(jù)庫環(huán)境的二進(jìn)制日志文件领炫,此用戶位于主系統(tǒng)中,有利于主機(jī)和客戶機(jī)之間的通信
Repl_client_priv:確定用戶是否可以確定復(fù)制從服務(wù)器和主服務(wù)器的位置
Create_view_priv:確定用戶是否可以創(chuàng)建視圖张咳,此權(quán)限只在MySQL 5.0及更高版本中有意義
Show_view_priv:確定用戶是否可以查看視圖或了解視圖如何執(zhí)行帝洪,此權(quán)限只在MySQL 5.0及更高版本中有意義
Create_routine_priv:確定用戶是否可以更改或放棄存儲過程和函數(shù),此權(quán)限是在MySQL 5.0中引入的
Alter_routine_priv:確定用戶是否可以修改或刪除存儲函數(shù)及函數(shù)脚猾,此權(quán)限是在MySQL 5.0中引入的
Create_user_priv:確定用戶是否可以執(zhí)行CREATE
Event_priv:確定用戶能否創(chuàng)建葱峡、修改和刪除事件,這個權(quán)限是MySQL 5.1.6新增的
Trigger_priv:確定用戶能否創(chuàng)建和刪除觸發(fā)器龙助,這個權(quán)限是MySQL 5.1.6新增的