MySQL PAM Plugin設定

  • 安裝
在my.cnf中設定後重開:
  1. [mysqld]
  2. plugin-load=authentication_pam.so
  • 在Linux中設定
在/etc/pam.d中新增一個文件,名稱與服務相同(若服務為mysql檔名就叫mysql,若叫mysqld就叫mysqld)
  1. vim /etc/pam.d/mysql
  2.  
  3. #%PAM-1.0
  4. auth include password-auth
  5. account include password-auth
  • 使用PAM來登入MySQL
如果可以讓使用都屬在mysql的群組中,不行的話就要透過proxy來mapping使用者
  1. mysql> create user 'wang'@'127.0.0.1' IDENTIFIED WITH authentication_pam as 'mysql';

     ^^^後面as 'mysql'這個就是pam.d裡面設的那個檔案名稱

記得權限要另外設定

  • 除錯
  1. 登入時一直出現ERROR 1045 (28000): Access denied for user 'wang'@'127.0.0.1' (using password: YES),在/var/log/security中記錄:
  2. Jun 18 19:23:31 ol65 unix_chkpwd[7097]: check pass; user unknown
  3. Jun 18 19:23:31 ol65 unix_chkpwd[7099]: check pass; user unknown
  4. Jun 18 19:23:31 ol65 unix_chkpwd[7099]: password check failed for user (wang)
  5. Jun 18 19:23:31 ol65 mysqld: pam_unix(mysql:auth): authentication failure; logname= uid=496 euid=496 tty= ruser=wang rhost=127.0.0.1  user=wang
  6.  
  7. 這個原因是mysql這個服務的權限無法讀取/etc/shadow的內容導致的問題,解法:
  8. [root@ol65 pam.d]# chown root:mysql /etc/shadow
  9. [root@ol65 pam.d]# chmod g+r /etc/shadow

參考https://revolutionanalytics.zendesk.com/entries/83870646-Configuring-PAM-authentication-on-Red-Hat-Enterprise-Linux-6-5-on-AWS

2017/2/20更新:
之前的解法是直接把/etc/shadow這個檔案的群組設給mysql有權限去讀,顯然不是個好做法 本次更新將mysql這個使用者加到shadow的群組之下,並將/etc/shadow的群組權限給shadow:
  1. [root@mysql-course percona57]# usermod -a -G shadow mysql
  2. [root@mysql-course percona57]# grep 'shadow' /etc/group
  3. shadow:x:985:mysql
  4. [root@mysql-course mysql-ee]# ls -alh /etc/shadow
  5. ----r----- 1 root shadow 1.4K Feb 20 14:58 /etc/shadow
  6. [root@mysql-course percona57]# mysql.server restart (記得要重啟mysqld服務才會生效)

留言

這個網誌中的熱門文章

MySQL監控軟體MEM及PMM介紹

MySQL Router 設定檔說明

【工作筆記】SQL Timeout追蹤