Svn基于mysql做登陆认证

不做权限控制的登陆认证

  1. 基础环境
    Centos 6
    Apache 2.2
    Svn 1.6
    Mysql 5.1
yum -y install mysql mysql-devel mysql-server httpd mod_auth_mysql subversion mod_dav_svn
 * mod_auth_mysql  实现Apache的MySQL认证
 * subversion      SVN软件包
 * mod_dav_svn     Subversion与Apache之间的接口,通过它,Apache就可以访问版本库,并且可以让客户端也使用HTTP的扩展协议WebDAV/DeltaV进行访问。
  1. Svn配置
#mkdir -p /data/svn/            *创建测试目录。          
#svnadmin create /data/svn/test *在提供的路径上创建一个新的空的版本库,如果提供的目录不存在,它会为你创建。
#授予项目Apache的权限
#chown apache.apache /data/svn/ -R 
#chmod 755 /data/svn/ -R
  1. Apache配置
httpd.conf文件配置加载模块
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule mysql_auth_module modules/mod_auth_mysql.so


    # 开启DAV模块支持
    DAV svn
    # 项目的目录
    SVNPath /data/svn/test
    # 认证名称
    AuthName Subversion
    # 开启Mysql认证
    AuthMYSQLEnable on
    # 基本认证
    AuthType Basic
    # md5加密类型
    AuthMySQLPwEncryption md5
    # 连接数据库地址
    AuthMySQLHost 192.168.9.53
    # 连接数据库用户
    AuthMySQLUser uct
    # 连接数据库密码
    AuthMySQLPassword uct
    # 连接数据库库名
    AuthMySQLDB uct
    # 连接数据库表名
    AuthMySQLUserTable uct_user
    # 连接数据库用户名
    AuthMySQLNameField user_ename
    # 连接数据库密码
    AuthMySQLPasswordField user_pass
    # 表示只有认证的用户才能登陆
    Require valid-user

重启apache服务:service httpd restart

  1. MySQL配置 --可以使用已有数据库测试
#mysql -uroot -p                *登录数据库
 1) 创建认证信息的数据库
mysql>create database svn_auth; *创建一个svn_auth数据库。
mysql>use svn_auth;             *切换到这个数据库上。
mysql>grant all privileges on *.* to svn@'%'identified by ‘123456’with grant option;  *授予svn这个用户访问数据库的权限。
 2)创建认证信息的表
mysql> CREATE TABLE users (
->   user_name CHAR(30) NOT NULL,
->   user_passwd CHAR(50) NOT NULL,
->   PRIMARY KEY (user_name)    *数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。
-> );
 3)创建认证测试账号,密码都是123456
mysql> insert into svn_auth.users values('test100',md5('123456'));
mysql> insert into svn_auth.users values('eeyy01',md5('123456'));

修改/etc/my.cnf文件

#cat /etc/my.cnf(下面是部分内容)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
skip_grant_tables  *启动mysql时不启动grant-tables授权表。
*不然会报[error] [client 172.18.107.176] MySQL ERROR: Access denied for user 'svn'@'localhost' (using password: YES)。这样会导致账号无法通过验证。
# service mysqld restart
停止 mysqld:                                              [确定]
正在启动 mysqld:                                          [确定]
  1. 浏览器测试
    在浏览器上访问版本库http://IP/resvn
    用test100这个用户登录test版本库

  2. Svn客户端测试
    使用svn checkout导出版本库地址写浏览器访问的地址,
    选择保存目录,点OK导出
    新建个文件,提交svn,然后在浏览器查看刚刚提交的文件

你可能感兴趣的:(Svn基于mysql做登陆认证)