Así que este es un problema muy complicado.
Porque por lo que describiste (muy detallado), todavía hay muchas causas posibles para este problema.
PREGUNTA: Así que aquí hay algunas preguntas resumidas para usted (desde mi experiencia):
- ¿Su
MySQL not running
? sucedió durante su primer inicio (xampp start / xampp startmysql)? - Después de instalar xampp en Linux, ¿personalizó la configuración de MySQL (predeterminada, etc./my.cnf)?
- SI SE PERSONALIZA ¿Personalizaste tu directorio de base de datos a una ubicación diferente (por defecto /opt/lampp/var/mysql)?
- SI NO SE PERSONALIZA Como mencionó, tiene acceso a la línea de comandos de mysql, ¿ha intentado SQL en su base de datos, o si la base de datos ni siquiera estaba accesible (lo que significa que el servidor mysql, llamado mysqld, no se inició correctamente)?
- ¿Ha inicializado/instalado personalmente una base de datos mysql (bin/mysql_install_db predeterminado)? Bien, estas preguntas anteriores deberían brindarle una idea básica para solucionar problemas.
SOLUCIÓN:
Así que este debería ser el problema más simple y podría ayudarnos a identificar mejor las causas del error.
Comprobar
a) en la configuración de MySQL (my.cnf), ¿cuál es su usuario en ejecución? este debería ser un parámetro en [mysqld] user=... (mysql predeterminado), asumimos que nuestra configuración está establecida en mysql
b) ¿Tiene una cuenta para ejecutar el comando de terminal de prueba de usuario id -u mysql
, si devuelve un número de identificación, entonces la cuenta existe; de lo contrario, debería indicarle que no such user
. Debe tener este usuario para ejecutar el servidor mysql y escribir el registro de errores (mirando la segunda parte de su registro de terminal, su cuenta debería existir)
c) verifique la ubicación del registro de errores de configuración de MySQL (my.cnf), debe estar bajo [mysqld] como parámetro log-error=... si esto no está escrito, agréguelo (debe estar bajo [mysqld]).
d) verifique cada directorio de su ruta completa de registro que (por ejemplo, /var/log/mysql/error.log)
- /var debería tener
read
yexecute
autoridad para el usuario de mysql (que es al menos ******r-x) pase la autoridad de creación de archivo (ejecutar) - /var/log debería tener
read
yexecute
autoridad para el usuario de mysql (que es al menos ******r-x) pase la autoridad de creación de archivo (ejecutar) - /var/log/mysql debería tener
read
,write
yexecute
autoridad para el usuario mysql (que es ******rwx) autoridad para crear y escribir archivos
Para que su archivo error.log pueda crearse aquí, si aún no funciona, intente crearlo manualmente con el propietario como mysql, el grupo como mysql y la autoridad de 660.
hay varios enfoques para verificar esto
a) use mysql.server (bin/mysql.server predeterminado) para hacer mysql.server status
dominio. Si su servidor MySQL está funcionando, debería mostrar ¡ÉXITO! MariaDB se está ejecutando.
b) usar top
comando para verificar si el servicio se está ejecutando, o use top | grep "mysqld"
. mysqld
y mysqld_safe
debería estar en él.
c) inicie sesión en la línea de comandos de mysql tal como lo hizo en el registro de terminal 4 (esta parte funciona) y ejecute el comando SHOW DATABASES;
esto también debería funcionar.
lo hice
[[email protected] ~]# /opt/lampp/xampp status
Version: XAMPP for Linux 7.4.1
Apache is running.
MySQL is not running.
ProFTPD is running.
[[email protected] ~]# /opt/lampp/bin/mysql.server status
SUCCESS! MariaDB running (xxxx)
Entonces, esto muestra que xampp está obteniendo el estado del servicio incorrectamente (como otra publicación La base de datos MySQL se inicia en la Terminal pero no en XAMPP )
Podría rastrear en detalle cómo funciona xampp, pero en /opt/lampp/xampp
archivo de script, encontré /opt/lampp/share/xampp/status
y /opt/lampp/share/statusraw
Vaya más allá (ambos /opt/lampp/share/xampp/status
y /opt/lampp/share/statusraw
archivo),
/opt/lampp/var/mysql/` /bin/hostname`.pid mysqld
Como mi base de datos se personalizó en un directorio localizado, esto significa que el archivo pid no estará en /opt/lampp/var/mysql
, y este estado siempre regresará incorrectamente.
Entonces, cambiar esto a mi propia ubicación de pid de base de datos resolvió el problema.