mysql8.0.30用戶與權(quán)限管理的實踐
用戶管理
登錄mysql服務(wù)器
mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL語句"
下面詳細介紹命令中的參數(shù):
- h參數(shù) 后面接主機名或者主機IP,hostname為主機,hostIP為主機IP。
- P參數(shù) 后面接MySQL服務(wù)的端口,通過該參數(shù)連接到指定的端口。MySQL服務(wù)的默認端口是3306,不使用該參數(shù)時自動連接到3306端口,port為連接的端口號。
- u參數(shù) 后面接用戶名,username為用戶名。
- p參數(shù) 會提示輸入密碼。
- DatabaseName參數(shù) 指明登錄到哪一個數(shù)據(jù)庫中。如果沒有該參數(shù),就會直接登錄到MySQL數(shù)據(jù)庫
中,然后可以使用USE命令來選擇數(shù)據(jù)庫。 - e參數(shù) 后面可以直接加SQL語句。登錄MySQL服務(wù)器以后即可執(zhí)行這個SQL語句,然后退出MySQL
服務(wù)器。
創(chuàng)建用戶
create user zhang3 identified by '123_qwerQWER'; # 默認hosts是 % flush privileges; #立即生效 --------------------------------------------------------- create user 'kangshifu'@'localhost' identified by '123_qwerQWER'; # 創(chuàng)建指定host的用戶

修改用戶
update mysql.user set user='li4' where user='zhang3'; flush privileges;

刪除用戶
drop user li4; # 默認刪除host為%的用戶 drop user 'kangshifu'@'localhost'; #指定刪除host的用戶 flush privileges; --------------------------------------------------------- delete from mysql.user where host='%' and user='zhang3'; # delete也可以刪除用戶 flush privileges;
查看用戶
select host, user from user; 或 select host, user from mysql.user;
修改用戶密碼
set password for 'zhang3'@'%'='122_qwerQWER';
權(quán)限管理
查看權(quán)限
show privileges;

- (1) CREATE和DROP權(quán)限 ,可以創(chuàng)建新的數(shù)據(jù)庫和表,或刪除(移掉)已有的數(shù)據(jù)庫和表。如果將MySQL數(shù)據(jù)庫中的DROP權(quán)限授予某用戶,用戶就可以刪除MySQL訪問權(quán)限保存的數(shù)據(jù)庫。
- (2)SELECT、INSERT、UPDATE和DELETE權(quán)限 允許在一個數(shù)據(jù)庫現(xiàn)有的表上實施操作。
- (3) SELECT權(quán)限只有在它們真正從一個表中檢索行時才被用到。
- (4) INDEX權(quán)限 允許創(chuàng)建或刪除索引,INDEX適用于已有的表。如果具有某個表的CREATE權(quán)限,就可以在CREATE TABLE語句中包括索引定義。
- (5) ALTER權(quán)限 可以使用ALTER TABLE來更改表的結(jié)構(gòu)和重新命名表。
- (6) CREATE ROUTINE權(quán)限 用來創(chuàng)建保存的程序(函數(shù)和程序),ALTER ROUTINE權(quán)限用來更改和刪除保存的程序, EXECUTE權(quán)限 用來執(zhí)行保存的程序。
- (7) GRANT權(quán)限 允許授權(quán)給其他用戶,可用于數(shù)據(jù)庫、表和保存的程序。
- (8) FILE權(quán)限 使用戶可以使用LOAD DATA INFILE和SELECT … INTO OUTFILE語句讀或?qū)懛?wù)器上的文件,任何被授予FILE權(quán)限的用戶都能讀或?qū)慚ySQL服務(wù)器上的任何文件(說明用戶可以讀任何數(shù)據(jù)庫目錄下的文件,因為服務(wù)器可以訪問這些文件)。
授予權(quán)限的原則
權(quán)限控制主要是出于安全因素,因此需要遵循以下幾個 經(jīng)驗原則 :
- 1、只授予能 滿足需要的最小權(quán)限 ,防止用戶干壞事。比如用戶只是需要查詢,那就只給select權(quán)限就可以了,不要給用戶賦予update、insert或者delete權(quán)限。
- 2、創(chuàng)建用戶的時候 限制用戶的登錄主機 ,一般是限制成指定IP或者內(nèi)網(wǎng)IP段。
- 3、為每個用戶 設(shè)置滿足密碼復(fù)雜度的密碼 。
- 4、 定期清理不需要的用戶 ,回收權(quán)限或者刪除用戶。
授予權(quán)限
注意: 命令行字母可小寫
GRANT 權(quán)限1,權(quán)限2,…權(quán)限n ON 數(shù)據(jù)庫名稱.表名稱 TO 用戶名@用戶地址 [IDENTIFIED BY ‘密碼口令'];
給li4用戶用本地命令行方式,授予atguigudb這個庫下的所有表的插刪改查的權(quán)限。
GRANT SELECT,INSERT,DELETE,UPDATE ON atguigudb.* TO li4@localhost ;授予通過網(wǎng)絡(luò)方式登錄的joe用戶 ,對所有庫所有表的全部權(quán)限,密碼設(shè)為123。注意這里唯獨不包括grant的權(quán)限
GRANT ALL PRIVILEGES ON *.* TO joe@'%' IDENTIFIED BY '123';
實例如下
grant select on atguigu.* to zhang3@%; grant select on custom.users to 'zhang3'@'%';
查看權(quán)限
show grants for 'root'@'%'\G show grants for 'zhang3'@'%'\G

收回權(quán)限
REVOKE 權(quán)限1,權(quán)限2,…權(quán)限n ON 數(shù)據(jù)庫名稱.表名稱 FROM 用戶名@用戶地址;
#收回全庫全表的所有權(quán)限 REVOKE ALL PRIVILEGES ON *.* FROM joe@'%'; #收回mysql庫下的所有表的插刪改查權(quán)限 REVOKE SELECT,INSERT,UPDATE,DELETE ON mysql.* FROM joe@localhost;
查看user 信息表結(jié)構(gòu)和信息
desc mysql.user; select * from mysql.user\G


db表
DESCRIBE mysql.db;
用戶列 db表用戶列有3個字段,分別是Host、User、Db。3個字段分別表示主機名、用戶名和數(shù)據(jù)庫名。表示從某個主機連接某個用戶對某個數(shù)據(jù)庫的操作權(quán)限,這3個字段的組合構(gòu)成了db表的主鍵。
權(quán)限列
Create_routine_priv和Alter_routine_priv這兩個字段決定用戶是否具有創(chuàng)建和修改存儲過程的權(quán)限
其他表信息、
procs_priv表 tables_priv表和 columns_priv表 需要時自行了解
角色管理
- 角色(Role),可以認為是一些權(quán)限的集合,一直是存在各個數(shù)據(jù)庫中,比如Oracle、SQL Server、OceanBase等,MySQL 自從 8.0 release 才引入角色這個概念。
- 為用戶賦予統(tǒng)一的角色,即把一個帶有某些權(quán)限集合的角色分配給一個用戶,那該用戶就擁有了該角色所包含的所有權(quán)限,權(quán)限的修改直接通過角色來進行,無需為每個用戶單獨授權(quán),大大的方便了權(quán)限管理。
創(chuàng)建角色
CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]... CREATE ROLE 'manager'@'localhost';
給角色授予權(quán)限
GRANT privileges ON table_name TO 'role_name'[@'host_name'];
查看所有權(quán)限
show privileges\G

查看角色的權(quán)限
SHOW GRANTS FOR 'manager';
回收角色的權(quán)限
REVOKE privileges ON tablename FROM 'rolename';
刪除角色
注意, 如果你刪除了角色,那么用戶也就失去了通過這個角色所獲得的所有權(quán)限 。
DROP ROLE role [,role2]... DROP ROLE 'school_read';
給用戶賦予角色
GRANT role [,role2,...] TO user [,user2,...]; GRANT 'school_read' TO 'kangshifu'@'localhost';
激活角色
show variables like 'activate_all_roles_on_login'; SET GLOBAL activate_all_roles_on_login=ON;
這條 SQL 語句的意思是,對 所有角色永久激活 。運行這條語句之后,用戶才真正擁有了賦予角色的所有
權(quán)限。

撤銷用戶的角色
REVOKE role FROM user; REVOKE 'school_read' FROM 'kangshifu'@'localhost'; SHOW GRANTS FOR 'kangshifu'@'localhost';
設(shè)置強制角色(mandatory role)

到此這篇關(guān)于mysql8.0.30用戶與權(quán)限管理的實踐的文章就介紹到這了,更多相關(guān)mysql8.0.30用戶與權(quán)限管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySql的分組函數(shù) ROLLUP 語法及完美解決方案
這篇文章總結(jié)了在MySQL中如何使用`GROUP BY`和`ROLLUP`來實現(xiàn)分組匯總,通過`WITH ROLLUP`和`GROUPING()`函數(shù),可以靈活地控制匯總級別,并使用`HAVING`子句來過濾掉中間匯總行,只保留明細和最終總計行,感興趣的朋友跟隨小編一起看看吧2026-03-03
如何創(chuàng)建一個創(chuàng)建MySQL數(shù)據(jù)庫中的datetime類型
這篇文章主要介紹了如何創(chuàng)建一個創(chuàng)建MySQL數(shù)據(jù)庫中的datetime類型,創(chuàng)建一個datetime類型的方法以及create domain 和create type的用法和區(qū)別,需要的朋友可以參考一下2022-03-03
MySQL數(shù)據(jù)庫備份的四種常用方式與選型指南
MySQL備份是數(shù)據(jù)庫管理的核心環(huán)節(jié)之一,通過備份能夠有效地防止數(shù)據(jù)丟失,確保數(shù)據(jù)的安全和恢復(fù)能力,備份的方式多種多樣,以下是四種常見的MySQL備份表的方式,涵蓋從簡單的命令行工具到復(fù)雜的二進制日志備份,供不同場景下使用,需要的朋友可以參考下2026-04-04
MySQL 啟動失敗(code=exited, status=1/FAILURE)異常解決方案
在MySQL服務(wù)啟動時遇到啟動失敗問題,通過查看和分析錯誤日志文件,找到并解決了配置文件中的錯誤項,成功重啟了MySQL服務(wù).文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11

