Senha root do MySQL no Ubuntu 18.10

Achei estranho o MySQL não me perguntar a senha do root (do banco) durante sua instalação no Ubuntu 18.04. Eu estava acostumado com isso desde 2014. Na verdade, isso acontece por causa da versão do MySQL, que é a 5.7 (ou superior). Por isso, a autenticação ocorre através de um plugin chamado auth_socket. Vamos ver isso em detalhes. Entre no MySQL como super usuário:

sudo mysql

Vamos dar uma olhadinha na tabela de usuários:

mysql> SELECT user, authentication_string, plugin, host FROM mysql.user;

Vamos ver algo parecido com isso:

+------------------+-------------------------------------------+-----------------------+-----------+
| 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 | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Dá pra entender que o usuário root está usando o plugin auth_socket para se autenticar. O plugin tem algumas vantagens, entre elas facilitar a administração de vários ambientes diferentes. Mas para desenvolvedores, a boa e velha senha na maioria das vezes atende muito bem. Então, vamos mudar isso, para voltar a acessar via senha:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'senha_nova';

É isso. Nem precisa de FLUSH PRIVILEGES. Para testar, saia do command line tool com Ctrl + D e tente entrar novamente sem o sudo:

mysql -u root -p

Deve funcionar.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *