2011-03-07 24 views
6
  • Servidor IP: 172.16.1.169
  • MySQL nombre de usuario: root
  • passwd: xxxxxxxxxx
  • nombre de la base de datos: ejemplo

Estoy intentando acceder a una base de datos desde un cliente (ip 172.16.0.114). Tanto el servidor como el cliente están ejecutando la distribución Fedora de Linux. ¿Qué configuraciones deben configurarse y a qué se deben configurar, tanto para el servidor como para el cliente? ¿Cómo accedo a una base de datos específica (aquí, "ejemplo")? Lo intenté, pero me da un error:Los problemas en la conexión al servidor MySQL: ERROR 2003 (HY000)

ERROR 2003 (HY000): Can't connect to MySQL server on '172.16.1.169'.

+0

Tiene una red diferente, por ejemplo: 172.16.0. * Y 172.16.1. *. ¿Puedes hacer ping de 172.16.0.114 a 172.16.1.169 en absoluto? – Arman

+0

Misma red ... puedo hacer ping ... – Jagan

+1

Mismo problema aquí. La [respuesta de guido] [1] resuelve mi problema. Thx. [1]: http://stackoverflow.com/a/6897627/2760065 – robersonfox

Respuesta

8

Ese mensaje de error se genera por el cliente (no el servidor), ya que una conexión con el servidor se ha intentado pero el servidor no pudo ser localizado.

Hay varias causas posibles para que:

1) Compruebe que mysqld se está ejecutando en el servidor:

ps -ef | grep mysqld 

debe devolver algo como:

root  2435 2342 0 15:49 pts/1 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/var/ --user=mysql 
mysql  2480 2435 0 15:49 pts/1 00:00:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/var/ --user=mysql ... 

para ejecutar el demonio servicio, ejecute en redhat/fedora/centos:

service mysqld start 

o el lanzamiento de Fedora> = 16, que se basa en systemd:

systemctl start mysqld.service 

y para permitir demonio de auto-arranque al iniciar el sistema:

systemctl enable mysqld.service 

2) comprobar el puerto en el que mysqld que se ejecuta en el servidor:

netstat -lnp | grep mysql 

debería volver:

tcp  0  0 0.0.0.0:3306 0.0.0.0:* LISTEN 2480/mysqld 
unix 2  [ ACC ]  STREAM  LISTENING  8101 2480/mysqld /tmp/mysql.sock 

este último es el socket para conexiones locales, el primero es el puerto tcp para redes (predeterminado 3306). Si el puerto no es el puerto predeterminado, debe establecer el puerto de conexión en el cliente. Si se utiliza cliente mysql:

mysql dbname -uuser -ppasswd -P<port> ... 

3) estar en una dirección de red diferente, compruebe que el servidor espera los addrees netos tu se conecta desde: en el archivo /etc/my.cnf búsqueda de la línea:

bind_address=127.0.0.1 

si la dirección es 127.0.0.1, solo se permiten las conexiones locales; si fuera 172.16.1.0, no podría conectarse desde 172.16.2.xxx

4) compruebe que en el servidor no se esté ejecutando ningún servidor de seguridad y bloqueando las conexiones al puerto mysql (3306 es el puerto predeterminado); Si es un RedHat/Fedora/CentOS corren

service iptables status 
1
  1. archivo de configuración abierto MySQL

    sudo vim my.cnf

  2. garantizar que los siguientes están comentadas.

    # skip-externa de bloqueo

    # skip-networking

    # bind-address = xx.xx.xx.xx

    Guardar y salir

  3. Reiniciar servicio MySQL

+3

Gracias, funcionó! ¿Puedes explicar qué cambian estas líneas? –

0

Creo que el servidor de destino mysql puede usar un puerto diferente. Primero debe encontrar el puerto correcto.

Una vez que el puerto correcto se puede conectar a ese servidor mysql mediante el uso de este comando:

mysql -h 172.16.1.169 -P (port) -u root -p (password) 
-1

En el archivo de configuración de MySQL (/etc/mysql/my.cnf) comentario '# bind-address = 127.0.0.1 '

Guarde y reinicie el servicio de mysql.

+0

Esta es la solución a esta pregunta. Tuve el mismo problema en el servidor ubuntu 14.04, mysql 5.6. Comenta el comentario '# bind-address = 127.0.0.1' y funcionó para mí – Ramil

Cuestiones relacionadas