Ao instalar o servidor de banco de dados MySQL no Ubuntu 18 o mesmo não solicita uma senha para o usuário de banco root e não funciona tentar se conectar utilizando a senha padrão em branco. Como resolver isso?
Parece que a partir da versão 5.7 do MySQL o mesmo passou a utilizar um esquema de autenticação chamado auth_socket.
Para voltar com o esquema antigo de autenticação (mysql_native_password) e definir uma senha para o usuário root faça o seguinte:
Faça login com o usuário mysql
sudo mysql
Para verificar que o mesmo está utilizando a autenticação auth_socket execute a query:
SELECT user, authentication_string, plugin, host FROM mysql.user;
Será exibido algo do tipo
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *E6582BC648BA7DCGFD5FAFE0CA3FE15897296652 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+
Para definir uma nova senha para o usuário de banco root do MySQL execute o comando SQL:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'senha_nova';
Saia da sessão com exit ou \q
Pronto! Basta testar a nova senha
mysql -u root -p