我正在尝试通过MySQL设置每个存储库SVN身份验证,但我遇到了一些问题。
首先 mod_authn_dbd 与 mod_auth_mysql 有什么区别?
其次我已经有一个MySQL数据库设置,其中包含一个用户,组和权限表。是否可以使用这些mod中的任何一个链接到我当前的权限系统,其中需要用户名,密码和权限才能访问存储库(优先选择具有读取权限和每个存储库的写入权限)
tbl_users:user_id,user_name,user_hash
tbl_group:group_id,group_name
tbl_permission:permission_id,permission_name
tbl_user_group:user_id,group_id
tbl_group_permission:group_id,permission_id
tbl_user_permission:user_id,permission_id
答案 0 :(得分:3)
首先是区别。
mod_authn_dbd提供身份验证前端,例如mod_auth_digest和mod_auth_basic,通过在SQL表中查找用户来对用户进行身份验证。
mod_auth_mysql是一个Apache模块,允许使用存储在MySQL数据库中的用户和组数据进行身份验证。该项目似乎自2005年以来没有更新,因此我选择mod_authn_dbd。
要正确设置,首先需要在apache配置中正确配置mod_authn_dbd和mod_dbd,mod_dbd负责数据库连接。完成此操作后(确保Apache运行时这些模块处于活动状态),然后您可以继续配置它们。
将这样的内容添加到您的apache配置中以配置数据库连接:
<IfModule mod_dbd.c>
DBDriver mysql
DBDParams "host=(your_db_server, p.e. 127.0.0.1) dbname=your_db_name user=your_db_user pass=your_db_pass"
DBDMin 1
DBDKeep 8
DBDMax 20
DBDExptime 200
</IfModule>
现在将所需的身份验证配置添加到apache配置中:
<Directory "/your/svn/repository/path/">
Options FollowSymLinks Indexes MultiViews
AuthType Basic
AuthName "Allowed users Only"
AuthBasicProvider dbd
AuthDBDUserPWQuery "SELECT pwd FROM tbl_users, tbl_user_group WHERE tbl_users.user_id=%s AND tbl_user.user_id=tbl_user_group.user_id"
Require valid-user
AllowOverride None
Order allow,deny
Allow from all
</Directory>
为了更好的可读性,我简化了SELECT语句,你必须对其进行扩展以改进配置。
修改强>
输入后我在网上找到了一个很好的例子,也可以阅读here。它比我的简化答案更深入。