在my.cnf中設定後重開:
- [mysqld]
- plugin-load=authentication_pam.so
在/etc/pam.d中新增一個文件,名稱與服務相同(若服務為mysql檔名就叫mysql,若叫mysqld就叫mysqld)
- vim /etc/pam.d/mysql
-
- #%PAM-1.0
- auth include password-auth
- account include password-auth
如果可以讓使用都屬在mysql的群組中,不行的話就要透過proxy來mapping使用者
- mysql> create user 'wang'@'127.0.0.1' IDENTIFIED WITH authentication_pam as 'mysql';
^^^後面as 'mysql'這個就是pam.d裡面設的那個檔案名稱
記得權限要另外設定 |
- 登入時一直出現ERROR 1045 (28000): Access denied for user 'wang'@'127.0.0.1' (using password: YES),在/var/log/security中記錄:
- Jun 18 19:23:31 ol65 unix_chkpwd[7097]: check pass; user unknown
- Jun 18 19:23:31 ol65 unix_chkpwd[7099]: check pass; user unknown
- Jun 18 19:23:31 ol65 unix_chkpwd[7099]: password check failed for user (wang)
- 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
-
- 這個原因是mysql這個服務的權限無法讀取/etc/shadow的內容導致的問題,解法:
- [root@ol65 pam.d]# chown root:mysql /etc/shadow
- [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:
- [root@mysql-course percona57]# usermod -a -G shadow mysql
- [root@mysql-course percona57]# grep 'shadow' /etc/group
- shadow:x:985:mysql
- [root@mysql-course mysql-ee]# ls -alh /etc/shadow
- ----r----- 1 root shadow 1.4K Feb 20 14:58 /etc/shadow
- [root@mysql-course percona57]# mysql.server restart (記得要重啟mysqld服務才會生效)
留言
張貼留言