Un cliente MySQL en Unix puede conectarse al servidor
mysqld de dos maneras diferentes: Utilizando un archivo
socket de Unix para conectarse a través de un archivo en el sistema de
ficheros (por defecto /tmp/mysql.sock), o utilizando
TCP/IP, que se conecta a través de un número de puerto. Una conexión
a través de archivo socket de Unix es más rápida que a través de TCP/IP,
pero solo puede ser utilizada cuando se conecta a un servidor en la misma
máquina. Se utiliza un archivo de socket Unix siempre que no se especifique
un nombre de servidor o si se especifica el nombre de servidor especial
localhost.
Si el servidor MySQL está ejecutándose en Windows 9x o Me, puede
conectarse únicamente a través de TCP/IP. Si el servidor se está ejecutando
sobre Windows NT, 2000, XP, o 2003 y ha sido iniciado con la opción
--enable-named-pipe, puede también conectarse a través
de named pipes si el cliente se está ejecutando en la misma máquina que
el servidor. El nombre de la named pipe es por defecto
MySQL. Si no se especifica un nombre de servidor
al conectar a mysqld, un cliente MySQL intenta primero
conectarse a la named pipe. Si esto no funciona, se conecta al puerto
TCP/IP. Usted puede forzar la utilizaciónde named pipes en windows utilizando
. como el nombre de servidor.
hostname.
El error (2002) Can't connect to ... normalmente
significa que no hay un servidor MySQL ejecutándose en el sistema o
que usted está especificando un archivo de socket Unix o número de puerto TCP/IP
al intentar conectarse al servidor.
Comience por comprobar si hay un proceso llamado mysqld ejecutándose en el servidor. (Utilice ps xa | grep mysqld en Unix o el Administrador de tareas en Windows). Si no existe ese proceso, debería iniciar el servidor. Consulte Sección 2.9.2.3, “Arrancar y resolver problemas del servidor MySQL”.
Si hay un proceso mysqld ejecutándose, puede comprobarlo
ejecutando los siguientes comandos. El número de puerto o nombre del archivo
socket de Unix pueden ser diferentes en su configuración.
host_ip representa el número de IP de la máquina
donde se está ejecutando el servidor.represents the IP number of the
machine where the server is running.
shell> mysqladmin version shell> mysqladmin variables shell> mysqladmin -h `hostname` version variables shell> mysqladmin -h `hostname` --port=3306 version shell> mysqladmin -h host_ip version shell> mysqladmin --protocol=socket --socket=/tmp/mysql.sock version
Tenga en cuenta la utilización de acentos abiertos en vez de comillas en
el comando hostname; esto provoca que la salida
de hostname (es decir, el nombre de máquina actual)
sea sustituida en el comando mysqladmin. Si no tiene
ningún comando hostname o está ejecutando sobre
Windows, puede escribir manualmente el nombre de su máquina (sin acentos
abiertos) tra la opción -h. También puede intentarlo
con -h 127.0.0.1 para conectarse con TCP/IP a la máquina
local.
Aquí hay algunas razones por las que el error
Can't connect to local MySQL server podría ocurrir:
mysqld no se está ejecutando. Compruebe la lista de procesos de sus sistema operativo para asegurarse de que el proceso mysqld está presente.
Usted está ejecutando un sistema que utiliza hilos tipo MIT-pthreads. Si está ejecutando un sistema que no tiene hilos antivos, mysqld utiliza el paquete de MIT-pthreads package. Consulte Sección 2.1.1, “Sistemas operativos que MySQL soporta”. Aún así, no todas las versiones de MIT-pthreads soportan los archivos socket de Unix. En un sistema sin soporte para archivos socket, siempre debe especificar el nombre de máquina explícitamente cuando se conecte al servidor. Intente utilizar este comando para comprobar la conexión con el servidor:
shell> mysqladmin -h `hostname` version
Alguien ha borrado el archivo socket de Unix que
mysqld utiliza
(/tmp/mysql.sock por defecto). Por ejemplo,
usted podría tener un trabajo de cron que elimine
los archivos antiguos del directorio /tmp. Siempre
puede ejecutar mysqladmin version para comprobar
si el archivo socket de Unix que to check whether the Unix socket file that
mysqladmin está intentando utilizar existe realmente.
La solución en este caso es cambiar el trabajo de
cron para que no elimine
mysql.sock o colocar el archivo socket en algún
otro lugar. Consulte Sección A.4.5, “Cómo proteger o cambiar el fichero socket de MySQL /tmp/mysql.sock”.
Usted ha iniciado el servidor mysqld con la opción
--socket=/path/to/socket, pero ha olvidado decirle
al programa cliente el nuevo nombre del archivo socket. Si cambia
la ruta del socket en el servidor, también tiene que notificárselo a los
programas cliente. Puede hacer esto proporcionándole al cliente la
misma opción --socket al ejecutarlo. También debe
asegurarse de que los programas cliente tienen permiso para acceder
al archivo mysql.sock. Para averiguar donde está
almacenado el archivo, puede hacer:
shell> netstat -ln | grep mysql
Consulte Sección A.4.5, “Cómo proteger o cambiar el fichero socket de MySQL /tmp/mysql.sock”.
Usted está ejecutando Linux y un hilo del servidor ha muerto (volcado
de memoria). En este caso, usted debe matar el resto de hilos de
mysqld (por ejemplo, con kill
o con el script mysql_zap) antes de que pueda
reiniciar el servidor MySQL. Consulte Sección A.4.2, “Qué hacer si MySQL sigue fallando (crashing)”.
El servidor o el programa cliente podrían no tener los privilegios
de acceso adecuados para el directorio que almacena el archivo socket
de Unix, o para el archivo mismo. En este caso, usted debe cambiar
los privilegios del directorio o los del archivo mismo para que el servidor
y los clientes puedan acceder a ellos, o reiniciar mysqld
con una opción --socket que especifique un nombre
de archivo de socket en un directorio donde el servidor pueda crearlo
y los programas cliente puedan acceder a él.
Si usted obtiene el mensaje de error Can't connect to MySQL
server on some_host, puede intentar los siguientes procedimientos
para averiguar cual es el problema:
Compruebe si el servidor se está ejecutando en esa máquina mediante
la ejecución de telnet some_host 3306 y presionando
la tecla Enter unas cuantas veces. (3306 es el puerto por defecto de MySQL.
Cambie el valor si su servidor está escuchando en un puerto diferente.)
Si hay un servidor MySQL ejecutándose y escuchando al puerto, debería
obtener una respuesta que incluyera el número de versión del servidor.
Si obtiene un error como telnet: Unable to connect to
remote host: Connection refused, entonces no hay ningún
servidor ejecutándose en el puerto dado.
Si el servidor está ejecutándose en la máquina local, intente utilizar
mysqladmin -h localhost variables para conectar
utilizando el archivo socket de Unix. Colmpruebe el número de puerto
TCP/IP al que el servidor está configurado para escuchar (es el valor
de la variable port.)
Asegúrese de que su servidor mysqld no fue iniciado
utilizando la opción --skip-networking. Si lo fue
no puede conectarse a él utilizando TCP/IP.
Compruebe que no hay un cortafuegos bloqueando el acceso a MySQL. Aplicaciones como ZoneAlarm o el cortafuegos personal de Windows XP podría necesitar ser configurados para permitir el acceso externo a un servidor MySQL.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.
