MySQL 升级后pam-mysql 验证失效的解决办法 

昨天把mysql升级到了5.5.9版本,忽然发现ftp登录不了了……由于我的vsftpd是用pam-mysql验证用户的,怀疑可能是这方面出现了问题.

一一尝试:

1.首先,怀疑是pam-mysql 用来访问vsftpd.users 表的用户ftp 权限不够,

重新授权.
grant all on vsftpd.users to 'ftp'@'localhost' identified by 'XXXX';

flush privileges;
刷新权限表。

尝试ftp登录,还是失败。我用 ftp 身份本地登录mysql,一切正常.看来不是这个问题.

2.怀疑是pam-mysql 口令加密方式有问题。把配置中的crypt=2 改成 明文(0).尝试登录,还是失败。再改回来,用PASSWORD()函数重新设密码,还是失败.

3.难道又是localhost 和 127.0.0.1 的问题?都授权了一下,还是登不进。我擦~

4.不会是pam-mysql不兼容现在的mysql吧?!我倒吸了一口凉气。好在编译安装pam-mysql不是很麻烦,赶紧动手.

下载源码包,解压,进入目录,
./configure --with-mysql=/usr/local/mysql #只要这一句
直接make.

备份之前旧版本的pam-mysql.so 文件.
mv /lib/security/pam_mysql.so /lib/security/pam_mysql.so.old

复制新生成的pam-mysql 模块到 /lib/security 目录下.
cp ./.lib/pam_mysql.so /lib/security/

别忘了重新ld链接下.
ldconfig -v

别的什么也不要改,重启vsftpd.

再次尝试登录ftp,成功了~

我擦,真是pam-mysql 的原因.

评论