open***的认证有很多方式,比如证书认证,用户名密码认证,而用户名密码认证也可用通过两种方式实现,一是使用pam_mysql实现open***利用mysql认证,二是使用radius实现open***利用mysql认证,网上这种配置都很多。但是照着做会出现很多问题,这边就记录一下, 使用pam_mysql实现open***利用mysql认证;

实验环境:
os:centos 5.5
open***:open***-2.1.4
mysql:mysql-5.1.50
pam_mysql:pam_mysql-0.7RC1
openssl:openssl-1.0.0d
lzo:lzo-2.02-3.el5.kb.i386.rpm、lzo-devel-2.03-6.el5.i386.rpm
以上使用的软件,除lzo外都使用源码包安装。

步骤记录:
1.安装openssl:
tar -zxvf openssl-1.0.0d.tar.gz
cd openssl-1.0.0d 
./configure --prefix=/usr/local/openssl
make && make intstall

2.安装lzo
rpm -ivh lzo-2.02-3.el5.kb.i386.rpm
rpm -ivh lzo-devel-2.03-6.el5.i386.rpm

3.安装open***
tar -zxvf open***-2.1.4.tar.gz
cd open***-1.0.0d 
./configure --prefix=/usr/local/open*** --with-openssl=/usr/local/openssl
make && make intstall

4.安装mysql
tar -zxvf mysql-5.1.50.tar.gz
cd mysql-5.1.50 
./configure --prefix=/usr/local/mysql --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-charset=latin1 --with-extra-charsets=utf8,gbk
make && make intstall

5.安装pam_mysql
tar -zxvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
如果直接./configure;make&& make install
最后会发现client无法利用mysql认证链接open*** 好错大致如下:
BACKGROUND: *** failed to authenticate: Permission denied
所以,很多朋友会在这里纠结,网上找了很久,发现这个原来是pam_mysql的一个bug ,
解决办法是在编译之前,创建一个文件vim patch.in
将如下内容复制到里面:

--- Makefile.in.chold   2008-07-14 10:25:53.000000000 +0200
+++ Makefile.in 2008-07-14 10:26:06.000000000 +0200
@@ -110,7 +110,7 @@
 CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
-pam_mysql_la_LIBADD = 
+pam_mysql_la_LIBADD = -lpam
 pam_mysql_la_OBJECTS =  pam_mysql.lo
 CFLAGS = @CFLAGS@
 COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
=================================
上面的===不要复制进去,然后
patch -p0 < patch.in
./configure --with-mysql=/usr/local/mysql --with-openssl=/usr/local/openssl
make
make install

这是重启一下opven,client就可以链接open***了。
本文出自http://nameyjj.blog.51cto.com/788669/531440