MySQL 安全控制
DCL(Data Control Language 數(shù)據(jù)庫(kù)控制語(yǔ)言)
用于數(shù)據(jù)庫(kù)授權(quán)卖怜、角色控制等操作
GRANT
授權(quán),為用戶(hù)賦予訪(fǎng)問(wèn)權(quán)限
REVOKE
取消授權(quán),撤回授權(quán)權(quán)限
用戶(hù)管理
創(chuàng)建用戶(hù)
create user '用戶(hù)名'@'IP地址' identified by '密碼';
刪除用戶(hù)
drop user '用戶(hù)名'@'IP地址';
修改用戶(hù)
rename user '用戶(hù)名'@'IP地址' to '新用戶(hù)名'@'IP地址' ;
修改密碼
// 第一種方法:
set password for '用戶(hù)名'@'IP地址'=Password('新密碼')
// 第二種方法:
alter user '用戶(hù)名'@'IP地址' identified by '新密碼';
// 第三種方法(忘記密碼時(shí)缔杉,必須使用此方法修改密碼):
UPDATE mysql.user SET authentication_string=password('QFedu123!') WHERE user='root' and host='localhost';
PS:用戶(hù)權(quán)限相關(guān)數(shù)據(jù)保存在mysql數(shù)據(jù)庫(kù)的user表中扑馁,所以也可以直接對(duì)其進(jìn)行操作(不建議)
權(quán)限管理
grant 權(quán)限 on 數(shù)據(jù)庫(kù).表 to '用戶(hù)'@'IP地址' identified by '密碼'; -- 授權(quán)并設(shè)置密碼
revoke 權(quán)限 on 數(shù)據(jù)庫(kù).表 from '用戶(hù)'@'IP地址' -- 取消權(quán)限
查看授權(quán)信息
查看授權(quán)語(yǔ)句
show grants for '用戶(hù)'@'IP地址';
查看生效的授權(quán)信息
針對(duì)所有庫(kù)和表的權(quán)限,比如 *.*
黍翎。 去 mysql.user
中查看
select * from mysql.user where user='shark'\G
針對(duì)具體到庫(kù)的權(quán)限面徽,比如db_name.*
。 去 mysql.db
中查看
select * from mysql.db where user='shark'\G
針對(duì)具體表的授權(quán)玩敏,在 mysql.tables_priv
中查看
select * from mysql.tables_priv where user='shark'\G
假如是 MySQL8.x
CREATE USER '你的用戶(hù)名'@'localhost' IDENTIFIED BY '你的密碼';
#創(chuàng)建新的用戶(hù)
GRANT ALL PRIVILEGES ON 你的數(shù)據(jù)庫(kù)名.* TO '你的用戶(hù)名'@'localhost';
#把剛剛創(chuàng)建的數(shù)據(jù)庫(kù)的管理權(quán)限給予剛剛創(chuàng)建的MySQL用戶(hù)
FLUSH PRIVILEGES;
#刷新權(quán)限斗忌,使用設(shè)置生效
關(guān)于權(quán)限
all privileges 除grant外的所有權(quán)限
select 僅查權(quán)限
select,insert 查和插入權(quán)限
...
usage 無(wú)訪(fǎng)問(wèn)權(quán)限
alter 使用alter table
alter routine 使用alter procedure和drop procedure
create 使用create table
create routine 使用create procedure
create temporary tables 使用create temporary tables
create user 使用create user、drop user旺聚、rename user和revoke all privileges
create view 使用create view
delete 使用delete
drop 使用drop table
execute 使用call和存儲(chǔ)過(guò)程
file 使用select into outfile 和 load data infile
grant option 使用grant 和 revoke
index 使用index
insert 使用insert
lock tables 使用lock table
process 使用show full processlist
show databases 使用show databases
show view 使用show view
update 使用update
reload 使用flush
shutdown 使用mysqladmin shutdown(關(guān)閉MySQL)
super 使用change master织阳、kill、logs砰粹、purge唧躲、master和set global。還允許mysqladmin調(diào)試登陸
replication client 服務(wù)器位置的訪(fǎng)問(wèn)
replication slave 由復(fù)制從屬使用
關(guān)于數(shù)據(jù)庫(kù)和表
對(duì)于目標(biāo)數(shù)據(jù)庫(kù)以及內(nèi)部其他:
數(shù)據(jù)庫(kù)名.* 數(shù)據(jù)庫(kù)中的所有
數(shù)據(jù)庫(kù)名.表 指定數(shù)據(jù)庫(kù)中的某張表
數(shù)據(jù)庫(kù)名.存儲(chǔ)過(guò)程 指定數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程
*.* 所有數(shù)據(jù)庫(kù)
關(guān)于用戶(hù)和 IP
用戶(hù)名@IP地址 用戶(hù)只能在此 IP 下才能訪(fǎng)問(wèn)
用戶(hù)名@192.168.1.% 用戶(hù)只能在此 IP 段下才能訪(fǎng)問(wèn)(通配符%表示任意)
用戶(hù)名@%.shark.com
用戶(hù)名@% 用戶(hù)可以再任意IP下訪(fǎng)問(wèn)(默認(rèn)IP地址為%)
Example
create user 'shark'@'%';
grant all privileges on *.* to 'shark'@'%' identified by '123';
立刻生效
/*將數(shù)據(jù)讀取到內(nèi)存中碱璃,從而立即生效弄痹。*/
flush privileges
也可以在創(chuàng)建用戶(hù)的同時(shí)直接授權(quán)(mysql8.x 不可以)
grant select on *.* /*設(shè)置查詢(xún)數(shù)據(jù)的權(quán)限在所有的庫(kù)和表*/
to 'shark_2'@"%" /*指定用戶(hù)名和來(lái)源 ip*/
identified by '123'; /*設(shè)置密碼*/
心得
mysql server ip 172.16.153.20
客戶(hù)端ip為172.16.153.10
mysql server 授權(quán)用戶(hù)登錄連接服務(wù)器
grant all on *.* to sharkdb@'172.16.153.10'
或者sharkdb@‘%.shark.com'
若當(dāng)前登錄的用戶(hù)是root用戶(hù)
[root@~]#mysql -uMysql服務(wù)器的用戶(hù) -p’密碼‘ -h mysql的ip/mysql的主機(jī)名 -P mysql的端口號(hào)
參數(shù)-u后接的用戶(hù)可以接網(wǎng)址www.qfedu.com