Então esse é um problema muito complicado.
Porque pelo que você descreveu (muito detalhado), ainda existem muitas causas possíveis para esse problema.
PERGUNTA: Então, aqui estão algumas perguntas resumidas para sua (da minha experiência):
- Seu
MySQL not running
aconteceu durante sua primeira inicialização (xampp start / xampp startmysql)? - Depois de instalar o xampp no Linux, você personalizou a configuração do MySQL (padrão etc/my.cnf)?
- SE PERSONALIZADO Você personalizou seu diretório de banco de dados para um local diferente (padrão /opt/lampp/var/mysql)?
- SE NÃO PERSONALIZADO Como você mencionou, você acessou a linha de comando mysql, tentou SQL em seu banco de dados ou se o banco de dados não estava acessível (o que significa que o servidor mysql, nomeado como mysqld, não foi iniciado corretamente)?
- Você inicializou/instalou pessoalmente um banco de dados mysql (padrão bin/mysql_install_db)?Ok, essas perguntas acima devem fornecer uma ideia básica de solução de problemas.
SOLUÇÃO:
1. problema no log de erros
Portanto, este deve ser o problema mais simples e pode nos ajudar a identificar melhor as causas do erro.
Verificar
a) na configuração do MySQL (my.cnf) qual é o seu usuário em execução? este deve ser um parâmetro em [mysqld] user=... (padrão mysql), assumimos nossa configuração definida como
mysql
b) você tem uma conta para executar o comando user try terminal
id -u mysql
, se ele retornar um número de identificação, a conta existe, caso contrário, deve informar no such user
. Você precisa ter esse usuário para executar o servidor mysql e gravar o log de erros (observando a segunda parte do registro do terminal, sua conta deve existir) c) verifique a localização do log de erros da configuração do MySQL (my.cnf), deve estar em [mysqld] como parâmetro log-error=... se não estiver escrito, adicione a ele (deve estar em [mysqld]).
d) verifique todos os diretórios do caminho completo do seu log que (por exemplo /var/log/mysql/error.log)
- /var deve ter
read
eexecute
autoridade para usuário mysql (que é pelo menos ******r-x) pass create file (execute) autoridade - /var/log deve ter
read
eexecute
autoridade para usuário mysql (que é pelo menos ******r-x) pass create file (execute) autoridade - /var/log/mysql deve ter
read
,write
eexecute
autoridade para usuário mysql (que é ******rwx) criar e escrever autoridade de arquivo
Para que seu arquivo error.log possa ser criado aqui, se ainda não funcionar, tente criá-lo manualmente com proprietário como mysql, grupo como mysql e autoridade de 660.
2. Status de execução do servidor MySQL
existem várias abordagens para verificar isso
a) use mysql.server (padrão bin/mysql.server) para fazer
mysql.server status
comando. Se o seu servidor MySQL estiver funcionando, ele deve mostrar SUCCESS! MariaDB está em execução. b) use
top
comando para verificar se o serviço está em execução, ou use top | grep "mysqld"
. mysqld
e mysqld_safe
deveria nele. c) faça login na linha de comando do mysql, assim como você fez no registro do terminal 4 (isso funciona em parte) e execute o comando
SHOW DATABASES;
isso também deve funcionar. 3. Local de banco de dados personalizado faz com que o status do mysql do Xampp não seja executado Este é um problema muito mais profundo, porque confirmei que o servidor MySQL está funcionando corretamente.
Eu fiz
[[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)
Portanto, isso mostra que o xampp está buscando o status do serviço incorretamente (como outro post Banco de dados MySQL inicia no Terminal, mas não no XAMPP )
Eu poderia rastrear em detalhes como o xampp funciona, mas em
/opt/lampp/xampp
arquivo de script, encontrei /opt/lampp/share/xampp/status
e /opt/lampp/share/statusraw
Vá mais longe (tanto
/opt/lampp/share/xampp/status
e /opt/lampp/share/statusraw
Arquivo), /opt/lampp/var/mysql/` /bin/hostname`.pid mysqld
Como meu banco de dados foi personalizado para o diretório localizado, isso significa que o arquivo pid não estará em
/opt/lampp/var/mysql
, e esse status sempre retornará incorretamente. Então, mudar isso para o meu próprio local do pid do banco de dados resolveu o problema.