Este documento apresenta soluções para problemas comuns de instalação, configuração e gerenciamento do MySQL para ajudar você a manter a estabilidade do servidor.
Senhas de usuários do MySQL esquecidas
Se você esquecer a senha de um usuário que não seja root, use o usuário root para alterá-la diretamente. Caso tenha esquecido a senha do usuário root, pare o serviço do MySQL e reinicie-o em um modo especial que ignora as verificações de permissão. Isso permite redefinir a senha.
Senha esquecida para um usuário que não seja root
-
Consulte o valor de
Hostdo usuário desejado.# Replace with the actual username mysql -uroot -p -e "SELECT Host FROM mysql.user WHERE User = 'target_username';" -
Altere a senha com base no valor de
Host. Se o usuário tiver múltiplos valores deHost, execute o comando para cada um deles.# Replace with the actual username, password, and Host mysql -uroot -p -e "ALTER USER 'target_username'@'target_host' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES;"
Senha do usuário root esquecida
Redefinir a senha do usuário root exige parar o serviço do MySQL.
-
Pare o serviço do MySQL executando o seguinte comando.
Alibaba Cloud Linux e CentOS
sudo systemctl stop mysqldUbuntu e Debian
sudo systemctl stop mysql -
Inicie o MySQL em modo temporário e anote o ID do processo. Você precisará desse ID para encerrar o processo posteriormente.
Nota--skip-grant-tables: Ignora a validação de permissões e permite login sem senha.&: Executa o processo do MySQL em segundo plano. O terminal retorna um ID de processo (PID). Por exemplo, na saída[1] 1234, o PID é1234.
sudo -u mysql mysqld --skip-grant-tables & -
Recarregue as tabelas de autorização e altere a senha do root. Substitua
<password>pela nova senha. A senha deve obedecer à política atual: ter no mínimo 8 caracteres, incluindo pelo menos uma letra maiúscula, uma minúscula, um dígito e um caractere especial.mysql -uroot -e"FLUSH PRIVILEGES;" -e"ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';"Se aparecer o erro
Your password does not satisfy the current policy requirements, a senha não está em conformidade. Encerre o processo do MySQL, reinicie-o no modo que ignora permissões e execute o comando novamente com uma senha válida. -
Encerre o processo do MySQL.
kill <process ID> -
Inicie o serviço do MySQL executando o seguinte comando.
Alibaba Cloud Linux e CentOS
sudo systemctl start mysqldUbuntu e Debian
sudo systemctl start mysql -
Faça login com a nova senha. O acesso à linha de comando do MySQL confirma que a redefinição da senha foi bem-sucedida.
mysql -u root -p
Alteração do diretório de dados do MySQL
-
Pare o serviço do MySQL executando o seguinte comando.
Alibaba Cloud Linux e CentOS
sudo systemctl stop mysqldUbuntu e Debian
sudo systemctl stop mysql -
No arquivo de configuração
my.cnf(geralmente localizado em/etc/my.cnf), altere o valor dedatadirpara o caminho do novo diretório de dados.datadir=/new/data/directory -
Copie todos os arquivos e pastas do diretório de dados original para o novo diretório.
sudo cp -aR /old/data/directory/* /new/data/directory/ -
Inicie o serviço do MySQL executando o seguinte comando.
Alibaba Cloud Linux e CentOS
sudo systemctl start mysqldUbuntu e Debian
sudo systemctl start mysql
Erro de inicialização do MySQL: Permission denied
-
Verifique o arquivo
error.logdo MySQL para identificar a mensagem de erro específica.NotaGeralmente, esse arquivo encontra-se em
/var/log/mysqld.logou/var/log/mysql/error.log.[ERROR] [MY-010092] [Server] Can't start server: can't create PID file: Permission denied -
Localize e encerre quaisquer processos
mysqldremanescentes.sudo ps aux | grep mysqld sudo kill -9 <process ID> -
Inicie o serviço do MySQL executando o seguinte comando.
Alibaba Cloud Linux e CentOS
sudo systemctl start mysqldUbuntu e Debian
sudo systemctl start mysql
Erro de inicialização do MySQL: File './binlog.index' not found
-
Verifique o arquivo
error.logdo MySQL para identificar a mensagem de erro específica.NotaGeralmente, esse arquivo encontra-se em
/var/log/mysqld.logou/var/log/mysql/error.log.mysqld: File './binlog.index' not found (OS errno 13 - Permission denied) -
Esse erro costuma ocorrer devido à propriedade incorreta dos arquivos no diretório de dados do MySQL. Execute o comando abaixo para verificar a propriedade.
NotaO diretório de dados padrão geralmente é
/var/lib/mysql. Caso utilize um diretório personalizado, ajuste o comando conforme necessário.sudo ls -l /var/lib/mysql-rw-r----- 1 root root 56 Mar 19 15:51 auto.cnf -rw-r----- 1 root root 1551 Mar 19 15:51 binlog.000001 -rw-r----- 1 root root 16 Mar 19 15:51 binlog.index -rw------- 1 root root 1680 Mar 19 15:51 ca-key.pem -rw-r--r-- 1 root root 1108 Mar 19 15:51 ca.pem -rw-r--r-- 1 root root 1108 Mar 19 15:51 client-cert.pem -
Execute o comando a seguir para atribuir a propriedade correta ao usuário e grupo
mysql.sudo chown -R mysql:mysql <data_directory> -
Inicie o serviço do MySQL executando o seguinte comando.
Alibaba Cloud Linux e CentOS
sudo systemctl start mysqldUbuntu e Debian
sudo systemctl start mysql