SQLSTATE[HY000] [2003] Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx’ (13)

One of the things I wish I had found in Google faster when trying to figure out why PHP script refuses to connect to remote MySQL server issuing an error
SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'xxx.xxxx.xxx.xxx' (13)

I am able to connect from local shell, so first thought was if something wrong with recent Zend Framework upgrade, but after a while I figured out that answer is very simple – SELinux was blocking remote connections from PHP scripts executed by Apache web server. The error code (13) at the end of error message means “permission denied”, so that’s the indication to see if you have similar issue or not.

Anyway, login as root and do
setsebool -P httpd_can_network_connect=1
to make it work.

Of course, think twice because you make web server a bit less secure, so don’t do that unless you are sure you need it.

Tags: , , , ,

5 Responses to “SQLSTATE[HY000] [2003] Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx’ (13)”

  1. Jonathan Nieto says:

    Thanks! you saved me so much time!

  2. Sanjay Malunjkar says:

    That was exactly my problem. I would imagine that phpmyadmin talking to remote mysql will require this change.

  3. Dan Thomas says:

    Thanks very much.. spent ages trying to sort this problem out!!
    Thanks Again :)

  4. This came in handy just now. Thankfully I found your blog before I spent even more time debugging.

    Thanks again.

  5. Ashutosh says:

    Thanks a lot. Really helped and saved some time

Leave a Reply