Mysql中的用戶管理實踐
13. 用戶管理
為什么不能只用 root: 出于安全考慮,不應(yīng)該所有操作都由 root 執(zhí)行。
MySQL 的用戶信息存儲位置: mysql.user 表。
13.1 用戶
?? 13.1.1 用戶信息
- 用戶表字段解釋:
host: 可以從哪臺主機登錄。user: 用戶名。authentication_string: 加密后的密碼。*_priv: 用戶權(quán)限。
select User,Host,authentication_string from user;

?? 13.1.2 創(chuàng)建用戶
語法:
create user '用戶名'@'主機名' identified by '密碼';
示例:
create user 'maomi-9527'@'localhost' identified by '666888';

?? 13.1.3 刪除用戶
正確語法:
drop user '用戶名'@'主機名';
常見錯誤:
drop user maomi-9527; -- 錯誤,因為主機名默認(rèn)是 %
原因:
mysql可以創(chuàng)建兩個相同用戶相同密碼但登錄地點不一樣的用戶:

?? 13.1.4 修改用戶密碼
自己改密碼:
set password = password('新密碼');root 改指定用戶密碼:
set password for 'maomi-9527'@'localhost' = password('666888');由于在 MySQL 中,用戶信息本質(zhì)上是存儲在 mysql.user 表中的,因此我們也可以直接通過 SQL 語句修改該表的內(nèi)容來重設(shè)密碼。例如:
UPDATE user SET authentication_string = PASSWORD('你的新密碼') WHERE user = 'root' AND host = 'localhost';
?? 13.1.5 密碼策略要求
MySQL 8.0+ 版本默認(rèn)啟用了 validate_password 插件,它會根據(jù)以下規(guī)則檢查密碼強度:
- 密碼長度:默認(rèn)要求密碼至少為 8 個字符。
- 字符復(fù)雜度:
- 至少包含一個大寫字母(A-Z)。
- 至少包含一個小寫字母(a-z)。
- 至少包含一個數(shù)字(0-9)。
- 至少包含一個特殊字符(例如
@,#,$,%)。

1. 設(shè)置一個更強的密碼
你可以設(shè)置一個符合強度要求的密碼,例如:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
或者:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Str0ngP@ssw0rd!';
2. 臨時降低密碼策略要求
如果你不想設(shè)置那么復(fù)雜的密碼,可以通過降低密碼策略要求來解決。執(zhí)行以下命令來臨時降低要求:
SET GLOBAL validate_password_policy = LOW;-------------------設(shè)置密碼強度為低 SET GLOBAL validate_password_length = 6;----------------------設(shè)置密碼長度為6 SET GLOBAL validate_password_mixed_case_count = 0;------------設(shè)置混合字符為0 SET GLOBAL validate_password_special_char_count = 0; --------設(shè)置特殊字符個數(shù)為0
然后,你就可以設(shè)置一個簡單的密碼了:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'simplepass';

注意: 降低密碼策略可能會影響安全性,操作完成后可以將策略恢復(fù):
SET GLOBAL validate_password_policy = MEDIUM;-------------------設(shè)置密碼強度為低 SET GLOBAL validate_password_length = 8;----------------------設(shè)置密碼長度為6 SET GLOBAL validate_password_mixed_case_count = 1;------------設(shè)置混合字符為0 SET GLOBAL validate_password_special_char_count = 1; --------設(shè)置特殊字符個數(shù)為0
3. 查看當(dāng)前密碼策略
你可以通過以下命令查看當(dāng)前密碼策略的設(shè)置:
SHOW VARIABLES LIKE 'validate_password%';
13.2 數(shù)據(jù)庫的權(quán)限
?? 常見權(quán)限:
select, insert, update, delete, create, drop, grant, all 等。
?? 13.2.1 授權(quán)
授權(quán)語法:
grant 權(quán)限列表 on 數(shù)據(jù)庫.表 to '用戶名'@'主機' [identified by '密碼'];
示例:
grant select on text.* to 'maomi-9527'@'localhost';------給用戶在test數(shù)據(jù)庫中所有表的查看權(quán)限
賦權(quán)前:

賦權(quán)后:

查看當(dāng)前權(quán)限:
show grants for 'maomi-9527'@'localhost';

?? 13.2.2 回收權(quán)限
撤銷語法:
revoke 權(quán)限列表 on 數(shù)據(jù)庫.對象 from '用戶名'@'主機';
示例:
revoke select on text.* from 'maomi-9527'@'localhost';

?? 常見問題提示:
若密碼設(shè)置失敗報錯 ERROR 1819:
SHOW VARIABLES LIKE 'validate_password%';
可調(diào)整密碼策略來解決。
賦權(quán)后無效時建議:
flush privileges;
到此這篇關(guān)于Mysql中的用戶管理的文章就介紹到這了,更多相關(guān)mysql用戶管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux系統(tǒng)下自行編譯安裝MySQL及基礎(chǔ)配置全過程解析
這篇文章主要介紹了Linux系統(tǒng)下自行編譯安裝MySQL及基礎(chǔ)配置全過程解析,配置方面主要針對InnoDB引擎來講,需要的朋友可以參考下2016-02-02
解決mysql.server?start執(zhí)行報錯ERROR!The?server?quit?without?u
這篇文章主要介紹了解決mysql.server?start執(zhí)行報錯ERROR!The?server?quit?without?updating?PID?file問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09

