Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php can't connect to mysql with error 13 (but command line can)

Tags:

php

apache

I have weird situation in newly installed server, and it seems that Google can't help me this time. I can't connect to (remote) mysql from my php-code. When I try to connect from command line on the same server the connection succseds.

Could not connect: Can't connect to MySQL server on 'MYSQL.SERVER' (13)

Here is the code and the connect attempt from the command line

[u1@bosko httpdocs]$ cat  test.php  <? $link = mysql_connect('MYSQL.SERVER', 'testusersimon', '123456'); if (!$link) {     die('Could not connect: ' .  mysql_error()); } echo 'Connected successfully'; mysql_close($link); ?>  [u1@bosko httpdocs]$ mysql -h MYSQL.SERVER -utestusersimon --password=123456 Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 352108 Server version: 5.0.45-community-nt-log MySQL Community Edition (GPL)  Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  mysql> quit Bye 

I tried running the php script both in mod_php mode and in FastCGI, check that "/etc/php.d/mysql.ini" shows up in the phpinfo() as well as mysql,mysqli and pdo_mysql sections.

but the result was the same, I know its something simple but I just can't . Please help :)

Edit: The problem was with SElinux

setsebool -P httpd_can_network_connect_db=1 

Was the solution.

like image 480
SimSimY Avatar asked Nov 02 '10 13:11

SimSimY


People also ask

Why MySQL database is not connecting?

normally means that there is no MySQL server running on the system or that you are using an incorrect Unix socket file name or TCP/IP port number when trying to connect to the server. You should also check that the TCP/IP port you are using has not been blocked by a firewall or port blocking service.

Does PHP 7.4 support MySQL?

PHP 7.4 now supports MySQL with caching_sha2_password, although it is a bit unclear around older versions, there seems to be conflicting reports.


2 Answers

setsebool -P httpd_can_network_connect=1 

will also be a helpful CLI command to many people visiting this question, as to allow mysql_connet() connections from within HTTP (Apache) requests to a remote MySQL database server, ensure to enable Network Connections from httpd in SElinux usually located in /etc/selinux/config (disabled by default to prevent hackers from attacking other machines using your httpd).

like image 189
Pallieter Koopmans Avatar answered Sep 18 '22 08:09

Pallieter Koopmans


On CentOs 6, you can use the following (without -P)

setsebool httpd_can_network_connect=1 
like image 27
Max Chernopolsky Avatar answered Sep 22 '22 08:09

Max Chernopolsky