本篇文章給大家帶來了mysql中賬戶的權限的相關問題,當用戶執行任何數據庫操作時,服務器將會驗證用戶是否具有相應的權限,例如查詢表需要 SELECT 權限,刪除對象需要 DROP 權限。希望對大家有幫助。
當客戶端連接 MySQL 服務器時,必須提供有效的身份認證,例如用戶名和密碼。當用戶執行任何數據庫操作時,服務器將會驗證用戶是否具有相應的權限,例如查詢表需要 SELECT 權限,刪除對象需要 DROP 權限。
為了方便用戶權限的管理,MySQL 8.0 提供了角色的功能。角色(Role)是一組權限的集合。
本篇我們討論 MySQL 中的賬戶和權限的管理。
5.1 管理用戶
5.1.1 創建用戶
MySQL 使用 CREATE USER 語句創建用戶,基本語法如下:
CREATE USER [IF NOT EXISTS] account_name IDENTIFIED BY 'password';
其中,account_name 是賬戶名稱;賬戶名稱分為兩個部分:用戶名(user_name)和主機名(host_name),使用 % 連接。IDENTIFIED BY 用于指定用戶的密碼。IF NOT EXISTS 用于避免創建重名賬戶時產生錯誤信息。
以下語句創建一個新的用戶 dev01,它可以從本機登錄(localhost):
mysql> CREATE USER dev01@localhost IDENTIFIED BY 'Dev01@mysql'; Query OK, 0 rows affected (0.21 sec)
MySQL 中的賬戶由用戶名和主機名共同決定,主機 office.example.com 上的 dev01 和主機 home.example.com 上的 dev01 是兩個賬戶。如果不指定主機名,表示用戶可以從任何主機登錄:
user_name user_name@%
% 是通配符,表示任何字符串;另外,_ 表示任意單個字符。
如果用戶名或主機名中包含特殊字符,例如空格或者 – ,需要使用引號分別引用這兩部分內容:
'user-name'@'host-name'
除了單引號之外,也可以使用反引號(`)或者雙引號(")。
MySQL 中的賬戶信息存儲在系統數據庫 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 個用戶都是初始化創建的系統用戶。
除了基本語法之外,創建用戶時還可以指定