mysql 8.* 使用者許可權操作
參考程式碼:
-- 使用mysql資料庫 USE mysql -- 建立使用者 CREATE USER myuser IDENTIFIED BY 'mypass'; -- 檢視使用者 SELECT user, host, authentication_string FROM USER WHERE USER='myuser';
-- 修改使用者密碼
update user set authentication_string='' where user='myuser';
ALTER USER 'myuser'@'%' IDENTIFIED BY 'mypass';
-- 刪除使用者
DROP USER myuser;
-- 檢視許可權 SHOW GRANTS FOR myuser; -- 授予許可權 -- grant all privileges on databasename.tablename to 'user'@'host' identified by 'password'; -- 授予myuser使用者全域性級全部許可權: GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypass' WITH GRANT OPTION; -- 授予myuser使用者針對testdb資料庫全部許可權: GRANT ALL PRIVILEGES ON testdb.* TO 'myuser' -- 生效(重新整理許可權) FLUSH PRIVILEGES;-- 撤銷許可權
-- revoke privileges on databasename.tablename from 'username'@'host'; REVOKE ALL PRIVILEGES FROM myuser;
GRANT命令說明:
priveleges(許可權列表),可以是all priveleges, 表示所有許可權,也可以是select、update等許可權,多個許可權的名詞,相互之間用逗號分開。
on用來指定許可權針對哪些庫和表。
*.*中前面的*號用來指定資料庫名,後面的*號用來指定表名。
to表示將許可權賦予某個使用者,@後面接限制的主機,可以是IP,IP段,域名以及%,%表示任何地方。注意:這裡%有的版本不包括本地,以前碰到過給某個使用者設定了%允許任何地方登入,但是在本地登入不了,這個和版本有關係,遇到這個問題再加一個localhost的使用者就可以了。
identified by指定使用者的登入密碼,該項可以省略。
WITH GRANT OPTION這個選項表示該使用者可以將自己擁有的許可權授權給別人。注意:經常有人在建立操作使用者的時候不指定WITH GRANT OPTION選項導致後來該使用者不能使用GRANT命令建立使用者或者給其它使用者授權。
備註:可以使用GRANT重複給使用者新增許可權,許可權疊加,比如你先給使用者新增一個select許可權,然後又給使用者新增一個insert許可權,那麼該使用者就同時擁有了select和insert許可權。
授權原則說明:
許可權控制主要是出於安全因素,因此需要遵循一下幾個經驗原則:
a、只授予能滿足需要的最小許可權,防止使用者幹壞事。比如使用者只是需要查詢,那就只給select許可權就可以了,不要給使用者賦予update、insert或者delete許可權。
b、建立使用者的時候限制使用者的登入主機,一般是限制成指定IP或者內網IP段。
c、初始化資料庫的時候刪除沒有密碼的使用者。安裝完資料庫的時候會自動建立一些使用者,這些使用者預設沒有密碼。
d、為每個使用者設定滿足密碼複雜度的密碼。
e、定期清理不需要的使用者。回收許可權或者刪除使用者。