Consejos útiles para solucionar problemas de errores comunes en MySQL

Consejos útiles para solucionar problemas de errores comunes en MySQL

Mysql es un sistema de gestión de bases de datos relacionales de código abierto ampliamente utilizado (RDMS) propiedad de Oráculo. A lo largo de los años, ha sido la opción predeterminada para aplicaciones basadas en la web y sigue siendo popular en comparación con otros motores de base de datos.

Leer también: Cómo instalar el último MySQL en Rhel/Centos y Fedora

Mysql fue diseñado y optimizado para aplicaciones web: forma una parte integral de las principales aplicaciones basadas en la web como Facebook, Gorjeo, Wikipedia, YouTube, y muchos otros.

¿Su sitio o aplicación web está alimentada por Mysql? En este artículo detallado, explicaremos cómo solucionar problemas y errores comunes en Mysql servidor de base de datos. 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 de conexión de cliente a servidor común en MySQL es "Error 2002 (hy000): no se puede conectar al servidor MySQL local a través de Socket '/var/run/mysqld/mysqld.Calcetín '(2)".

No se puede conectar al servidor MySQL local

Este error indica que no hay Mysql servidor (mysqld) ejecutar en el sistema host o que ha especificado un nombre de archivo de socket unix incorrecto o TCP/IP puerto al intentar conectarse al servidor.

Asegúrese de que el servidor se esté ejecutando revisando un proceso con nombre mysqld en su host del servidor de base de datos utilizando 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 ejecuta. Por lo tanto, el cliente no puede conectarse a él. Para iniciar el servidor, ejecute el siguiente comando SYSTEMCTL.

$ sudo systemctl iniciar mysql #debian/ubuntu $ sudo systemctl iniciar mysqld #rhel/centos/fedora 

Para verificar el Mysql Estado del servicio, use el siguiente comando.

$ sudo systemctl status mysql #debian/ubuntu $ sudo systemctl status mysqld #rhel/centos/fedora 
Verifique el estado de MySQL

Desde la salida del comando anterior, el Mysql el servicio ha fallado. En tal caso, puede intentar reiniciarlo y verificar su estado una vez más.

$ sudo systemctl reiniciar mysql $ sudo systemctl status mysql 
Reiniciar mysql y verificar el estado

Además, si el servidor se ejecuta como se muestra en el siguiente comando, pero aún ves 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 escucha 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 comúnmente encontrado es "(2003) no pueden conectarse al servidor MySQL en 'servidor' (10061)", Lo que significa que la conexión de red ha sido rechazada.

Aquí, comience por verificar que haya un Mysql servidor que se ejecuta 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á utilizando para conectarse es el configurado en el servidor.

Es probable que otros errores comunes que encuentren cuando intente conectarse al servidor MySQL 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 de Socket '/TMP/MySQL.Calcetín '(111) 

Estos errores indican que el servidor podría estar ejecutándose, sin embargo, está tratando de conectarse usando un TCP/IP puerto, pipa nombrada o archivo de socket Unix diferente del que el servidor está escuchando.

3. Acceso negó los errores en mysql

En Mysql, Una cuenta de usuario se define en términos de un nombre de usuario y el host del cliente o los hosts del que el usuario puede conectarse al servidor. Además, una cuenta también puede tener credenciales de autenticación, como una contraseña.

Aunque hay muchas causas diferentes de "Acceso denegado"Errores, una de las causas comunes es relacionado con las cuentas MySQL que el servidor permite que los programas del cliente usen al conectarse. Indica que 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 de los clientes conectarse al servidor y acceder a los datos administrados por el servidor. En este sentido, si te encuentras Error de acceso de acceso, Compruebe si la cuenta de usuario puede conectarse al servidor a través del programa del cliente que está utilizando, y posiblemente el host desde el que proviene la conexión.

Puede ver qué privilegios tiene una cuenta determinada al ejecutar el Show subvenciones comando como se muestra.

> Mostrar subvenciones para 'TecMint'@'localhost'; 

Puede otorgar privilegios a un usuario en particular en una base de datos específica a la dirección IP remota utilizando los siguientes comandos en el shell mysql.

> otorgar todos los privilegios en *.test_db a 'TecMint'@'192.168.0.100 '; > privilegios de descarga; 

Además, Acceso a los errores denegados También puede resultar de problemas con la conexión a MySQL, consulte los errores explicados anteriormente.

4. Conexión perdida al servidor mysql

Puede encontrar este error debido a una de las siguientes razones: Conectividad de red deficiente, el tiempo de conexión expiro o Un problema con Blob valores que son más grandes 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 es un el tiempo de conexión expiro problema, particularmente cuando Mysql está tratando de usar una conexión inicial al servidor, aumente el valor del Connect_TimeOut parámetro. Pero en caso de Valores de blob que son más grandes que max_allowed_packet, Necesita establecer un valor más alto para el max_allowed_packet en tus /etc/mi.CNF archivo de configuración en [mysqld] o [cliente] Sección como se muestra.

[mysqld] Connect_timeout = 100 max_allowed_packet = 500m 

Si el Mysql El archivo de configuración no es accesible para usted, luego puede establecer este valor utilizando el siguiente comando en el shell mysql.

> Establecer global conection_timeout = 100; > Establecer global max_allowed_packet = 524288000; 

5. Demasiadas conexiones mysql

En caso de un Mysql El cliente encuentra el "Demasiadas conexionesError, significa que todas las conexiones disponibles están en uso por otros clientes. El número de conexiones (el valor predeterminado es 151) está controlado por el max_connections variable del sistema; Puede remediar el problema aumentando su valor para permitir más conexiones en su /etc/mi.CNF archivo de configuración.

[mysqld] max_connections = 1000 

6. Fuera de memoria mysql

En caso de que ejecute una consulta usando el Mysql Programa del cliente y encontrar el error en cuestión, significa que MySQL no tiene suficiente memoria para almacenar todo el resultado de la consulta.

El primer paso es asegurarse de que la consulta sea correcta, si es así, haga lo siguiente:

  • Si está utilizando el cliente mySQL directamente, comience con --cambio rápido, para deshabilitar los resultados en caché o
  • Si esta utilizando el Myodbc Controlador, la interfaz de usuario de configuración (UI) tiene una pestaña avanzada para los indicadores. Controlar "No el resultado de caché".

Otra gran herramienta es, Sintonizador mysql - Un script útil que se conectará a un servidor MySQL en ejecución y ofrece 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 los consejos de optimización y ajuste de rendimiento de MySQL, lea nuestro artículo: 15 consejos útiles de ajuste y optimización de rendimiento MySQL/mariadb.

7. Mysql sigue bloqueando

Si encuentra este problema, debe intentar averiguar si el problema es que el Mysql El servidor muere o si es el cliente con un problema. Tenga en cuenta que muchos bloqueos del servidor son causados ​​por archivos de datos corruptos o archivos de índice.

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 inicio del servidor mysql.

$ sudo mysqladmin versión -p 
Encuentra tiempo de actividad del servidor MySQL

Otras soluciones incluyen, entre otros, detener el Mysql servidor y habilitación de depuración, luego inicie el servicio nuevamente. Puede intentar hacer un caso de prueba que se pueda usar para repetir el problema. Además, abra una ventana de terminal adicional y ejecute el siguiente comando para mostrar estadísticas de proceso MySQL mientras ejecuta sus otras consultas:

$ sudo mysqladmin -i 5 estado o $ sudo mysqladmin -i 5 -r estado 

El resultado final: determinar qué está causando un problema o un error

Aunque hemos visto algo común Mysql problemas y errores y también proporcionaron formas de solucionarlos y resolverlos, lo más importante con el diagnóstico de un error es comprender lo que significa (en términos de lo que lo está causando).

Entonces, ¿cómo puedes determinar esto?? Los siguientes puntos lo guiarán sobre cómo determinar qué está causando exactamente un problema:

  1. El primer y más importante paso es analizar los registros de MySQL que se almacenan en el directorio /var/log/mysql/. Puede usar utilidades de línea de comandos como la cola para leer los archivos de registro.
  2. Si el servicio mySQL no se inicia, verifique su estado usando SystemCTL o use el Journetctl (con el -xe COMANDO DE LA FLAG) Bajo Systemd para examinar el problema.
  3. También puede examinar el archivo de registro del sistema como /var/log/mensajes o similar por razones de su problema.
  4. 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.
  5. Suponiendo que ese problema es un proceso desbocado, siempre puedes intentar matarlo (usando la utilidad Pkill o matar) para que MySQL funcione normalmente.
  6. Suponiendo que el mysqld El servidor está causando problemas, puede ejecutar el comando: mysqladmin -u root ping o mysqladmin -u raíz de procesos Para obtener cualquier respuesta de él.
  7. Si el problema es con su programa de cliente mientras intenta conectarse al servidor MySQL, verifique por qué no funciona bien, intente obtener cualquier salida con fines de solución de problemas.

También le gustaría leer estos siguientes artículos relacionados con MySQL:

  1. Aprenda mysql / mariadb para principiantes - Parte 1
  2. Cómo monitorear las bases de datos MySQL/MariadB utilizando NetData en Centos 7
  3. Cómo transferir todas las bases de datos MySQL de antiguo a nuevo servidor
  4. Mytop: una herramienta útil para monitorear el rendimiento de MySQL/Mariadb en Linux
  5. 12 mejores prácticas de seguridad MySQL/Mariadb para Linux

Para obtener más información, consulte el manual de referencia de MySQL sobre problemas y errores comunes, enumera exhaustivamente problemas comunes y mensajes de error que puede encontrar mientras usa MySQL, incluidas las que hemos discutido anteriormente y más.