2

我可以使用 Perl 脚本中的 DBI 模块轻松连接到远程 MySQL 服务器。但是,当我尝试在 CGI 脚本中使用相同的连接设置/属性时,连接会失败。

尽管使用了 apache 错误日志或浏览器,但没有记录有用的错误/警告

use CGI::Carp qw(warningsToBrowser fatalsToBrowser);

奇怪的是,当从终端执行时,完全相同的脚本可以正常工作。我还尝试将 CGI 脚本连接到本地主机上的 MySQL 服务器,但没有任何成功。

另一方面,phpMyAdmin 在机器上工作得很好。

我正在使用 CentOS 5.8 版。我怀疑这是apache用户或操作系统上其他任何地方的系统/权限问题,但已经走到了死胡同。

任何指针将不胜感激!

非常感谢。

编辑:我正在使用以下连接字符串

$dbh = DBI->connect($ds, $uname, $pwd,{RaiseError => 1 }) or die "$DBI::errstr Could not connect: $!<br>";
4

2 回答 2

2

修复。万一不太熟悉 Linux 管理的人面临类似的问题,这就是发生的事情。我的 CentOS 机器上的安全系统“selinux”禁止 httpd 与远程 MySQL 服务器建立网络连接。必须使用以下命令显式启用它

setsebool -P httpd_can_network_connect=1

可以在这里阅读更多关于 selinux 的信息:

http://wiki.centos.org/HowTos/SELinux

于 2012-09-18T16:32:02.787 回答
0

检查您在 MySQL 中设置了哪些用户。如果您尝试通过网络连接进行连接,则用户的主机关联可能存在问题。

尝试:从 mysql.user 中选择主机、用户

于 2012-09-14T18:37:32.520 回答