码迷,mamicode.com
首页 > 数据库 > 详细

SVN基于MYSQL认证

时间:2014-11-04 06:56:16      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:svn基于mysql认证



SVN的简介和工作原理

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

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

SVN的作用体现如下方面

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

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

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

 

系统环境:CentOS release 6.5 (Final)

服务器IP:192.168.159.130


vi /etc/sysconfig/network


一、安装相关软件包

[root@ccod ~]# 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进行访问。

  

二、关闭和启动相关服务


#关闭防火墙和selinux,免得给实验造成不必要的错误

[root@gupt-11 ~]# service iptables stop

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Unloading modules:                               [  OK  ]

[root@gupt-11 ~]# setenforce 0

[root@gupt-11 ~]# service mysqld start

#SVN是随着httpd服务启动而启动

[root@gupt-11 ~]# service httpd start

Starting httpd: httpd: apr_sockaddr_info_get() failed for gupt-11

httpd: Could not reliably determine the server‘s fully qualified domain name, using 127.0.0.1 for ServerName

                                                           [  OK  ]


三、创建版本库和相关授权

         

#创建测试目录。          

[root@gupt-11 ~]# mkdir -p /data/svn


#在提供的路径上创建一个新的空的版本库,如果提供的目录不存在,它会为你创建。

[root@gupt-11 ~]# svnadmin create /data/svn/test


#SVN访问认证文件,这里添加一个组,这个组的成员对test项目有读写的权限。这里可以根据开发人员的需求授予项目相关的权限。 

[root@gupt-11 ~]# cat /data/svn/authz

[groups]

admin = dailele1,dailele2,php100

[test:/]

@admin = rw 


四、授予项目Apache的权限

[root@gupt-11 ~]# chown apache.apache /data/svn/ -R

[root@gupt-11 ~]# chmod 755 /data/svn/ -R

 

五、配置认证数据库

[root@gupt-11 ~]# mysql -uroot -p

mysql> create database svn_auth;

Query OK, 1 row affected (0.00 sec)

mysql> use svn_auth;

Database changed

mysql> grant all privileges on *.* to svn@‘%‘ identified by ‘123456‘ with grant option;

Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE users 

    -> (

    ->   user_name CHAR(30) NOT NULL,

    ->   user_passwd CHAR(20) NOT NULL,

    ->   PRIMARY KEY (user_name)    

    -> );

Query OK, 0 rows affected (0.01 sec)


mysql> insert into svn_auth.users values(‘dailele1‘,encrypt(‘123456‘));

Query OK, 1 row affected (0.00 sec)


mysql> insert into svn_auth.users values(‘dailele2‘,encrypt(‘123456‘));

Query OK, 1 row affected (0.01 sec)


mysql> insert into svn_auth.users values(‘php100‘,encrypt(‘123456‘));

Query OK, 1 row affected (0.00 sec)

 

 

六、Apache和SVN集成


[root@gupt-11 ~]# vi /etc/httpd/conf/httpd.conf           

<Location /svn>

    DAV svn                              #开启DAV模块支持!

    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>


 

七、重启服务

[root@gupt-11 ~]# service httpd restart 


八、修改my.cnf

[root@gupt-11 ~]# vi /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)


[root@gupt-11 ~]# service mysqld restart

Stopping mysqld:                                           [  OK  ]

Starting mysqld:                                           [  OK  ]


九、测试


9.1、在客户端先在火狐浏览器上用dailele1这个用户登录test版本库。


bubuko.com,布布扣


dailele用户是可以通过认证的,由于这个是新建的版本库,里面当然是空的了。

bubuko.com,布布扣

 


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

 

本文出自 “xbc's homepage” 博客,请务必保留此出处http://alipay.blog.51cto.com/7119970/1571369

SVN基于MYSQL认证

标签:svn基于mysql认证

原文地址:http://alipay.blog.51cto.com/7119970/1571369

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!