東莞建工集團(tuán)知乎推廣優(yōu)化
目錄
- 一、用戶操作
- 查看當(dāng)前擁有用戶
- 創(chuàng)建用戶
- 修改用戶密碼
- 刪除用戶
- 給root用戶開放外網(wǎng)訪問
- 二、用戶權(quán)限操作
- 授予權(quán)限的原則
- 查看授予用戶的權(quán)限
- 給用戶添加權(quán)限
- 回收權(quán)限
一、用戶操作
先要使用root用戶登錄MySQL后在執(zhí)行后面操作
查看當(dāng)前擁有用戶
SELECT host,user,Grant_priv,Super_priv FROM mysql.user;
這里可以看到有兩個(gè)root用戶,但是運(yùn)行訪問host不同,一個(gè)host為localhost只能本地訪問,一個(gè)host為%對(duì)所有ip開放訪問。
創(chuàng)建用戶
# 語法
CREATE USER '用戶名'@'host' IDENTIFIED BY '你的密碼';
# 例:
# 創(chuàng)建test_01用戶,賦予所有IP連接權(quán)限
# 如果只想給某個(gè)IP使用可以寫成127.0.0.1,如果想給某個(gè)網(wǎng)段使用可以寫成192.168.0.%,%代表全部
CREATE USER 'test_01'@'%' IDENTIFIED BY '123456';
修改用戶密碼
# MySQL8.0
ALTER USER '用戶名'@'host' IDENTIFIED BY '新密碼' PASSWORD EXPIRE NEVER;
# MySQL8.0之前版本
SET password FOR '用戶名'@'host' = password('新密碼');
刪除用戶
# 語法
DROP USER '用戶名'@'host';
# 例:
# 刪除用戶名稱為test_01 host為%的用戶
DROP USER 'test_01'@'%';
給root用戶開放外網(wǎng)訪問
# 創(chuàng)建一個(gè)能被全部IP訪問的root用戶,MySQL相同用戶名稱但是host不同代表的是兩個(gè)不同用戶
CREATE USER 'root'@'%' IDENTIFIED BY '你的密碼';
# 賦予'root'@'%' 用戶全部權(quán)限,和授權(quán)于下一個(gè)人用戶權(quán)限的能力
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
二、用戶權(quán)限操作
授予權(quán)限的原則
(1)只授予能滿足需要的最小權(quán)限 ,防止用戶干壞事。比如用戶只是需要查詢,那就只給 select 權(quán)限就可以了,不要給用戶賦予update 、 insert 或者 delete 權(quán)限
(2)創(chuàng)建用戶的時(shí)候限制用戶的登錄主機(jī) ,一般是限制成指定 IP 或者內(nèi)網(wǎng)IP 段。
(3)為每個(gè)用戶設(shè)置滿足密碼復(fù)雜度的密碼 。
(4)定期清理不需要的用戶 ,回收權(quán)限或者刪除用戶。
# 授權(quán)語法:
# 沒有with GRANT option,被授權(quán)者無法授權(quán)于下一個(gè)人用戶
GRANT 權(quán)限列表 on 庫名.表名 to '用戶名'@'主機(jī)' [with GRANT option];
mysql用戶常用權(quán)限列表 | 說明 |
---|---|
ALL 或者ALL PRIVILEGES | 授予用戶所有權(quán)限 |
CREATE | 授予用戶創(chuàng)建新數(shù)據(jù)庫和表的權(quán)限 |
DROP | 授予用戶刪除數(shù)據(jù)庫和表的權(quán)限 |
DELETE | 授予用戶刪除表中的行的權(quán)限 |
ALTER | 授予用戶修改表結(jié)構(gòu)的權(quán)限 |
INSERT | 授予用戶在表中插入行(add)的權(quán)限 |
SELECT | 授予用戶運(yùn)行select命令以從表中讀取數(shù)據(jù)的權(quán)限 |
UPDATE | 授予用戶更新表中的數(shù)據(jù)的權(quán)限 |
查看授予用戶的權(quán)限
# 語法
SHOW GRANTS FOR '用戶名'@'host';# 例:查看用戶名root host為%
SHOW GRANTS FOR 'root'@'%';
給用戶添加權(quán)限
添加權(quán)限后最好執(zhí)行一下刷新權(quán)限操作 FLUSH PRIVILEGES;
,避免添加權(quán)限后生效不及時(shí)
# 語法
GRANT 權(quán)限類型 ON 庫.表 TO '用戶名'@'host';# 例1:給用戶test_01 host為%的用戶賦予全部權(quán)限和所有的庫所有的表
GRANT ALL PRIVILEGES ON *.* TO 'test_01'@'%';
# 例2:給用戶test_01 host為%的用戶賦予全部權(quán)限和所有的庫所有的表,并且賦予具有授予下一個(gè)人權(quán)限的權(quán)利的授權(quán)
GRANT ALL PRIVILEGES ON *.* TO 'test_01'@'%' WITH GRANT OPTION;
# 例3:給用戶test_02 host為%的用戶賦予指定權(quán)限和指定庫指定表
GRANT SELECT,INSERT ON test_02_db.test_02_table TO 'test_01'@'%';
回收權(quán)限
# 語法
REVOKE 權(quán)限類型 ON 數(shù)據(jù)庫.表 FROM '用戶名'@'host';# 例1:回收賦權(quán)權(quán)限
REVOKE GRANT OPTION ON *.* FROM 'test_01'@'%';
# 例1:回收用戶所有庫所有權(quán)限,不包含賦權(quán)權(quán)限
REVOKE ALL PRIVILEGES ON *.* FROM 'test_01'@'%';
# 例2:回收用戶所有庫的新增和修改權(quán)限
REVOKE INSERT,UPDATE ON *.* FROM 'test_01'@'%';
# 例3:回收用戶指定數(shù)據(jù)庫全部權(quán)限,前提是在賦權(quán)時(shí)只給這個(gè)用戶賦予了test_01_db庫的權(quán)限
REVOKE ALL PRIVILEGES ON test_01_db.* FROM 'test_01'@'%';