TL; DR: Pour accéder aux versions plus récentes de mysql / mariadb après en tant qu'utilisateur root, après une nouvelle installation, vous devez être dans un shell root (c'est sudo mysql -u root
-à- dire , ou mysql -u root
dans un shell démarré par su -
ou en sudo -i
premier)
Ayant juste fait la même mise à jour, sur Ubuntu, j'ai eu le même problème.
Ce qui était étrange était que
sudo /usr/bin/mysql_secure_installation
Accepterait mon mot de passe et me permettrait de le définir, mais je ne pouvais pas me connecter root
via le mysql
client
Je devais commencer mariadb avec
sudo mysqld_safe --skip-grant-tables
pour accéder en tant que root, tandis que tous les autres utilisateurs peuvent toujours accéder correctement.
En regardant le mysql.user
tableau que j'ai remarqué pour root, la plugin
colonne est définie sur unix_socket
alors que tous les autres utilisateurs, elle est définie sur «mysql_native_password». Un rapide coup d'œil sur cette page: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ explique que le socket Unix permet de se connecter en faisant correspondre uid
le processus exécutant le client avec celui de l'utilisateur dans le mysql.user
table. En d'autres termes, pour accéder à mariadb, root
vous devez être connecté en tant que root.
Bien sûr, en redémarrant mon démon mariadb avec l'authentification requise, je peux me connecter en tant que root avec
sudo mysql -u root -p
ou
sudo su -
mysql -u root -p
Après avoir fait cela, j'ai réfléchi à la façon d'accéder sans avoir à faire le sudo, qui est juste une question d'exécuter ces requêtes mysql
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(en remplaçant <password>
par votre mot de passe root mysql souhaité). Ce mot de passe activé se connecte pour l'utilisateur root.
Vous pouvez également exécuter la requête mysql:
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
Va changer le compte root pour utiliser la connexion par mot de passe sans changer le mot de passe, mais cela peut vous laisser avec une installation mysql / mariadb sans mot de passe root.
Après l'un ou l'autre de ces derniers, vous devez redémarrer mysql / mariadb:
sudo service mysql restart
Et voila j'ai eu accès depuis mon compte personnel via mysql -u root -p
VEUILLEZ NOTER QUE FAIRE CELA RÉDUIRE LA SÉCURITÉ Les développeurs de MariaDB ont probablement choisi de faire fonctionner l'accès root comme celui-ci pour une bonne raison.
En y sudo mysql -u root -p
réfléchissant, je suis assez heureux de devoir le faire, alors je reviens à cela, mais j'ai pensé publier ma solution car je ne pouvais pas en trouver ailleurs.