目錄
查看用戶賬戶設置
連接
1.本地連接
2.遠程連接
賬戶
角色
操作用戶賬戶和角色
配置口令和賬戶有效期限
手工使口令過期
配置口令有效期限
PAM身份驗證插件
客戶端連接:使用 PAM 賬戶登錄
在連接到MySQL服務器并執行查詢時,會驗證你的身份并為您的活動授權。
查看用戶賬戶設置
查詢mysql數據庫以查看user標識信息:SELECT user, host, authentication_string?FROM mysql.user;
- user:此賬戶上的用戶名。
- host:用戶可以連接的DNS主機名或IP地址。
- authentication_string:用戶必須對該賬戶提供的口令,是加密的(AES加密算法)。
連接
1.本地連接
要使用mysql客戶機連接到本地服務器,為要使用的帳戶指定用戶名和口令:
mysql -u username -ppassword -h localhost
默認主機名是localhost(127.0.0.1/::1),表示本機套接字連接。
mysql.user 表包含具有正確口令的 username@localhost 帳戶。
2.遠程連接
要連接到未安裝在客戶端本地主機上的服務器,必須提供要連接的服務器的主機名:
mysql -u username -ppassword -h servername
mysql.user 表中與用戶關聯的主機名是指發起連接的客戶端主機的名稱,而不是服務器主機的名稱。
賬戶
賬戶名由用戶名(可以不唯一,長度最長32個字符)和連接到客戶端主機的名稱或IP地址組成。
使用 create user 用戶@主機名?identified by '口令'?創建賬戶,不要創建無口令和匿名帳戶,避免通配符的使用。
角色
角色是一組權限的集合,可以更加方便地添加、刪除和管理授權。角色類似于用戶,存儲在 mysql.users 表中,角色名由用戶和主機組成,但不能像用戶一樣登錄,可以將一個用戶賬戶角色授予另一個用戶。
使用 create role 用戶@主機名 創建一個或多個角色。角色是作為一個特殊類型的賬戶創建的,沒有口令,被鎖定無法登錄,而且指定了默認的驗證插件。
操作用戶賬戶和角色
- 使用 rename?user 用戶@主機名 to?用戶@主機名 語句重命名賬戶和角色。
- 使用 drop user/role?用戶@主機名 語句刪除用戶賬戶和角色。
配置口令和賬戶有效期限
- 創建用戶時使用?create user 用戶@主機名?identified by '口令';設置賬戶口令。
- 更改現有用戶使用?alter user 用戶@主機名?identified by '新口令';
- 更改當前用戶口令:alter user user()?用戶@主機名?identified by '新口令';
- 使用?mysqladmin -u 用戶 -p password '新口令';也可更改口令。
手工使口令過期
- 創建口令過期賬戶:CREATE USER 用戶@主機名 IDENTIFIED BY '口令' PASSWORD EXPIRE; 在新用戶第一次登錄時需要重新設置密碼。
- 使用戶口令過期:ALTER USER?用戶@主機名 PASSWORD EXPIRE;(追加 ACCOUNT LOCK 還可以使用戶鎖定)
配置口令有效期限
- 使用 default_password_lifetime 全局變量指定多少天后必須要更改口令,默認為0,表示口令長期有效。
- 創建用戶時配置:CREATE USER 'user'@'host' IDENTIFIED BY '口令' PASSWORD EXPIRE INTERVAL 30 DAY;?
- 將默認口令有效期應用于賬戶:ALTER USER 'user'@'host'?PASSWORD EXPIRE DEFAULT;
- 禁用自動的賬戶失效:ALTER USER 'user'@'host' PASSWORD EXPIRE NEVER;
PAM身份驗證插件
PAM 身份驗證插件是一個企業版插件,可根據操作系統對MySQL 帳戶進行身份驗證。
PAM 定義了配置身份驗證的服務,這些服務存儲在 /etc/pam.d 中 ,每個服務對應一個文件。
MySQL客戶端 → MySQL服務器 → PAM插件 → /etc/pam.d/mysql-pam → 操作系統認證
(1)直接映射:要創建直接映射到操作系統用戶的 MySQL 用戶,使用語句:
CREATE USER bob@localhost IDENTIFIED WITH authentication_pam AS 'mysql-pam';
用戶:bob,主機:localhost,插件:authentication_pam,驗證字符串:mysql-pam。
- 用戶?
bob@localhost
?必須同時是操作系統用戶 - 密碼驗證完全由操作系統處理
- 口令不存儲在MySQL 的?
mysql.user
?表中,它是操作系統驗證口令。 - 用戶只能使用操作系統密碼登錄
(2)組映射代理:創建一個使用PAM并從OS操作系統組映射到MySQL用戶的匿名代理用戶:
CREATE USER ''@''IDENTIFIED WITH authentication_pam AS 'mysql-pam, www=webuser, root=root';
- 匿名用戶賬戶(
''@''
)作為代理 - 根據操作系統組自動映射到不同 MySQL 賬戶:操作系統 www 組的成員映射到MySQL webuser 帳戶,root組的成員映射到MySQL root 帳戶。
- 代理用戶必須對映射的帳戶具有PROXY權限:
GRANT PROXY ON webuser@localhost TO ''@'';
GRANT PROXY ON root@localhost TO ''@'';
客戶端連接:使用 PAM 賬戶登錄
MySQL 將從客戶端收到的用戶名和口令傳遞給PAM,PAM針對操作系統進行身份驗證。
(1)PAM 只能處理純文本的口令,必須啟用明文客戶端身份驗證插件:
mysql --enable-cleartext-plugin -u username -p
(2)連接示例:代理用戶采用映射帳戶的身份。示例:Anne 不是MySQL 用戶,但在操作系統的www組中:
# 直接映射用戶連接
mysql --enable-cleartext-plugin -u os_user -p# 組映射用戶連接(用戶 anne 屬于 www 組)
mysql --enable-cleartext-plugin -u anne -p
Anne 的客戶端現在使用webuser@localhost 帳戶的權限登錄。