MySQL connection not working from within Perl CGI script

好久不见. 提交于 2019-12-22 20:47:31

问题


I can easily connect to a remote MySQL server using the DBI module in my Perl scripts. However, when I try to use the same connection settings/properties from within a CGI script, the connection fails.

There are no helpful errors/warnings being logged either in the apache error log, or the browser, in spite of using

use CGI::Carp qw(warningsToBrowser fatalsToBrowser);

Strangely, the exact same script works fine when executed from the terminal. I also tried connecting the CGI script to the MySQL server on localhost, but without any success.

On the other hand, phpMyAdmin works great on the machine.

I'm using CentOS Release 5.8. I'm suspecting it is a system/priveleges issue with the apache user or anywhere else on the OS, but have hit a dead end.

Any pointers would be much appreciated!

Thanks a lot.

Edit: I'm using the following connection string

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

回答1:


Fixed it. In case anyone not too familiar with Linux administration faces similar issue, here's what had happened. The security system 'selinux' on my CentOS machine was prohibiting the httpd to establish network connection to the remote MySQL server. It had to be explicitly enabled with the following command

setsebool -P httpd_can_network_connect=1

One can read more about selinux over here:

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




回答2:


Check what users you have set up in MySQL. If you're trying to connect across a network connection, you could have a problem with the host association for the user.

Try: select host,user from mysql.user



来源:https://stackoverflow.com/questions/12408795/mysql-connection-not-working-from-within-perl-cgi-script

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!