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報錯Duplicate entry ‘xxx‘ for key&nbs
有時候?qū)Ρ磉M行操作,例如加唯一鍵,或者插入數(shù)據(jù),會報錯,本文就來介紹一下mysql報錯Duplicate entry ‘xxx‘ for key ‘字段名‘的解決方法,感興趣的可以了解一下2023-10-10MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的區(qū)別
本文給大家分享的是mysql索引中的KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的區(qū)別,即主鍵索引,唯一索引和普通索引的區(qū)別,希望大家能夠喜歡2017-07-07mysql數(shù)據(jù)庫單表最大存儲依據(jù)詳解
這篇文章主要為大家介紹了mysql數(shù)據(jù)庫單表最大存儲的依據(jù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07MySQL在Centos7環(huán)境安裝的完整步驟記錄
在CentOS7環(huán)境下安裝MySQL是一項常見的任務(wù),尤其對于那些沒有網(wǎng)絡(luò)連接或者需要在隔離環(huán)境中的開發(fā)者來說,離線安裝MySQL顯得尤為重要,這篇文章主要介紹了MySQL在Centos7環(huán)境安裝的完整步驟,需要的朋友可以參考下2024-10-10MYSQL時區(qū)導(dǎo)致時間差了14或13小時的解決方法
本文主要介紹了MYSQL時區(qū)導(dǎo)致時間差了14或13小時的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2023-01-01