mysql8.0.30用戶與權(quán)限管理的實(shí)踐
用戶管理
登錄mysql服務(wù)器
mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL語(yǔ)句"
下面詳細(xì)介紹命令中的參數(shù):
- h參數(shù) 后面接主機(jī)名或者主機(jī)IP,hostname為主機(jī),hostIP為主機(jī)IP。
- P參數(shù) 后面接MySQL服務(wù)的端口,通過(guò)該參數(shù)連接到指定的端口。MySQL服務(wù)的默認(rèn)端口是3306,不使用該參數(shù)時(shí)自動(dòng)連接到3306端口,port為連接的端口號(hào)。
- u參數(shù) 后面接用戶名,username為用戶名。
- p參數(shù) 會(huì)提示輸入密碼。
- DatabaseName參數(shù) 指明登錄到哪一個(gè)數(shù)據(jù)庫(kù)中。如果沒(méi)有該參數(shù),就會(huì)直接登錄到MySQL數(shù)據(jù)庫(kù)
中,然后可以使用USE命令來(lái)選擇數(shù)據(jù)庫(kù)。 - e參數(shù) 后面可以直接加SQL語(yǔ)句。登錄MySQL服務(wù)器以后即可執(zhí)行這個(gè)SQL語(yǔ)句,然后退出MySQL
服務(wù)器。
創(chuàng)建用戶
create user zhang3 identified by '123_qwerQWER'; # 默認(rèn)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; # 默認(rèn)刪除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ù)庫(kù)和表,或刪除(移掉)已有的數(shù)據(jù)庫(kù)和表。如果將MySQL數(shù)據(jù)庫(kù)中的DROP權(quán)限授予某用戶,用戶就可以刪除MySQL訪問(wèn)權(quán)限保存的數(shù)據(jù)庫(kù)。
- (2)SELECT、INSERT、UPDATE和DELETE權(quán)限 允許在一個(gè)數(shù)據(jù)庫(kù)現(xiàn)有的表上實(shí)施操作。
- (3) SELECT權(quán)限只有在它們真正從一個(gè)表中檢索行時(shí)才被用到。
- (4) INDEX權(quán)限 允許創(chuàng)建或刪除索引,INDEX適用于已有的表。如果具有某個(gè)表的CREATE權(quán)限,就可以在CREATE TABLE語(yǔ)句中包括索引定義。
- (5) ALTER權(quán)限 可以使用ALTER TABLE來(lái)更改表的結(jié)構(gòu)和重新命名表。
- (6) CREATE ROUTINE權(quán)限 用來(lái)創(chuàng)建保存的程序(函數(shù)和程序),ALTER ROUTINE權(quán)限用來(lái)更改和刪除保存的程序, EXECUTE權(quán)限 用來(lái)執(zhí)行保存的程序。
- (7) GRANT權(quán)限 允許授權(quán)給其他用戶,可用于數(shù)據(jù)庫(kù)、表和保存的程序。
- (8) FILE權(quán)限 使用戶可以使用LOAD DATA INFILE和SELECT … INTO OUTFILE語(yǔ)句讀或?qū)懛?wù)器上的文件,任何被授予FILE權(quán)限的用戶都能讀或?qū)慚ySQL服務(wù)器上的任何文件(說(shuō)明用戶可以讀任何數(shù)據(jù)庫(kù)目錄下的文件,因?yàn)榉?wù)器可以訪問(wèn)這些文件)。
授予權(quán)限的原則
權(quán)限控制主要是出于安全因素,因此需要遵循以下幾個(gè) 經(jīng)驗(yà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)限
注意: 命令行字母可小寫(xiě)
GRANT 權(quán)限1,權(quán)限2,…權(quán)限n ON 數(shù)據(jù)庫(kù)名稱.表名稱 TO 用戶名@用戶地址 [IDENTIFIED BY ‘密碼口令'];
給li4用戶用本地命令行方式,授予atguigudb這個(gè)庫(kù)下的所有表的插刪改查的權(quán)限。
GRANT SELECT,INSERT,DELETE,UPDATE ON atguigudb.* TO li4@localhost ;
授予通過(guò)網(wǎng)絡(luò)方式登錄的joe用戶 ,對(duì)所有庫(kù)所有表的全部權(quán)限,密碼設(shè)為123。注意這里唯獨(dú)不包括grant的權(quán)限
GRANT ALL PRIVILEGES ON *.* TO joe@'%' IDENTIFIED BY '123';
實(shí)例如下
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ù)庫(kù)名稱.表名稱 FROM 用戶名@用戶地址;
#收回全庫(kù)全表的所有權(quán)限 REVOKE ALL PRIVILEGES ON *.* FROM joe@'%'; #收回mysql庫(kù)下的所有表的插刪改查權(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個(gè)字段,分別是Host、User、Db。3個(gè)字段分別表示主機(jī)名、用戶名和數(shù)據(jù)庫(kù)名。表示從某個(gè)主機(jī)連接某個(gè)用戶對(duì)某個(gè)數(shù)據(jù)庫(kù)的操作權(quán)限,這3個(gè)字段的組合構(gòu)成了db表的主鍵。
權(quán)限列
Create_routine_priv和Alter_routine_priv這兩個(gè)字段決定用戶是否具有創(chuàng)建和修改存儲(chǔ)過(guò)程的權(quán)限
其他表信息、
procs_priv表 tables_priv表和 columns_priv表 需要時(shí)自行了解
角色管理
- 角色(Role),可以認(rèn)為是一些權(quán)限的集合,一直是存在各個(gè)數(shù)據(jù)庫(kù)中,比如Oracle、SQL Server、OceanBase等,MySQL 自從 8.0 release 才引入角色這個(gè)概念。
- 為用戶賦予統(tǒng)一的角色,即把一個(gè)帶有某些權(quán)限集合的角色分配給一個(gè)用戶,那該用戶就擁有了該角色所包含的所有權(quán)限,權(quán)限的修改直接通過(guò)角色來(lái)進(jìn)行,無(wú)需為每個(gè)用戶單獨(dú)授權(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';
刪除角色
注意, 如果你刪除了角色,那么用戶也就失去了通過(guò)這個(gè)角色所獲得的所有權(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 語(yǔ)句的意思是,對(duì) 所有角色永久激活 。運(yùn)行這條語(yǔ)句之后,用戶才真正擁有了賦予角色的所有
權(quán)限。
撤銷用戶的角色
REVOKE role FROM user; REVOKE 'school_read' FROM 'kangshifu'@'localhost'; SHOW GRANTS FOR 'kangshifu'@'localhost';
設(shè)置強(qiáng)制角色(mandatory role)
到此這篇關(guān)于mysql8.0.30用戶與權(quán)限管理的實(shí)踐的文章就介紹到這了,更多相關(guān)mysql8.0.30用戶與權(quán)限管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql報(bào)錯(cuò)Duplicate entry ‘xxx‘ for key&nbs
有時(shí)候?qū)Ρ磉M(jìn)行操作,例如加唯一鍵,或者插入數(shù)據(jù),會(huì)報(bào)錯(cuò),本文就來(lái)介紹一下mysql報(bào)錯(cuò)Duplicate entry ‘xxx‘ for key ‘字段名‘的解決方法,感興趣的可以了解一下2023-10-10MySQL主從復(fù)制的原理圖解及Java語(yǔ)言示例使用
這篇文章主要介紹了MySQL的主從復(fù)制原理詳細(xì)分析,讀寫(xiě)分離是基于主從復(fù)制來(lái)實(shí)現(xiàn)的。文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08mysql下怎樣運(yùn)行腳本以運(yùn)行niuzi.sql為例
mysql下運(yùn)行腳本,有兩種方法,都是在命令行下進(jìn)行的,需要的朋友可以記錄下2014-07-07MySQL給查詢記錄增加序列號(hào)的實(shí)現(xiàn)方法
這篇文章主要介紹了MySQL給查詢記錄增加序列號(hào)的實(shí)現(xiàn)方法,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的參考價(jià)值,需要的朋友可以參考下2023-11-11MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的區(qū)別
本文給大家分享的是mysql索引中的KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的區(qū)別,即主鍵索引,唯一索引和普通索引的區(qū)別,希望大家能夠喜歡2017-07-07如何添加一個(gè)mysql用戶并給予權(quán)限詳解
在很多時(shí)候我們并不會(huì)直接利用mysql的root用戶進(jìn)行項(xiàng)目的開(kāi)發(fā),一般我們都會(huì)創(chuàng)建一個(gè)具有部分權(quán)限的用戶,下面這篇文章主要給大家介紹了關(guān)于如何添加一個(gè)mysql用戶并給予權(quán)限的相關(guān)資料,需要的朋友可以參考下2023-03-03mysql數(shù)據(jù)庫(kù)單表最大存儲(chǔ)依據(jù)詳解
這篇文章主要為大家介紹了mysql數(shù)據(jù)庫(kù)單表最大存儲(chǔ)的依據(jù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07MySQL在Centos7環(huán)境安裝的完整步驟記錄
在CentOS7環(huán)境下安裝MySQL是一項(xiàng)常見(jiàn)的任務(wù),尤其對(duì)于那些沒(méi)有網(wǎng)絡(luò)連接或者需要在隔離環(huán)境中的開(kāi)發(fā)者來(lái)說(shuō),離線安裝MySQL顯得尤為重要,這篇文章主要介紹了MySQL在Centos7環(huán)境安裝的完整步驟,需要的朋友可以參考下2024-10-10MYSQL時(shí)區(qū)導(dǎo)致時(shí)間差了14或13小時(shí)的解決方法
本文主要介紹了MYSQL時(shí)區(qū)導(dǎo)致時(shí)間差了14或13小時(shí)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01