Não é possível conectar-se ao servidor mysql (13) usando a função php

2

Eu abri todos os links que os resultados do google lançaram para mim em relação a esse erro do MySQL. Eu tenho passado horas para fazer isso funcionar ...

Eu tenho um servidor web (apache in centos installed in host B, and want to connect to a MySQL server in host A) ambos os hosts estão na mesma sub-rede.

Eu posso acessar o mysql remoto usando o CLI mysql -u root -h <ip> -p

mas não pode se conectar ao mysql usando a função PHP mysql_connect()

Já desativei SELINUX e system-config-firewall-tui e incluído abaixo da sintaxe em /etc/my.cnf

  [client]
  port =3306
  socket = /var/lib/mysql/mysql.sock

Algumas soluções encontradas na web me dizem para digitar o setbool associado ao selinux, mas o problema é que o SELINUX já está desativado.

o mais estranho é que eu posso conectar através do CLI, mas não na função php

também, tenho php-mysql em ambos os hosts

Aqui está o meu main.php

<?php
mysql_connect('192.168.8.136','root','admin') or die (mysql_error());
echo "Connected to MySQL server";

mysql_select_db("web") or die (mysql_error());
echo "Connected to Database";
?>

aqui está meu /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld/log
id-file=/var/run/mysqld/mysqld.pid

status do selinux

SELinux status: disabled

netstat -atn tcp 0 0 0.0.0.0:3306 0.0.0.0:* Listen

erro recebido no cliente onde o apache está hospedado:

[error] [client 127.0.0.1] PHP warning: mysql_connect(); cant connect to mysql server (13) in /var/www/html/main.php on line 2

    
por user1933824 29.04.2013 / 12:09

6 respostas

6

Eu poderia acessar do servidor B a partir da linha de comando mysql mas também não consegui conectar meu banco de dados remoto via httpd - sei que você disse que o selinux estava desabilitado nos dois lados, porém na minha situação, o servidor httpd precisou de selinux

setsebool httpd_can_network_connect_db=1 

para permitir que o apache se conecte ao banco de dados remoto.

    
por 16.02.2015 / 06:21
2

você tem algo assim em my.cnf?

 bind-address            = 192.168.8.136

e em php você tem safe_mode ou apache mod_security habilitado?

    
por 29.04.2013 / 22:22
1

Verifique sua configuração "host" do usuário root do MySQL. Talvez tente com anyhost, 192.168.8.%, Localhost ou "www.domain.tld". Provavelmente, é uma boa ideia testar com outro usuário em vez de usar root ...

    
por 29.04.2013 / 23:42
1

Experimente estes passos e veja se muda alguma coisa:

  1. Edite /etc/my.cnf e altere bind-address = 127.0.0.1 para o ip do seu servidor MySQL.
  2. Permitir que usuário root se conecte de qualquer host

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

No entanto, permitir o acesso root remoto não é altamente recomendável, você deve criar um novo usuário e dar a ele apenas as permissões necessárias em um determinado banco de dados e usá-lo.

Atualização: não notou a data da postagem no começo, mas deixa a esperança de que isso ajude alguém um dia.

    
por 20.05.2014 / 08:00
1

Use o código abaixo. Eu também tenho a resposta.

setsebool -P httpd_can_network_connect=1

No CentOS 6, você pode usar o seguinte (sem -P)

setsebool httpd_can_network_connect=1
    
por 18.03.2015 / 05:17
-3

Tente isso, deve funcionar

  <?php
  // Mysql settings
  $user   = "root";
  $password = "admin";
  $database = "IP";
  $host   = "yourhost";
  mysql_connect($host,$user,$password);
  mysql_select_db($database) or die( "Unable to select database");
  ?>
    
por 29.04.2013 / 13:18

Tags