2011-12-11 13 views
5

Cuando estoy en la oficina, MySQL se ejecuta en un servidor específico que se llama "mysqldev". En mi archivo /etc/hosts he configurado "mysqldev" para que coincida con la IP de este servidor. Hasta aquí todo bien. Sin embargo, cuando estoy fuera de la oficina usando mi computadora portátil, quiero usar mi base de datos MySQL local, ya que clono bases de datos específicas allí y no tengo internet para conectarme a la base de datos de la oficina. No quiero cambiar mis scripts, sino la configuración de mi computadora portátil. Así que en mi portátil me he puesto en /etc/hosts:Usando un alias para el servidor localhost en MySQL

127.0.0.1 localhost mysqldev

Sin embargo, por alguna razón esto no funciona como se esperaba. Si inicio sesión en MySQL usando el servidor en localhost, todo bien. Pero cuando intento iniciar su sesión en el servidor mysqldev (misma IP como localhost), me sale el error:

Warning: mysqli::mysqli() [mysqli.mysqli]: [2002] Connection refused (trying to connect via tcp://mysqldev:3306)

(esto es usando PHP, pero utilizando la línea de comandos es el mismo error)

los usuarios que se configuran en el sistema tienen permiso específico para iniciar su sesión en este servidor:

CREATE USER 'test'@'mysqldev' IDENTIFIED BY '123';

GRANT ALL PRIVILEGES ON testdb.* TO 'test'@'mysqldev';

También apagué el firewall para probarlo, y no hace la diferencia. ¿Qué podría ser?

Respuesta

6

La biblioteca de cliente MySQL intenta adivinar cómo conectarse a su base de datos. Cuando le das localhost como el nombre de host, se supone, que está utilizando un conector local (buscar en su ordenador un fichero denominado mysql.sock, probablemente bajo /var/lib/mysql o /usr/local/mysql/.

Sin embargo, cuando se utiliza nada más, como una dirección IP, un nombre de host diferente o, en su caso, mysqldev, intenta conectarse al host a través de tcp. Desde el mensaje de error, parece que su servidor mysql local no está escuchando en el puerto tcp 3306 (el mysql predeterminado)

Verificar, si su my.cnf (probablemente /etc/my.cnf o /etc/mysql/my.cnf) permite el uso de tcp. Si encuentra una línea como

skip-networking 

comentario hacia fuera:

#skip-networking 

y reiniciar el servidor. Luego intenta de nuevo para conectarte.


Para averiguarlo, donde su socket es, conectarse a través de localhost y ejecute el siguiente comando:

mysql> show global variables like '%socket%'; 
+---------------+-----------------------------+ 
| Variable_name | Value      | 
+---------------+-----------------------------+ 
| socket  | /var/run/mysqld/mysqld.sock | 
+---------------+-----------------------------+ 
+0

¡Eso fue todo, gracias! –

0

Si está utilizando MAMP Pro y está ejecutando en problemas, puede sencilla desactive la casilla etiquetado como "Permitir acceso local solamente" en la configuración del servidor MySQL.

Cuestiones relacionadas