使用 mod_auth_mysql 诊断错误

使用 mod_auth_mysql 诊断错误

因此我mod_auth_mysql通过以下方式安装:

sudo apt-get install libapache2-mod-auth-mysql 
sudo a2enmod auth_mysql 
sudo /etc/init.d/apache2 restart

我更新了我的.htaccess文件,使其也能连接到数据库,但不起作用。以下是我在错误日志中得到的信息:

[2013 年 8 月 7 日星期三 16:35:23] [错误] [客户端 xxx.xxx.xxx.xxx] 未找到用户名:/admin/,引荐来源:https://www.domain.tld/

这个用户名肯定存在。如果我这么做,SELECT * FROM userTable WHERE userName = 'username'它就会出现。所以我有点不知所措。

有什么方法可以让我查看 SQL 的mod_auth_mysql生成吗?

从我的.htaccess档案中...

AuthBasicAuthoritative Off
AuthUserFile /dev/null
Auth_MYSQL On
Auth_MySQL_Host localhost
Auth_MySQL_User username
Auth_MySQL_Password password
Auth_MySQL_Authoritative On
Auth_MySQL_DB "dbname"
Auth_MySQL_Password_Table "apache_auth"
Auth_MySQL_Username_Field username
Auth_MySQL_Password_Field password
Auth_MySQL_Group_Field group
Auth_MySQL_Encryption_Types Plaintext

有任何想法吗?

答案1

要查看 auth_mysql 生成了哪些查询,最好 通过 mysql 查询日志记录查询并检查那里到底发生了什么。

我遇到了类似的问题,最终使用以下配置使 auth_mysql 运行起来:

AuthType                        Basic
AuthName                        "Access Authorization"
AuthUserFile                    /dev/null
AuthGroupFile                   /dev/null
AuthBasicAuthoritative          Off
AuthMYSQL                       On
AuthMySQL_Authoritative         On
AuthMySQL_Non_Persistent        On
AuthMySQL_Socket                /var/run/mysqld/mysqld.sock
AuthMySQL_DB                    my_database_name
AuthMySQL_User                  my_database_user_name
AuthMySQL_Password              my_database_user_pass
AuthMySQL_Group_Table           groups
AuthMySQL_Group_User_Field      user
AuthMySQL_Group_Field           project_group
AuthMySQL_Password_Table        users
AuthMySQL_Username_Field        name
AuthMySQL_Password_Field        pass
AuthMySQL_Empty_Passwords       off
AuthMySQL_Encryption_Types      Crypt_DES

require group admin #requirement on group, valid_user,...

和 mysql 表:

CREATE TABLE `groups` (
 `user` varchar(48) NOT NULL,
 `project_group` varchar(255) NOT NULL,
 KEY `group` (`project_group`),
 KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `users` (
 `name` varchar(48) NOT NULL,
 `pass` varchar(255) NOT NULL COMMENT 'Crypt_DES',
 `email` varchar(255) NOT NULL,
 `country_limits` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`name`),
 KEY `pass` (`pass`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

希望这会有所帮助。

相关内容