Table of Contents
Consejos útiles para solucionar errores comunes en MySQL
MySQL. es un sistema de administración de bases de datos relacionales de código abierto ( RDMS. ampliamente utilizado propiedad de Oracle. A lo largo de los años, ha sido la opción predeterminada para las aplicaciones basadas en web y sigue siendo popular en comparación con otros motores de base de datos.
Lea también. Cómo instalar la última versión de MySQL en RHEL/CentOS y Fedora
MySQL. fue diseñado y optimizado para aplicaciones web; forma parte integral de las principales aplicaciones basadas en web como Facebook. Twitter. Wikipedia. YouTube. y muchos otros.
¿Su sitio o aplicación web funciona con MySQL ? En este artículo detallado, explicaremos cómo solucionar problemas y errores comunes en el servidor de base de datos MySQL. Describiremos cómo determinar las causas de los problemas y qué hacer para resolverlos.
1. No se puede conectar al servidor MySQL local
Uno de los errores más comunes de conexión entre el cliente y el servidor en MySQL es “ ERROR 2002 (HY000): No se puede conectar al servidor MySQL local a través del socket ‘/var/run/mysqld/mysqld.sock ‘(2). ”.
No se puede conectar al servidor MySQL local freestar.config.enabled_slots.push (LocationName:” tecmint_incontent “, slotId:” tecmint_incontent “);
Este error indica que no hay MySQL. servidor (mysqld) que se ejecuta en el sistema host o que ha especificado un nombre de archivo de socket Unix incorrecto o un puerto TCP/IP. al intentar conectarse al servidor.
Asegúrese de que el servidor se esté ejecutando comprobando un proceso llamado mysqld en el servidor de su base de datos usando el comando ps y el comando grep juntos como se muestra.
$ ps xa | grep mysqld | grep-v mysqld
Si los comandos anteriores no muestran salida, entonces el servidor de la base de datos no se está ejecutando. Por lo tanto, el cliente no puede conectarse a él. Para iniciar el servidor, ejecute el siguiente comando systemctl.
$ sudo systemctl start mysql # Debian/Ubuntu $ sudo systemctl start mysqld # RHEL/CentOS/Fedora
Para verificar el servicio MySQL. status, use el siguiente comando.
$ sudo systemctl status mysql # Debian/Ubuntu $ sudo systemctl status mysqld # RHEL/CentOS/Fedora
Verificar el estado de MySQL
Desde el resultado del comando anterior, el servicio MySQL. ha fallado. En tal caso, puede intentar reiniciarlo y verificar su estado una vez más.
$ sudo systemctl restart mysql $ sudo systemctl status mysql
Reinicie MySQL y verifique el estado
Además, si el servidor se está ejecutando como se muestra en el siguiente comando, pero aún ve el error anterior, también debe verificar que el TCP/IP. el puerto está bloqueado por un firewall o cualquier servicio de bloqueo de puertos.
$ ps xa | grep mysqld | grep-v mysqld
Para encontrar el puerto en el que está escuchando el servidor, use el comando netstat como se muestra.
$ sudo netstat-tlpn | grep “mysql”
2. No se puede conectar al servidor MySQL
Otro error de conexión que se encuentra comúnmente es “ (2003) No se puede conectar al servidor MySQL en el ‘servidor’ (10061). , lo que significa que la conexión de red ha sido rechazada.
Aquí, comience por verificar que haya un servidor MySQL. ejecutándose en el sistema como se muestra arriba. También asegúrese de que el servidor tenga las conexiones de red habilitadas y que el puerto de red que está usando para conectarse sea el configurado en el servidor.
Otros errores comunes que probablemente encontrará cuando intente conectarse a MySQL servidor son:
ERROR 2003: No se puede conectar al servidor MySQL en ‘host_name’ (111) ERROR 2002: No se puede conectar al servidor MySQL local a través del socket ‘/tmp/mysql.sock’ (111)
Estos errores indican que el servidor podría estar ejecutándose; sin embargo, está intentando conectarse utilizando un puerto TCP/IP. una canalización con nombre o un archivo de socket Unix diferente del que está escuchando el servidor.
3. Errores de acceso denegado en MySQL
En MySQL. una cuenta de usuario se define en términos de un nombre de usuario. y el host o hosts del cliente desde los que el usuario puede conectarse al servidor. Además, una cuenta también puede tener credenciales de autenticación, como una contraseña.
Aunque existen muchas causas diferentes de errores de “ Acceso denegado. , una de las causas comunes está relacionada con las cuentas MySQL que el servidor permite que los programas cliente utilicen al conectarse. Indica que el nombre de usuario. especificado en la conexión no tiene privilegios para acceder a la base de datos.
MySQL permite la creación de cuentas que permiten a los usuarios del cliente conectarse al servidor y acceder a los datos gestionados por el servidor. En este sentido, si encuentra un error de acceso denegado. verifique si la cuenta de usuario puede conectarse al servidor a través del programa cliente que está utilizando y posiblemente el host desde el que proviene la conexión. .
Puede ver qué privilegios tiene una cuenta determinada ejecutando el comando SHOW GRANTS como se muestra.
SHOW GRANTS FOR ‘tecmint’ @ ‘localhost’;
Puede otorgar privilegios a un usuario en particular en una base de datos específica a la dirección IP remota usando los siguientes comandos en el shell MySQL.
otorgue todos los privilegios en * .test_db a ‘tecmint’@’192.168.0.100’ ;> privilegios de descarga;
Además, los errores de acceso denegado. también pueden deberse a problemas con la conexión a MySQL; consulte los errores explicados anteriormente.
4. Conexión perdida con el servidor MySQL
Puede encontrar este error debido a una de las siguientes razones: mala conectividad de red. tiempo de espera de conexión. o a Problema con los valores de BLOB. que son mayores que max_allowed_packet. En caso de un problema de conexión de red, asegúrese de tener una buena conexión de red, especialmente si está accediendo a un servidor de base de datos remoto.
Si se trata de un problema de tiempo de espera de conexión. especialmente cuando MySQL. está intentando utilizar una conexión inicial al servidor, aumente el valor del parámetro connect_timeout. Pero en el caso de valores BLOB. que sean mayores que max_allowed_packet. debe establecer un valor más alto para max_allowed_packet. en su /etc/my.cnf. archivo de configuración en la sección [mysqld] o [cliente] como se muestra.
[mysqld] connect_timeout = 100 max_allowed_packet = 500M
Si no puede acceder al archivo de configuración MySQL. puede establecer este valor usando el siguiente comando en el shell de MySQL.
> ESTABLECER GLOBAL connect_timeout = 100;> ESTABLECER GLOBAL max_allowed_packet = 524288000;
5. Demasiadas conexiones MySQL
En caso de que un cliente MySQL. encuentre el error “ demasiadas conexiones. , significa que todas las conexiones disponibles están siendo utilizadas por otros clientela. El número de conexiones (el valor predeterminado es 151. está controlado por la variable de sistema max_connections; puede solucionar el problema aumentando su valor para permitir más conexiones en su archivo de configuración /etc/my.cnf.
[mysqld] max_connections = 1000
6. Sin memoria MySQL
En caso de que ejecute una consulta utilizando el programa cliente MySQL. y encuentre el error en cuestión, significa que MySQL no tiene suficiente memoria para almacenar la consulta completa resultado.
El primer paso es asegurarse de que la consulta sea correcta, si lo es, haga lo siguiente:
- si está utilizando el cliente MySQL directamente, inícielo con–quick switch, para deshabilitar los resultados almacenados en caché o
- si está utilizando el controlador MyODBC. la interfaz de usuario de configuración (UI) tiene una pestaña avanzada para banderas. Marque “ No almacenar en caché el resultado. .
Otra gran herramienta es MySQL Tuner. un script útil que se conectará a un Servidor MySQL y da sugerencias sobre cómo se puede configurar para un mayor rendimiento.
$ sudo apt-get install mysqltuner # Debian/Ubuntu $ sudo yum install mysqltuner # RHEL/CentOS/Fedora $ mysqltuner
Para optimización de MySQL y Consejos de optimización del rendimiento, lea nuestro artículo: 15 consejos útiles de optimización y ajuste del rendimiento de MySQL/MariaDB.
7. MySQL sigue fallando
Si encuentra este problema, debe intentar averiguar si el problema es que el servidor MySQL. muere o si es el cliente con un problema. Tenga en cuenta que muchas fallas del servidor son causadas por archivos de datos o archivos de índice dañados.
Puede verificar el estado del servidor para establecer cuánto tiempo ha estado en funcionamiento.
$ sudo systemctl status mysql # Debian/Ubuntu $ sudo systemctl status mysqld # RHEL/CentOS/Fedora
Alternativamente, ejecute el siguiente comando mysqladmin para encontrar el tiempo de actividad del servidor MySQL.
$ sudo mysqladmin version-p
Find MySQL Server Uptime
Otras soluciones incluyen, entre otras, detener el servidor MySQL. y habilitando la depuración, luego inicie el servicio nuevamente. Puede intentar hacer un caso de prueba que pueda usarse para repetir el problema. Además, abra una ventana de terminal adicional y ejecute el siguiente comando para mostrar las estadísticas del proceso de MySQL mientras ejecuta sus otras consultas:
$ sudo mysqladmin-i 5 status O $ sudo mysqladmin-i 5-r status La conclusión: Determinar qué está causando un problema o un error
Aunque hemos analizado algunos problemas y errores comunes de MySQL. y también proporcionamos formas de solucionarlos y solucionarlos, lo más importante al diagnosticar un error es comprender lo que significa (en términos de lo que lo está causando).
Entonces, ¿cómo puede determinar esto? Los siguientes puntos lo guiarán sobre cómo determinar qué está causando exactamente un problema:
- El primer y más importante paso es buscar en los registros de MySQL que están almacenados en el directorio/var/log/mysql/. Puede usar utilidades de línea de comandos como tail para leer los archivos de registro.
- Si el servicio MySQL no se inicia, verifique su estado usando systemctl o use el journetctl. (con el-xe flag) bajo systemd para examinar el problema.
- También puede examinar el archivo de registro del sistema como/var/log/messages o similar para conocer las razones de su problema.
- Intente usar herramientas como Mytop, glances, top, ps o htop para verificar qué programa está tomando toda la CPU o está bloqueando la máquina o para inspeccionar si se está quedando sin memoria, espacio en disco, descriptores de archivos o algún otro recurso importante.
- Suponiendo que el problema es un proceso fuera de control, siempre puede intentar eliminarlo (usando la utilidad pkill o kill) para que MySQL funcione normalmente.
- Suponiendo que mysqld. servidor está causando problemas, puede ejecutar el comando: mysqladmin-u root ping o mysqladmin-u root processlist para obtener alguna respuesta.
- Si el problema es con su programa cliente mientras intenta conectarse al servidor MySQL, verifique por qué no funciona bien, intente obtener algún resultado de él para fines de resolución de problemas.
También le gustaría leer estos siguientes datos de MySQL artículos relacionados:
- Aprenda MySQL/MariaDB para principiantes-Parte 1
- Cómo monitorear bases de datos MySQL/MariaDB usando Netdata en CentOS 7
- Cómo Transferir todas las bases de datos MySQL del servidor antiguo al nuevo
- Mytop: una herramienta útil para monitorear el rendimiento de MySQL/MariaDB en Linux
- 12 Mejores prácticas de seguridad de MySQL/MariaDB para Linux
Para obtener más información, consulte el manual de referencia de MySQL sobre problemas y errores comunes, que enumera detalladamente los problemas comunes y los mensajes de error que puede encontrar al usar MySQL, incluidos los que hemos discutido anteriormente y más.