li
  当前位置:主页 > 基础知识 > 文章内容
li
用Apache与MySQL整合实现基本身份认证
来源: www.ixdba.net  作者: ixdba.net技术社区    时间:2008-03-23   阅读:3  
ixdba.net技术社区mysql技术专题栏目:如果对这些技术问题有任何疑问,请给我们在文章后面留言:


  Apache来实现基本的用户身份认证有很多种方式,比如最常见的txt文本和DBM格式,但在负载很重的server上-这些都不是理想的方法,文本的形式是基于平面的,性能很差而且也不安全;DBM好些但在千或万级用户时还是力不从心,于是用database做后台存储则是很好的方法-比平面搜索更有效而且安全,用户口令以DES加密形式存储在数据库的表中。

  这种实现要归功于Apache本身出色的模块化结构--以及开放的DSO方式,可以使开发人员完成大量的第三方模块,并扩充Apache的功能。我在本文中只写了用Mysql做后台存储--此外还可用Postgresql, Oracle等来完成,原理一样-都是用各自的模块。

  让我们开始吧--先去modules.apache.org找到 mod_auth_mysql--会有两个我们要用DSO那个-事实上直接去ftp://ftp.kcilink.com/pub/下一个 mod_auth_mysql.c.gz就行-好-把它解开是一个mod_auth_mysql.c-好-我们用apxs来生成DSO模块(前题是你用 DSO模式编译的Apache)--apxs -c -i -a -L/usr/local/lib/mysql -lmysqlclient >-lm mod_auth_mysql.c即可--这里注意一定要这么写---L/usr/local/lib/mysql是mysql的客户库位置,我假定 mysql是用的缺省安装)---如果不加在起动Apache时会报错-无法装载此模块。

  好了看看httpd.conf中应该有LoadModule mysql_auth_module libexec/mod_auth_mysql.so和AddModule mod_auth_mysql.c这两句了,重起Apache也不应该有问题。

  然后我们进入mysql,mysql>create database auth;

  mysql>use auth;

  mysql> create table mysql_auth (

  -> user_name char(20) not null,

  -> user_passwd char(25),

  -> groups char(25),

  -> primary key (username) );

  注意字段名一定是user_name和user_passwd这个。再插入几条记录:

  mysql> insert into mysql_auth values

  ('xingfei2',encrypt("abcde"),'xingfei');

  Query OK, 1 row affected (0.00 sec)

  mysql> insert into mysql_auth values

  ('xingfei',encrypt("abcde"),'xingfei');

  Query OK, 1 row affected (0.00 sec)

  这里abcde是口令-用encrypt函数来进行加密,用的是DES算法-这是和unix的password等同的算法-而不是mysql本身加密的password()函数。

  最后在要保护的目录里建一个.htaccess(别忘了把AllowOverride all打开)内容如下:

  authname "xingfei"

  authtype basic

  AuthMySQLHost localhost ---mysql主机名

  authmysqluser root ---mysql用户

  authmysqlpassword abc ---mysql用户的口令

  AuthMySQLDB auth ---用户所用的库-也就是我们建的库

  AuthMySQLUserTable mysql_auth ---所用的表

  AuthMySQLGroupField groups ---用户组的字段名

  require group xingfei

  require user xingfei

  可以把用户都放在一个组里-只要是这个组里的用户即可通过认证,也可require单个或多个用户。




  上一篇: MySQL 4.1数据库中数据转换注意事...   下一篇: 教你编写高质量、高性能的MySQL语...
li
 §相关评论  
 热点文章

·RewriteRule重写规则的语法:A
·apache配置文件httpd.conf参数
·Apache的配置文件http.conf参数
·HTTP协议中POST、GET、HEAD等参
·XAMPP命令之LAMPP
·Linux中安装XAMPP(LAMPP)服务器
·网页禁止右键、禁止复制等代码
·java.lang.OutOfMemoryError:
·Mysql数据库在Linux系统常用命
·mysql问答:MySQL数据库连接过多
·MySQL数据库中Show命令的用法
li
 编辑推荐
·RewriteRule重写规则的语法:A
·apache配置文件httpd.conf参数
·Apache的配置文件http.conf参数
·HTTP协议中POST、GET、HEAD等参
·XAMPP命令之LAMPP
·Linux中安装XAMPP(LAMPP)服务器
·网页禁止右键、禁止复制等代码
·java.lang.OutOfMemoryError:
·Mysql数据库在Linux系统常用命
·mysql问答:MySQL数据库连接过多
·MySQL数据库中Show命令的用法
li
 相关篇章
·MySQL 4.1数据库中数据转换注意事...
·用Perl DBI连接MySQL数据库
·优化MySQL数据库查询的三种方法简...
·六大步保护MySQL数据库中重要数据
·如何修改遗失的MySQL的ROOT用户密...
·通过PHP连接My SQL的两种方法简介
·MySQL数据库账户授权的相关管理解...
·从MySQL到ORACLE程序迁移的注意事...
·向你介绍MySQL数据库备份的简单知...
·MySQL使用tips
·教你编写高质量、高性能的MySQL语...
·保护MySQL数据库中重要的数据注意...
·用新的PHP插件实现MySQL为基础的...
·教你如何使用触发器管理MySQL数据...
·在MySQL中获得更好的全文搜索结果
·关于MySQL数据库的用户认证系统分...
·通过数据库引擎来加速MySQL数据库
·针对于MySQL新增的复制特性的测试
·关于MySQL数据库的存储引擎详细介...
·SQL Server数据库导入MySQL数据库...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接