Apache dbd内部错误:AH00629:无法连接到mysql。

10

我正在尝试使用mysql作为Apache 2.4的认证dbd。

当Apache启动时,我遇到了以下错误:

[Tue May 12 13:07:18.789021 2015] [mpm_event:notice] [pid 10625:tid 140410697815936] AH00489: Apache/2.4.10 (Debian) configured -- resuming normal operations
[Tue May 12 13:07:18.789118 2015] [core:notice] [pid 10625:tid 140410697815936] AH00094: Command line: '/usr/sbin/apache2'
[Tue May 12 13:07:18.789469 2015] [dbd:error] [pid 10628:tid 140410697815936] (20014)Internal error: AH00629: Can't connect to mysql: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[Tue May 12 13:07:18.789560 2015] [dbd:error] [pid 10628:tid 140410697815936] (20014)Internal error: AH00633: failed to initialise
[Tue May 12 13:07:18.790282 2015] [dbd:error] [pid 10629:tid 140410697815936] (20014)Internal error: AH00629: Can't connect to mysql: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[Tue May 12 13:07:18.790441 2015] [dbd:error] [pid 10629:tid 140410697815936] (20014)Internal error: AH00633: failed to initialise
[Tue May 12 13:07:18.792481 2015] [dbd:crit] [pid 10628:tid 140410697815936] (20014)Internal error: AH00636: child init failed!
[Tue May 12 13:07:18.792595 2015] [dbd:crit] [pid 10629:tid 140410697815936] (20014)Internal error: AH00636: child init failed!

dbd_mysql.conf:

DBDriver mysql
DBDParams "host=192.168.1.2 port=3306 user=MY_USERNAME pass=MY_PASSWORD dbname=MY_DATABASE"
DBDMin  2
DBDKeep 4
DBDMax  10
DBDExptime 300
DBDPersist On

000-default.conf

[...]
DBDParams "dbname=DATABASENAME"
<IfModule authnz_ldap_module>
    <Directory /var/www/test/>
        AuthName "Authentication"
        AuthType Basic
        AuthBasicProvider dbd
        AuthDBDUserPWQuery "SELECT SHA2(password, 256) AS password FROM users WHERE username = %s"
        require valid-user
    </Directory>
</IfModule>
[...]

如果我更改密码为无效密码,我会收到异常

Internal error: AH00629: Can't connect to mysql: Access denied for user...

Debian: 7.8 Apache: 2.4.10 libapr1: 1.5.1-3 (我试图降级,但无法实现)
注意:服务器未安装php或php+mysql(libphpmysql)
编辑:
my.cnf(客户端部分)
[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

编辑(2):

我也尝试使用“odbc”连接mysql

odbc.ini:

dbd_mysql.conf

DBDriver odbc
DBDParams "datasource=MYSERVER_MYSQL_MYDATABASE"
DBDMin  1
DBDKeep 1
DBDMax  10
DBDExptime 300

/etc/odbc.ini(我编辑了配置以删除敏感数据)

[MYSERVER_MYSQL_MYDATABASE]
Driver=/usr/local/lib/libmyodbc5a.so
Description=MYSERVER_MYSQL_MYDATABASE
SERVER=192.168.1.2
PORT=
USER=MY_USER
Password=MY_PASSWORD
Database=MY_DATABASE
OPTION=3
SOCKET=

如果我使用:

# isql MYSERVER_MYSQL_MYDATABASE
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

它工作得非常好.. 但是在Apache的错误日志中:

[Thu May 14 09:07:51.323638 2015] [mpm_event:notice] [pid 1605:tid 140068309481344] AH00489: Apache/2.4.10 (Debian) configured -- resuming normal operations
[Thu May 14 09:07:51.323725 2015] [core:notice] [pid 1605:tid 140068309481344] AH00094: Command line: '/usr/sbin/apache2'
[Thu May 14 09:07:51 2015] [dbd_odbc] Invalid DBD Parameters - open returned SQL_ERROR (-1) at /tmp/buildd/apr-util-1.5:1146
[Thu May 14 09:07:51.323827 2015] [dbd:error] [pid 1608:tid 140068309481344] (20014)Internal error: AH00629: Can't connect to odbc: [dbd_odbc] Invalid DBD Parameters - open returned SQL_ERROR (-1) at /tmp/buildd/apr-util-1.5:1146
[Thu May 14 09:07:51.323870 2015] [dbd:error] [pid 1608:tid 140068309481344] (20014)Internal error: AH00633: failed to initialise
[Thu May 14 09:07:51 2015] [dbd_odbc] Invalid DBD Parameters - open returned SQL_ERROR (-1) at /tmp/buildd/apr-util-1.5:1146
[Thu May 14 09:07:51.324332 2015] [dbd:error] [pid 1609:tid 140068309481344] (20014)Internal error: AH00629: Can't connect to odbc: [dbd_odbc] Invalid DBD Parameters - open returned SQL_ERROR (-1) at /tmp/buildd/apr-util-1.5:1146
[Thu May 14 09:07:51.324430 2015] [dbd:error] [pid 1609:tid 140068309481344] (20014)Internal error: AH00633: failed to initialise
[Thu May 14 09:07:51.331767 2015] [dbd:crit] [pid 1608:tid 140068309481344] (20014)Internal error: AH00636: child init failed!
[Thu May 14 09:07:51.331823 2015] [dbd:crit] [pid 1609:tid 140068309481344] (20014)Internal error: AH00636: child init failed!

我发现我没有注册驱动程序:
./myodbc-installer -d -a -n "MySQL ODBC 5.3 Driver" -t "DRIVER=/usr/local/lib/libmyodbc5a.so"

然后,使用以下内容更改“dbd_mysql.conf”:
DBDriver odbc
DBDParams "CONNECT='DRIVER={MySQL ODBC 5.3 Driver};SERVER=192.168.1.2;DATABASE=MY_DATABASE;UID=MY_USER;PWD=MY_PASSWORD;'"
DBDMin  1
DBDKeep 1
DBDMax  10
DBDExptime 300

但是仍然存在同样的问题(error.log):
[Fri May 15 09:38:31.905733 2015] [core:notice] [pid 5215:tid 140452627486592] AH00094: Command line: '/usr/sbin/apache2'
[Fri May 15 09:38:31 2015] [dbd_odbc] Invalid DBD Parameters - open returned SQL_ERROR (-1) at /tmp/buildd/apr-util-1.5:1146
[Fri May 15 09:38:31.905842 2015] [dbd:error] [pid 5218:tid 140452627486592] (20014)Internal error: AH00629: Can't connect to odbc: [dbd_odbc] Invalid DBD Parameters - open returned SQL_ERROR (-1) at /tmp/buildd/apr-util-1.5:1146
[Fri May 15 09:38:31.905888 2015] [dbd:error] [pid 5218:tid 140452627486592] (20014)Internal error: AH00633: failed to initialise
[Fri May 15 09:38:31 2015] [dbd_odbc] Invalid DBD Parameters - open returned SQL_ERROR (-1) at /tmp/buildd/apr-util-1.5:1146
[Fri May 15 09:38:31.906424 2015] [dbd:error] [pid 5219:tid 140452627486592] (20014)Internal error: AH00629: Can't connect to odbc: [dbd_odbc] Invalid DBD Parameters - open returned SQL_ERROR (-1) at /tmp/buildd/apr-util-1.5:1146
[Fri May 15 09:38:31.906528 2015] [dbd:error] [pid 5219:tid 140452627486592] (20014)Internal error: AH00633: failed to initialise
[Fri May 15 09:38:31.915211 2015] [dbd:crit] [pid 5218:tid 140452627486592] (20014)Internal error: AH00636: child init failed!
[Fri May 15 09:38:31.915578 2015] [dbd:crit] [pid 5219:tid 140452627486592] (20014)Internal error: AH00636: child init failed!

MySQL是否正在运行,或者套接字文件的位置是否正确?因为Apache正在尝试使用套接字文件,而您的配置正在告诉它使用TCP连接。 - Marc B
MySQL服务器正在另一台服务器上运行。我没有设置任何套接字文件。 - Joshua
你的配置有问题,Apache 正试图通过 socket 连接。 - Marc B
我发布了我修改过的所有文件的内容。您有什么想法,配置可能有问题吗? - Joshua
但我认为这可能与“套接字”无关,因为当我输入错误的密码时,我不会收到“用户访问被拒绝”的消息。 - Joshua
显示剩余4条评论
2个回答

4

我将 DBDParams "DRIVER={MySQL ODBC 5.3 Driver},SERVER=192.168.1.2,DATABASE=MY_DATABASE,UID=MY_USER,PWD=MY_PASSWORD" 中的 ";" 改为了 ",",但仍然出现相同的错误:Invalid DBD Parameters - open returned SQL_ERROR (-1) - Joshua
我的回答将有助于您处理“DBDriver mysql”的第一个案例。在第二种情况下,似乎dbd无法找到给定名称的ODBC驱动程序。 - Alexander Ushakov
谢谢,它可以工作了!配置:DBDriver mysql DBDParams "host=192.168.1.2,user=MY_USER,pass=MY_PASSWORD,dbname=MY_DATABASE" DBDMin 1 DBDKeep 1 DBDMax 10 DBDExptime 300 DBDPersist On - Joshua

0

在 my.conf 中尝试

[client]
protocol=tcp

参考连接到MySQL服务器提供了如何覆盖默认连接方法的说明。

参考使用选项文件模糊地解释了my.conf文件中可以放置哪些值。本质上,可以在选项文件中指定可以传递给mysql命令行的参数(即--protocol),不需要破折号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接