Access denied for user 'root'@'localhost' no MySQL Server Community 5.7 [Resolvido] - CentOS7 x86_64

Publicado por Alex Mendes em 25/11/2019

[ Hits: 21.997 ]

 


Access denied for user 'root'@'localhost' no MySQL Server Community 5.7 [Resolvido] - CentOS7 x86_64



Antes de começarmos, uma pequena observação, antes de iniciar este tutorial, entende-se que você já instalou o MySQL Server Community (Ex.: mysql80-community-release-el7-3.noarch)".

Bem, possivelmente, já deve ter acontecido com alguns utilizadores do MySQL Server ao instalar ou fazer upgrade do MySQL Server Community no Linux para uma versão mais atual, ao tentar se conectar surgir o erro:

# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

No caso acima, a tentativa foi acessar, subentendendo, não haver nenhuma senha definida (padrão das antigas versões). Então descobrimos que, possivelmente, exista uma senha pra se utilizar. Ao checar os tutoriais existentes, chegamos na seguinte dica:

Verificar no arquivo de LOG do MySQL a senha temporária criada pelo Daemon do MySQL Server:

# grep 'temporary password' /var/log/mysqld.log
2019-11-04T16:26:16.616787Z 1 [Note] A temporary password is generated for root@localhost: aL2l8yJWa

O LOG aponta que a senha temporária que foi gerada para o usuário root é "aL2l8yJWa".

Tá legal. Mas ocorre que, ao tentar acessar o MySQL com user root e esta senha, você possivelmente não conseguirá, e te retornará o seguinte erro:

# mysql -u root -p aL2l8yJWa
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)


Agora vem uma explicação importante, isto aconteceu porque na versão do MySQL Server 5.7, foi retirada por padrão a configuração que nos permite manipular o Daemon do MySQL para resetar a senha no método antigo (lembra do skip-grant-tables? Esse mesmo).

Para contornar isso, vamos editar o arquivo de configuração do MySQL e adicionar uma linha que permita esse tipo de alteração:

# vim /etc/my.cnf

Adicionar a linha abaixo:

skip-grant-tables=TRUE

Feito isso, reinicie o Daemon do MySQL Server:

# systemctl restart mysqld
# systemctl status mysqld
  ● mysqld.service - MySQL Server
     Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
     Active: active (running) since Seg 2019-11-04 15:14:45 -03; 37s ago


Agora sim! Vamos tentar acessar novamente o MySQL com a senha temporária que pescamos no LOG e assim definirmos uma nova senha para o user "root":

# mysql -u root -p aL2l8yJWa
Enter password:   <- digite a sua senha temporária (a minha foi:   aL2l8yJWa).

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.28


Feito isso, é seguir na execução dos comandos abaixo:

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE User = 'root' AND Host = 'localhost';
  Query OK, 1 row affected, 1 warning (0,00 sec)
  Rows matched: 1  Changed: 1  Warnings: 1


mysql> FLUSH PRIVILEGES;
  Query OK, 0 rows affected (0,06 sec)

Acima, nós atualizamos/redefinimos a senha temporária ('aL2l8yJWa') para a senha ('password'). É é lógico que você definirá uma senha forte e segura.

Pronto! Se preferir faça como eu, após execução do procedimento, retire a linha do arquivo de configuração "my.cnf" novamente e reinicie o serviço.
Linux: Como corrigir erro Access denied for user 'root'@'localhost' no Mysql Server Community 5.7 (Centos7 x86_64)
Outras dicas deste autor

Montagem de filesystem Windows CIFS automaticamente

Desabilitando Interface Gráfica no Debian 7

Virtualbox - GUI Interface não abre mais (XCB error) [Resolvido]

Instalação do Java JDK no Linux pelo arquivo-fonte (tar.gz)

Instalação/Upgrade mysqld 5.7: fatal error: mysql.user table is damaged [Resolvido]

Leitura recomendada

Recuperando a senha do root de seu MySQL

MySQL - Importar e exportar todos os bancos usando "mysqldump" e "source"

MySQL: Alterar diretório base de dados

Exportando dados do MySQL para arquivos textos

mysqldump - Unknown table 'COLUMN_STATISTICS' in ... [Resolvido]

  

Comentários
[1] Comentário enviado por baza em 07/10/2020 - 22:46h

Resolvi facilmente este problema. Uso o Linux Mint 20 + Apache 2 + MariaDB server 10.3
Abri o arquivo /etc/mysqld/mariadb.conf.d/50-server.conf e depois só acrescentei uma linha na ordem a seguir;
[mysqld]
skip-grant-tables

REINICIAR E PRONTO.
Passei 15 duas procurando uma solução até que assisti um vídeo de um usuário de windows com Xampp
https://www.youtube.com/watch?v=pOzdVqaD7rI
Abraços!
Com a pandemia muita gente voltou ou passou a usar o Linux!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts