mysql_connect won't when run from web server

Steven A. DuChene linux-clusters at mindspring.com
Mon May 25 00:03:36 MST 2009


As I said, on the Apache server I can run the php script just fine and
it connects to the remote mysql server just fine. Both servers are here
on my local internal network and there is no firewall between them.

So to be clear on the Apache system I can run the php mysql connect script
just fine like so:

Apache$ php ./mysql_php_dbconnectscript.php

and it works fine. I really believe this eliminates any port or firewall
or ping or FQDN or localhost issues between the two boxes. 

-----Original Message-----
>From: Mike Butash <mike at butash.net>
>Sent: May 24, 2009 10:03 PM
>To: Main PLUG discussion list <plug-discuss at lists.plug.phoenix.az.us>
>Cc: "Steven A. DuChene" <linux-clusters at mindspring.com>
>Subject: Re: mysql_connect won't when run from web server
>
>Is your hostname "mysql" valid, just "ping mysql" and see if you get a
>response.  Try to connect to "localhost" as well and see if it works.
>Most default installs will listen only on 127.0.0.1, not the live IP
>most distro's bind to the hostname from the network, like 10.x.x.x.
>Assure the hostname is valid in your connect string.
>
>Check that the sql daemon is listening on the right port/address.  Try
>'netstat -a | egrep "mysql|3306"' without the single quote, see if the
>daemon is listening, and on what address - should look like this:
>
>mb at thrawn:/media/ext0/opt$ netstat -a | grep mysql
>tcp        0      0 *:mysql         *:*         LISTEN 
>
>.. if not, rather like this:
>
>mb at thrawn:/media/ext0/opt$ netstat -a | grep ssh
>tcp        0      0 127.0.0.1:ssh           *:*         LISTEN 
>
>.. then you might need to tweak the my.cnf to remove the bind addr from
>binding only to localhost.  Comment it out as such, and it should show
>as listening on all ports:
>
>#bind-address = 127.0.0.1
>
>If you can telnet to port 3306 from both localhost or the real IP
>(telnet localhost 3306), check sql logs for auth errors.  I'm most pgsql
>than my, but I think this is the tree you'll want to bark up, namely the
>binding and socket access.  
>
>Caveat Emptor - This opens general network access to that sql port short
>of a firewall, so make sure you secure it adequately.  Best bet is to
>set your php connection string to connect to localhost, and keep the sql
>daemon only bound to localhost.  So long as you're not needing any
>remote connections, that is.
>
>-mb
>
>
>On Sun, 2009-05-24 at 20:36 -0700, Lisa Kachold wrote:
>> Hi Steven,
>> 
>> On Sun, May 24, 2009 at 3:53 PM, Steven A. DuChene
>> <linux-clusters at mindspring.com> wrote:
>>         Hello all:
>>         I have a php to mysql database connection script that I am
>>         having a problem with.
>>         I have two systems. One is running apache and also happens to
>>         be my desktop system.
>>         Call this one system Apache. The other system is running mysql
>>         and let's call this
>>         one Mysql.
>>         
>>         the connection script is very simple:
>>         
>>            <?php
>>            $dbhost = "Mysql";
>>            $dbuser = "someuser";
>>            $dbpass = "NOTREAL";
>>         
>>            $conn = mysql_connect($dbhost, $dbuser, $dbpass) or
>>         die("Error connecting to mysql");
>>         
>>            if ($conn) {
>>            echo "CONNECT OK";
>>            }
>>         
>>            $dbname = "tmp";
>>            mysql_select_db($dbname);
>>            ?>
>>         
>>         
>>         If I run this script from the command line on the Apache
>>         system like so:
>>         
>>         $ php testmysqlconnect_script.php
>>         
>>         and it works fine. However if I run the script from the web
>>         browser open on the
>>         Apache desktop and point it at
>>         http://localhost/~meuser/testmysqlconnect_script.php
>>         I get a connection error. Just to confirm I have also used the
>>         following mysql
>>         command from the command line on the Apache system and it
>>         works fine as well:
>>         
>>         mysql --host=Mysql -u someuser -p tmp
>>         
>>         and entered the exact same user name as is in my script and I
>>         am able to connect
>>         just fine. I have tried looking at the output from php_info()
>>         on the Apache web
>>         server and it looks normal but I could be missing something.
>>         
>>         Anyone have any ideas of what I might be over looking???
>> 
>> 1) What is apache saying about this?  Tail the logs?  
>> 1.5) Change to FQDN like mysql.mylocalnetwork rather than IP or CNAME
>> and retest script.
>> 2) Verify you have php extensions enabled (can you run other .php
>> files in apache)?
>> 3) What does tcpdump on each server say?  Do you see the connection go
>> out?  Do you have a sniffer that you can invoke and filter
>> specifically between these two servers? Wireshark?
>> 4) Selectively take down firewalling between each server and test to
>> verify once you determine it might be switch or router or local
>> iptables causing the issues?
>> 5) Do you allow scripting from that directory in your Apache
>> <directory> tags?
>> 
>>         
>>         --
>>         Steve DuChene
>> 
>> www.obnosis.com (503)754-4452
>> "Contradictions do not exist." A. Rand
>> ---------------------------------------------------
>> PLUG-discuss mailing list - PLUG-discuss at lists.plug.phoenix.az.us
>> To subscribe, unsubscribe, or to change your mail settings:
>> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>





More information about the PLUG-discuss mailing list