SVN的MySQL数据库用户验证模式(一)

来源:互联网 发布:小众软件论坛 编辑:程序博客网 时间:2024/05/16 15:42
到目前为止我们的用户名密码文件还是以文本文件形式存放在文件系统中的,出于安全性的需要的考虑,文本文件的管理方式都不能满足需求了。通过 Apache 的 module_auth_mysql 模块,我们可以用 MySQL 来保存用户信息。1. 下载module_auth_mysql模块主页:http://modauthmysql.sourceforge.net/或者:http://www.rpmcenter.org/win32/,这里包含有编译好的module_auth_mysql.so2. 安装模块安装方法同之前的Apache 的模块一样,复制到modules 目录并在httpd.conf 文件中添加如下语句:LoadModule mysql_auth_module modules/mod_auth_mysql.so3. 创建MySql数据库(假设已经安装完MySql,并且能正常运行)在mysql中创建一个svn数据库,新建一个user表CREATE TABLE `user_info` ( `user_name` char(30) NOT NULL COMMENT '用户名', `user_passwd` char(20) NOT NULL COMMENT '密码', PRIMARY KEY (`user_name`)) ENGINE=InnoDB DEFAULT CHARSET=gb2312;插入一条记录insert into user_info(user_name,user_passwd)values ('admin','admin');4. 修改版本库的配置文件的内容: DAV svn SVNPath "D:/SourceCode/project1" AuthzSVNAccessFile "D:/SourceCode/conf/project1_access.txt" Require valid-user AuthType Basic AuthName "MySQL repository " AuthMySQLHost localhost AuthMySQLDB svn AuthMySQLUser root AuthMySQLPassword sa AuthMySQLUserTable user_info AuthMySQLEnable On AuthMySQLNameField user_name AuthMySQLPasswordField user_passwd AuthMySQLPwEncryption none解释一下参数含义:AuthMySQLHost:mysql数据库的主机名称(可以是localhost,host名称或者ip地址)备选参数AuthMySQLPort:Mysql数据库的端口号AuthMySQLDB:数据库名称AuthMySQLUser:数据库用户名AuthMySQLPassword:数据库密码AuthMySQLUserTable:存放用户名和密码的数据库表AuthMySQLEnable:是否启用mysql数据库认证(On Off)AuthMySQLNameField:表中存放用户名的字段名AuthMySQLPasswordField:表中存放密码的字段名AuthMySQLPwEncryption:密码的加密方式(none | crypt | scrambled | md5 | aes | sha1)none 不加密ceypt Unix的加密方式scrambled mysql的加密方式md5 md5加密方式aes aes加密方式sha1 sha1加密方式5. 在数据库中添加用户组:在user_info表中增加字段user_group char(20)更新admin的用户的user_group为"administrator"新增另外一条记录insert into user_info(user_name,user_passwd,user_group)values ('zwang','zwang','develper');修改版本库的配置文件的内容: DAV svn SVNPath "D:/SourceCode/project1" #AuthzSVNAccessFile "D:/SourceCode/conf/project1_access.txt" AuthType Basic AuthName "MySQL repository " AuthMySQLHost localhost AuthMySQLDB svn AuthMySQLUser root AuthMySQLPassword sa AuthMySQLUserTable user_info AuthMySQLEnable On AuthMySQLNameField user_name AuthMySQLPasswordField user_passwd AuthMySQLGroupField user_group AuthMySQLPwEncryption none Require group administrator test新增参数:AuthMySQLGroupField:表中存放用户组的字段名把Require valid-user修改为Require group administrator test,即允许administrator和test组访问。这样的表结构只能允许一个用户一个组的设计,如果需要一个用户属于多个组,需要把user_group字段拆分出来,设计另外一张用户组表,这里就不详细说了,具体可以参考该模块主页上的配置例子