Accès refusé à l’utilisateur ‘root’ @ ‘localhost’ (en utilisant le mot de passe: OUI) après une nouvelle installation sur Ubuntu

Aujourd’hui, j’ai ouvert une session en tant qu’utilisateur root sur Ubuntu 14.04.1 LTS ll

puis apt-get install mariadb-server (sans sudo mais en tant que root).

Avec mySQL -h localhost -u root --password=

Accès refusé pour l’utilisateur ‘root’ @ ‘localhost’ (en utilisant le mot de passe: OUI)

Avec mySQL -u root -p je me suis connecté à la firebase database et

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY ''; FLUSH ALL PRIVILEGES; 

Mais cela n’a pas aidé. Avez-vous une idée? Je n’ai pas trouvé la réponse aux questions similaires.

TL; DR: Pour accéder aux nouvelles versions de mysql / mariadb en tant qu’utilisateur root, après une nouvelle installation, vous devez être dans un shell racine (par exemple, sudo mysql -u root ou mysql -u root dans un shell démarré par su - ou sudo -i premier)


Ayant juste fait la même mise à jour, sur Ubuntu, j’avais 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 configurer, mais je ne pouvais pas me connecter en tant que root via le client mysql

Je devais commencer mariadb avec

 sudo mysqld_safe --skip-grant-tables 

pour avoir access en tant que root, alors que tous les autres utilisateurs peuvent toujours y accéder correctement.

En regardant la table mysql.user , j’ai remarqué que pour la racine, la colonne du plugin est définie sur unix_socket alors que tous les autres utilisateurs sont définis sur «mysql_native_password». Un rapide coup d’œil à 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 du processus exécutant le client avec celui de l’utilisateur dans la table mysql.user . En d’autres termes, pour accéder à mariadb en tant que root vous devez être connecté en tant que root.

Bien sûr, redémarrer mon démon mariadb avec une authentification requirejse Je peux me connecter en tant que root avec

 sudo mysql -u root -p 

ou

 sudo su - mysql -u root -p 

Ayant fait cela, j’ai réfléchi à la façon d’accéder sans avoir à faire le sudo, ce qui est juste une question de lancer ces requêtes mysql

 GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY ''; FLUSH PRIVILEGES; 

ou

 UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket'; FLUSH PRIVILEGES; 

Puis redémarrer mariadb:

 sudo service mysql restart 

Et voila j’ai eu access depuis mon compte personnel vi mysql -u root -p

VEUILLEZ NOTER QUE FAIRE CELA RÉDUIT LA SÉCURITÉ Les développeurs de MariaDB ont probablement opté pour un access root comme celui-ci pour une bonne raison.

En y repensant, je suis plutôt content d’avoir sudo mysql -u root -p donc je reviens à cela, mais je pensais pouvoir poster ma solution car je n’en trouverais pas ailleurs.

Dans Ubuntu 16.04 LTS propre, la connexion racine MariaDB pour localhost est passée du style de mot de passe au style de connexion sudo …

alors, fais juste

 sudo mysql -u root 

puisque nous voulons nous connecter avec un mot de passe, créez un autre utilisateur ‘utilisateur’

dans la console MariaDB … (vous obtenez dans la console MariaDB avec ‘sudo mysql -u root’)

 use mysql CREATE USER 'user'@'localhost' IDENTIFIED BY 'yourpassword'; \q 

puis à l’invite du shell bash,

 mysql-workbench 

et vous pouvez vous connecter avec ‘utilisateur’ avec ‘votre mot de passe’ sur localhost

J’ai déjà eu un problème similaire. Dans mon cas, cela s’est produit parce que j’ai en quelque sorte corrompu ma table utilisateur du serveur MySQL.

Cet article m’a aidé: mysql-comment-réparer-Access-denied-for-user-‘root ‘@’ localhost ‘

Fondamentalement, vous devez réinitialiser l’utilisateur root.

Je devais être connecté à Ubuntu en tant que root pour pouvoir accéder à Mariadb en tant que root. Cela peut avoir quelque chose à voir avec ce “Harden …” qu’il vous invite à faire lors de la première installation. Alors:

 $ sudo su [sudo] password for user: yourubunturootpassword # mysql -r root -p Enter password: yourmariadbrootpassword 

et vous êtes dedans

La nouvelle commande pour vider les privilèges est la suivante:

FLUSH PRIVILEGES

L’ancienne commande FLUSH ALL PRIVILEGES ne fonctionne plus.

Vous obtiendrez une erreur qui ressemble à ceci:

MariaDB [(none)]> FLUSH ALL PRIVILEGES; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL PRIVILEGES' at line 1

J’espère que cela t’aides 🙂

Essayer la commande

 sudo mysql_secure_installation 

appuyez sur Entrée et atsortingbuez un nouveau mot de passe pour root dans mysql / mariadb .

Si vous obtenez une erreur comme

ERROR 2002 (HY000): impossible de se connecter au serveur MySQL local via le socket ‘/var/run/mysqld/mysqld.sock’

activer le service avec

 service mysql start 

maintenant si vous entrez à nouveau avec

 mysql -u root -p 

si vous suivez le problème, entrez avec sudo su et mysql -u root -p maintenant appliquer les permissions à root

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '';

ceci a corrigé mon problème dans MariaDB .

Bonne chance

Il suffit d’utiliser sudo pour le faire fonctionner

 sudo mysql_secure_installation