本篇文章給大家?guī)砹薽ysql中賬戶的權(quán)限的相關(guān)問題,當(dāng)用戶執(zhí)行任何數(shù)據(jù)庫(kù)操作時(shí),服務(wù)器將會(huì)驗(yàn)證用戶是否具有相應(yīng)的權(quán)限,例如查詢表需要 SELECT 權(quán)限,刪除對(duì)象需要 DROP 權(quán)限。希望對(duì)大家有幫助。
當(dāng)客戶端連接 MySQL 服務(wù)器時(shí),必須提供有效的身份認(rèn)證,例如用戶名和密碼。當(dāng)用戶執(zhí)行任何數(shù)據(jù)庫(kù)操作時(shí),服務(wù)器將會(huì)驗(yàn)證用戶是否具有相應(yīng)的權(quán)限,例如查詢表需要 SELECT 權(quán)限,刪除對(duì)象需要 DROP 權(quán)限。
為了方便用戶權(quán)限的管理,MySQL 8.0 提供了角色的功能。角色(Role)是一組權(quán)限的集合。
本篇我們討論 MySQL 中的賬戶和權(quán)限的管理。
5.1 管理用戶
5.1.1 創(chuàng)建用戶
MySQL 使用 CREATE USER 語(yǔ)句創(chuàng)建用戶,基本語(yǔ)法如下:
CREATE USER [IF NOT EXISTS] account_name IDENTIFIED BY 'password';
其中,account_name 是賬戶名稱;賬戶名稱分為兩個(gè)部分:用戶名(user_name)和主機(jī)名(host_name),使用 % 連接。IDENTIFIED BY 用于指定用戶的密碼。IF NOT EXISTS 用于避免創(chuàng)建重名賬戶時(shí)產(chǎn)生錯(cuò)誤信息。
以下語(yǔ)句創(chuàng)建一個(gè)新的用戶 dev01,它可以從本機(jī)登錄(localhost):
mysql> CREATE USER dev01@localhost IDENTIFIED BY 'Dev01@mysql'; Query OK, 0 rows affected (0.21 sec)
MySQL 中的賬戶由用戶名和主機(jī)名共同決定,主機(jī) office.example.com 上的 dev01 和主機(jī) home.example.com 上的 dev01 是兩個(gè)賬戶。如果不指定主機(jī)名,表示用戶可以從任何主機(jī)登錄:
user_name user_name@%
% 是通配符,表示任何字符串;另外,_ 表示任意單個(gè)字符。
如果用戶名或主機(jī)名中包含特殊字符,例如空格或者 – ,需要使用引號(hào)分別引用這兩部分內(nèi)容:
'user-name'@'host-name'
除了單引號(hào)之外,也可以使用反引號(hào)(`)或者雙引號(hào)(")。
MySQL 中的賬戶信息存儲(chǔ)在系統(tǒng)數(shù)據(jù)庫(kù) mysql 的 user 表中:
mysql> select host, user from mysql.user; +-----------+------------------+ | host | user | +-----------+------------------+ | localhost | dev01 | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+------------------+ 5 rows in set (0.00 sec)
除了 dev01@localhost 之外,其他 4 個(gè)用戶都是初始化創(chuàng)建的系統(tǒng)用戶。
除了基本語(yǔ)法之外,創(chuàng)建用戶時(shí)還可以指定