Il problema qui è che quando MariaDB o MySQL sono installati / aggiornati (specialmente se a un certo punto la radice è impostata senza una password) quindi nella tabella Utenti la password è effettivamente vuota (o ignorata), e il login dipende dal utente di sistema corrispondente a un utente MySQL.
È possibile verificare ciò come segue passando a root di sistema, quindi digitare:
mysql -uroot -p
Quindi inserisci nessuna password o la password errata em>. Probabilmente sarai lasciato entrare. (Potresti anche essere in grado di accedere dalla radice unix semplicemente # mysql
dato che la password è irrilevante e l'utente è definito).
Quindi cosa sta succedendo? Bene, se accedi come root e fai quanto segue:
select User,host,plugin from mysql.user;
+----------------+-----------+-----------------------+
| User | host | plugin |
+----------------+-----------+-----------------------+
| root | localhost | auth_socket |
+----------------+-----------+-----------------------+
noterai auth_socket
(che potrebbe leggere unix_socket
su MariaDB). Questi socket ignorano le password e consentono all'utente corrispondente di Unix di senza un controllo della password. Questo è il motivo per cui puoi accedere con root ma non con un utente diverso.
Quindi la soluzione è aggiornare gli utenti per non utilizzare auth_socket/unix_socket
e impostare correttamente una password.
Su MariaDB (& lt; 10.2) che è sulla versione 16 di Ubuntu a partire dal 2017 dovrebbe essere sufficiente:
UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
(È possibile che l'impostazione del plug-in per svuotarlo funzionerebbe. YMMV. Non l'ho provato.)
UPDATE mysql.user SET plugin = '', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
In caso contrario:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';
Quindi
FLUSH PRIVILEGES;
Per la cronaca, la soluzione che comporta l'eliminazione dell'utente e la sua creazione con '%' mi ha completamente escluso dal database e può causare altri problemi a meno che non si ottenga esattamente l'istruzione grant
- più semplice aggiornare semplicemente il radice che hai già.
Nella mia esperienza, il problema si verifica solo con l'utente root, in quanto altri utenti verranno aggiunti manualmente non facenti parte di un'installazione / aggiornamento iniziale.