A questão aqui é que quando MariaDB ou MySQL são instalados / atualizados (especialmente se em algum ponto a raiz é definida sem uma senha) então na tabela Users a senha está vazia (ou ignorada), e o login depende da usuário do sistema correspondente a um usuário MySQL.
Você pode testar isso da seguinte maneira, alternando para raiz do sistema e, em seguida, digite:
mysql -uroot -p
Em seguida, insira a senha ou a senha errada . Você provavelmente será deixado entrar. (Você pode até ser capaz de logar pela raiz unix simplesmente # mysql
, pois a senha é irrelevante e o usuário está definido).
Então, o que está acontecendo? Bem, se você logar como root e faça o seguinte:
select User,host,plugin from mysql.user;
+----------------+-----------+-----------------------+
| User | host | plugin |
+----------------+-----------+-----------------------+
| root | localhost | auth_socket |
+----------------+-----------+-----------------------+
você verá auth_socket
(que pode ler unix_socket
no MariaDB). Estes sockets ignoram as senhas e permitem ao usuário Unix correspondente em sem uma verificação de senha. É por isso que você pode fazer login com root , mas não com um usuário diferente.
Portanto, a solução é atualizar os usuários para não usarem o auth_socket/unix_socket
e definirem corretamente uma senha.
No MariaDB (< 10.2) que está na versão 16 do Ubuntu a partir de 2017, isso deve ser suficiente:
UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
(É possível que a configuração do plugin para o vazio funcione. YMMV. Eu não tentei isso.)
UPDATE mysql.user SET plugin = '', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
Caso contrário:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';
Então
FLUSH PRIVILEGES;
Para registro, a solução envolvendo excluir o usuário e recriá-lo com '%' me bloqueou totalmente do banco de dados e pode causar outros problemas, a menos que você obtenha a instrução grant
exatamente correta - é mais fácil simplesmente atualizar o root que você já tem.
Na minha experiência, o problema ocorre apenas com o usuário root, já que outros usuários serão adicionados manualmente, não parte de uma instalação / atualização inicial.