SVN基于MySQL认证


SVN的简介和工作原理

   Subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。Subversion支持linux和windows,但是普通应用在Linux上。

  SVN主要是通过两种方式来工作:即是通过独立服务器和依赖Apache方式来工作。

SVN的作用体现如下方面

 1、解决代码管理紊乱的问题。

 2、解决代码冲突的问题。

 3、解决代码拥有者对代码权限的控制。

 4、.......


 下面的例子主要是讲解SVN基于MySQL的认证。

 

系统环境:centos6.5   服务器IP:172.18.107.176


 一、先安装相关的数据包

#yum -y install mysql mysql-devel mysql-server httpd 
mod_auth_mysql subversion mod_dav_svn

二、启动相关服务。

#service mysqld start
#service httpd start

三、创建项目和相关授权

#mkdir -p /data/svn/              
#svnadmin create /data/svn/test   #创建一个名为test的项目
#vim /data/svn/authz              #创建SVN认证文件
[groups]
admin = eelly01,eelly02,test100   #添加SVN用户名
[test:/]                          #对test版本库进行权限设置
@admin = rw                       #允许admin这个组的成员对这个版本库有读写的权限

四、授予项目Apache的权限,否则无法通过http的方式来访问。

#chown -R apache.apache /data/svn/ 
#chmod 755 /data/svn/ -R

五、创建认证数据库

#mysql -uroot -p
 1)创建数据库
mysql>create database svn_auth;
mysql>use svn_auth;
mysql>grant all privileges on *.* to svn@‘%‘identified by ‘123456‘with grant option;

 2)创建表
mysql> CREATE TABLE users ( user_name CHAR(30) NOT NULL,user_passwd CHAR(20) NOT NULL,PRIMARY KEY (user_name));

 3)创建测试账号
mysql> insert into svn_auth.users values(‘test100‘,encrypt(‘123456‘));
mysql> insert into svn_auth.users values(‘eelly01‘,encrypt(‘123456‘));
mysql> insert into svn_auth.users values(‘eelly02‘,encrypt(‘123456‘));


六、Apache和SVN集成 

#vim /etc/httpd/conf/httpd.conf          #添加如下内容
  <Location /svn>
    DAV svn
    SVNParentPath /data/svn/             #项目的父目录
    AuthzSVNAccessFile /data/svn/authz   #svn访问认证文件
    AuthName "EELLY SUBVERSION"          #认证名称
    AuthType Basic                       #基本认证
    AuthMYSQLEnable on                   #开启mysql认证
    AuthMYSQLUser svn                    #数据库访问用户名   
    AuthMySQLPassword 123456             #数据库访问的密码
    AuthMYSQLDB svn_auth                 #存放认证信息的数据库名称
    AuthMYSQLUserTable users             #存放认证信息的表名称 
    AuthMYSQLNameField user_name         #存放认证用户名的字段名称
    AuthMYSQLPasswordField user_passwd   #存放认证密码的字段名称
    Require valid-user
  </Location>

七、重启Apache服务器

 # service httpd restart
    停止 httpd:                                               [确定]
    正在启动 httpd:                                           [确定]

八、测试。访问http://172.18.107.176/svn/test

    

 


从上面看到在数据库里面创建test100这个用户是可以登录的。eelly01也是没有问题的。如下图。(当然里面是没有东西的了,因为是新建的版本库)



 简单的SVN基于MySQL认证就这样搭建完成了,只需要在MySQL数据库里面创建一个用户,然后在authz文件里面授予用户相应的权限即可访问相应的版本库了。

本文出自 “运维,你好” 博客,请务必保留此出处http://denghaibin.blog.51cto.com/4128215/1554829

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。