TL; DR: Para acessar versões mais recentes de mysql / mariadb após como usuário root, após uma nova instalação, você precisa estar em um shell de root (ou seja sudo mysql -u root
, ou mysql -u root
dentro de um shell iniciado por su -
ou sudo -i
primeiro)
Tendo acabado de fazer a mesma atualização, no Ubuntu, tive o mesmo problema.
O que era estranho era que
sudo /usr/bin/mysql_secure_installation
Aceitaria minha senha e permitiria que eu a definisse, mas não consegui fazer login como root
por meio do mysql
cliente
Eu tive que começar o mariadb com
sudo mysqld_safe --skip-grant-tables
para obter acesso como root, enquanto todos os outros usuários ainda podem acessar corretamente.
Olhando para a mysql.user
tabela, notei que para root a plugin
coluna está configurada para unix_socket
enquanto todos os outros usuários estão configurados para 'mysql_native_password'. Uma olhada rápida nesta página: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ explica que o Unix Socket permite o login combinando uid
o processo que executa o cliente com o do usuário no mysql.user
tabela. Em outras palavras, para acessar o mariadb, root
você precisa estar logado como root.
Com certeza reiniciando meu daemon mariadb com autenticação necessária, posso fazer o login como root com
sudo mysql -u root -p
ou
sudo su -
mysql -u root -p
Tendo feito isso pensei em como acessar sem ter que fazer o sudo, que é apenas uma questão de executar essas consultas mysql
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(substituindo <password>
pela senha de root do mysql desejada). Esta senha habilitada faz login para o usuário root.
Como alternativa, execute a consulta mysql:
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
Irá mudar a conta root para usar login com senha sem mudar a senha, mas isso pode deixar você com uma instalação mysql / mariadb sem senha root.
Depois de qualquer um desses, você precisa reiniciar o mysql / mariadb:
sudo service mysql restart
E voila, tive acesso de minha conta pessoal via mysql -u root -p
OBSERVE QUE FAZER ISSO ESTÁ REDUZINDO A SEGURANÇA Presumivelmente, os desenvolvedores do MariaDB optaram por ter o acesso root funcionando assim por um bom motivo.
Pensando nisso, estou muito feliz de ter que fazer sudo mysql -u root -p
isso, então estou voltando para isso, mas pensei em postar minha solução porque não consegui encontrar nenhuma em outro lugar.