Dicas úteis para solucionar erros comuns no MySQL

Dicas úteis para solucionar erros comuns no MySQL

Mysql é um sistema de gerenciamento de banco de dados relacional de código aberto amplamente usado (Rdms) de propriedade de Oráculo. Ao longo dos anos, foi a escolha padrão para aplicativos baseados na Web e ainda permanece popular em comparação com outros motores de banco de dados.

Leia também: Como instalar o MySQL mais recente em Rhel/Centos e Fedora

Mysql foi projetado e otimizado para aplicativos da Web - ele faz parte integrante de aplicativos principais baseados na Web, como Facebook, Twitter, Wikipedia, YouTube, e muitos outros.

O seu site ou aplicativo da web é alimentado por Mysql? Neste artigo detalhado, explicaremos como solucionar problemas e erros comuns em Mysql servidor de banco de dados. Descreveremos como determinar as causas dos problemas e o que fazer para resolvê -los.

1. Não consigo conectar ao servidor MySQL local

Um dos erros de conexão do cliente comum para o servidor no MySQL é “Erro 2002 (HY000): Não é possível conectar ao servidor MySQL local através do soquete '/var/run/mysqld/mysqld.meia '(2)”.

Não consigo conectar ao servidor MySQL local

Este erro indica que não há Mysql servidor (mysqld) executando no sistema host ou que você especificou um nome de arquivo de soquete Unix errado ou TCP/IP porta ao tentar se conectar ao servidor.

Verifique se o servidor está em execução verificando um processo nomeado mysqld no seu host do servidor de banco de dados usando o comando ps e o comando grep juntos, conforme mostrado.

$ ps xa | grep mysqld | grep -v mysqld 

Se os comandos acima não mostrarem saída, o servidor de banco de dados não estiver em execução. Portanto, o cliente não pode se conectar a ele. Para iniciar o servidor, execute o seguinte comando systemctl.

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

Para verificar o Mysql Status do serviço, use o seguinte comando.

$ sudo systemctl status mysql #Debian/ubuntu $ sudo systemctl status mysqld #rhel/centos/fedora 
Verifique o status do MySQL

Da saída do comando acima, o Mysql O serviço falhou. Nesse caso, você pode tentar reiniciá -lo e verificar seu status mais uma vez.

$ sudo systemctl reiniciar mysql $ sudo systatusctl status mysql 
Reinicie o MySQL e verifique o status

Além disso, se o servidor estiver em execução como mostra o seguinte comando, mas você ainda verá o erro acima, também deve verificar se o TCP/IP A porta é bloqueada por um firewall ou qualquer serviço de bloqueio de porta.

$ ps xa | grep mysqld | grep -v mysqld 

Para encontrar a porta em que o servidor está ouvindo, use o comando NetStat, como mostrado.

$ sudo netstat -tlpn | grep "mysql" 

2. Não consigo conectar ao servidor MySQL

Outro erro de conexão comumente encontrado é “(2003) não podem se conectar ao MySQL Server no 'servidor' (10061)”, O que significa que a conexão de rede foi recusada.

Aqui, comece verificando se há um Mysql servidor em execução no sistema como mostrado acima. Verifique também que o servidor possui conexões de rede ativadas e que a porta de rede que você está usando para se conectar é a configurada no servidor.

Outros erros comuns que você provavelmente encontrará quando tenta se conectar ao servidor MySQL:

Erro 2003: Não é possível conectar -se ao MySQL Server em 'host_name' (111) erro 2002: Não é possível conectar -se ao servidor MySQL local através do soquete '/tmp/mysql.meia '(111) 

Esses erros indicam que o servidor pode estar em execução; no entanto, você está tentando se conectar usando um TCP/IP Port, chamado Pipe ou arquivo de soquete Unix diferente daquele em que o servidor está ouvindo.

3. Acesso negado erros em MySQL

Em Mysql, uma conta de usuário é definida em termos de um nome de usuário e o host cliente ou hosts dos quais o usuário pode se conectar ao servidor. Além disso, uma conta também pode ter credenciais de autenticação, como uma senha.

Embora existam muitas causas diferentes de “Acesso negado”Erros, uma das causas comuns está relacionada às contas do MySQL que o servidor permite que os programas do cliente usem ao conectar. Indica isso nome de usuário Especificado na conexão não tem privilégios para acessar o banco de dados.

O MySQL permite a criação de contas que permitem que os usuários do cliente se conectem ao servidor e acesse os dados gerenciados pelo servidor. A esse respeito, se você encontrar um Acesso Erro negado, Verifique se a conta de usuário tem permissão para se conectar ao servidor através do programa cliente que você está usando e possivelmente o host do qual a conexão vem.

Você pode ver quais privilégios uma determinada conta tem executando o Mostrar subsídios comando como mostrado.

> Show subsídios para 'Tecmint'@'localhost'; 

Você pode conceder privilégios a um usuário específico em banco de dados específico para o endereço IP remoto usando os seguintes comandos no shell MySQL.

> conceda todos os privilégios em *.test_db para 'Tecmint'@'192.168.0.100 '; > Privilégios de descarga; 

Além disso, Acesso a erros negados Também pode resultar de problemas com a conexão com o MySQL, consulte os erros explicados anteriormente.

4. Conexão perdida com o MySQL Server

Você pode encontrar este erro devido a um dos seguintes motivos: Má conectividade de rede, Tempo limite da conexão ou Um problema com Blob valores maiores que max_allowed_packet. Em caso de um problema de conexão de rede, verifique se você tem uma boa conexão de rede, especialmente se estiver acessando um servidor de banco de dados remoto.

Se for um Tempo limite da conexão problema, principalmente quando Mysql está tentando usar uma conexão inicial com o servidor, aumentar o valor do Connect_timeout parâmetro. Mas em caso de Valores de blob que são maiores que max_allowed_packet, você precisa definir um valor mais alto para o max_allowed_packet na tua /etc/meu.CNF arquivo de configuração abaixo [MySqld] ou [cliente] seção como mostrado.

[mysqld] Connect_timeout = 100 max_allowed_packet = 500m 

Se o Mysql O arquivo de configuração não é acessível para você, então você pode definir esse valor usando o seguinte comando no shell mysql.

> Definir global connect_timeout = 100; > Definir global max_allowed_packet = 524288000; 

5. Muitas conexões MySQL

No caso a Mysql O cliente encontra o “Muitas conexõesErro, significa que todas as conexões disponíveis estão em uso por outros clientes. O número de conexões (o padrão é 151) é controlado pelo max_connections variável do sistema; você pode remediar o problema aumentando seu valor para permitir mais conexões em seu /etc/meu.CNF arquivo de configuração.

[mysqld] max_connections = 1000 

6. Fora da memória mysql

Caso você execute uma consulta usando o Mysql Programa do cliente e encontre o erro em questão, significa que o MySQL não tem memória suficiente para armazenar todo o resultado da consulta.

O primeiro passo é garantir que a consulta esteja correta, se estiver, faça o seguinte:

  • Se você estiver usando o cliente MySQL diretamente, inicie -o com --interruptor rápido, Para desativar resultados em cache ou
  • Se você estiver usando o Myodbc Driver, a interface do usuário de configuração (UI) tem uma guia avançada para sinalizadores. Verificar "Não faça o resultado do cache““.

Outra ótima ferramenta é, MySQL Tuner - Um script útil que se conectará a um servidor MySQL em execução e fornece sugestões de como ele pode ser configurado para um desempenho superior.

$ sudo apt-get install mysqltuner #debian/ubuntu $ sudo yum install mysqltuner #rhel/centos/fedora $ mysqltuner 

Para dicas de otimização e ajuste de desempenho do MySQL, leia nosso artigo: 15 dicas úteis de ajuste e otimização do MySQL/Mariadb.

7. O MySQL continua caindo

Se você encontrar esse problema, tente descobrir se o problema é que o Mysql o servidor morre ou se é o cliente com um problema. Observe que muitas falhas de servidor são causadas por arquivos de dados corrompidos ou arquivos de índice.

Você pode verificar o status do servidor para estabelecer quanto tempo ele está em funcionamento.

$ sudo systemctl status mysql #Debian/ubuntu $ sudo systemctl status mysqld #rhel/centos/fedora 

Como alternativa, execute o seguinte comando mysqladmin para encontrar o tempo de atividade do servidor MySQL.

$ sudo mysqladmin versão -p 
Encontre o tempo de atividade do MySQL Server

Outras soluções incluem, mas não se limitando a interromper o Mysql servidor e ativando a depuração, depois inicie o serviço novamente. Você pode tentar fazer um caso de teste que possa ser usado para repetir o problema. Além disso, abra uma janela adicional do terminal e execute o seguinte comando para exibir estatísticas do processo MySQL enquanto executa suas outras consultas:

$ sudo mysqladmin -i 5 status ou $ sudo mysqladmin -i 5 -r status 

Conclusão: determinar o que está causando um problema ou um erro

Embora tenhamos olhado para algum comum Mysql Problemas e erros e também forneceu maneiras de solucionar e resolvê -los, a coisa mais importante para o diagnóstico de um erro é entender o que isso significa (em termos do que está causando).

Então, como você pode determinar isso? Os seguintes pontos o guiarão sobre como verificar o que está causando exatamente um problema:

  1. A primeira e mais importante etapa é examinar os logs do MySQL que são armazenados no diretório /var/log/mysql/. Você pode usar utilitários de linha de comando, como cauda, ​​para ler os arquivos de log.
  2. Se o serviço MySQL não iniciar, verifique seu status usando o SystemCTL ou use o Journetctl (com o -xe sinalizador) comando sob Systemd para examinar o problema.
  3. Você também pode examinar o arquivo de log do sistema, como /var/log/mensagens ou similar por razões para o seu problema.
  4. Tente usar ferramentas como mytop, olhares, top, ps ou htop para verificar qual programa está pegando toda a CPU ou está bloqueando a máquina ou para inspecionar se você está ficando sem memória, espaço em disco, descritores de arquivos ou algum outro recurso importante.
  5. Supondo que esse problema seja um processo descontrolado, você sempre pode tentar matá -lo (usando o utilitário pkill ou matar) para que o MySQL funcione normalmente.
  6. Supondo que o mysqld O servidor está causando problemas, você pode executar o comando: MySqladmin -u Root Ping ou MySqladmin -u Root ProcessList Para obter qualquer resposta disso.
  7. Se o problema estiver com o seu programa de clientes enquanto tenta se conectar ao servidor MySQL, verifique por que não está funcionando bem, tente obter qualquer saída dele para solução de problemas.

Você também gostaria de ler os seguintes artigos relacionados ao MySQL:

  1. Aprenda MySQL / Mariadb para iniciantes - Parte 1
  2. Como monitorar bancos de dados MySQL/MariaDB usando o NetData no CentOS 7
  3. Como transferir todos os bancos de dados MySQL de antigo para novo servidor
  4. MYTOP - Uma ferramenta útil para monitorar o desempenho MySQL/MariaDB no Linux
  5. 12 práticas recomendadas de segurança MySQL/Mariadb para Linux

Para obter mais informações, consulte o Manual de Referência do MySQL sobre problemas e erros comuns, ele lista de maneira abrangente problemas comuns e mensagens de erro que você pode encontrar ao usar o MySQL, incluindo os que discutimos acima e mais.