Accès refusé pour l'utilisateur "root" @ "localhost" (en utilisant le mot de passe: oui) après une nouvelle installation sur Ubuntu

Aujourd'hui, j'ai fait un login comme root dans Ubuntu 14.04.1 LTS ll

puis apt-get install mariadb-server (sans sudo mais comme racine).

avec mySQL -h localhost -u root --password=<PW> j'ai eu

Accès refusé à l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: oui)

avec mySQL -u root -p je me suis connecté au DB et j'ai fait

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

mais cela n'a pas aidé. Avez-vous une idée? Je n'ai pas trouvez la réponse aux questions similaires.

48
demandé sur SQL-Neuling 2015-01-21 16:13:16

7 réponses

TL; DR: pour accéder aux nouvelles versions de mysql / mariadb après en tant qu'utilisateur root, après une nouvelle installation, vous devez être dans un shell root (i.e. sudo mysql -u root , ou mysql -u root à l'intérieur d'un shell commencé par su - ou sudo -i en premier)


après avoir 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

Would accepter mon mot de passe, et me permettre de le configurer, mais je ne pouvais pas me connecter en tant que root via le mysql client

j'ai dû commencer à mariadb avec

sudo mysqld_safe --skip-grant-tables

pour obtenir l'accès en tant que root, alors que tous les autres utilisateurs pouvaient encore accéder à fine.

en regardant la table mysql.user j'ai remarqué pour root que la colonne plugin est définie à unix_socket alors que pour tous les autres utilisateurs elle est définie à "mysql_native_password". Rapide regardez cette page: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin / explique que la 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, l'accès mariadb comme root vous devez être connecté en tant que root.

redémarrer mon démon mariadb avec 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 ceci j'ai pensé à 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;

ou

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

puis redémarrage mariadb:

sudo service mysql restart

Et voila j'ai eu accès à partir de mon compte personnel vi mysql -u root -p

VEUILLEZ NOTER QUE Faire ceci réduit la sécurité probablement les développeurs MariaDB ont choisi d'avoir un travail d'accès racine comme ceci pour une bonne raison.

en y repensant, je suis très heureux d'avoir à sudo mysql -u root -p donc je vais revenir à cela, mais j'ai pensé que je posterais ma solution car je ne pouvais pas en trouver une ailleurs.

129
répondu DorianFM 2018-07-15 10:47:41

nettoyer Ubuntu 16.04 LTS, MariaDB root login localhost a changé de style mot de passe pour sudo connexion de style...

donc, il suffit de faire

sudo mysql -u root

depuis que nous voulons nous connecter avec mot de passe, créer un autre utilisateur 'utilisateur '

dans la console MariaDB... (vous obtenez dans MariaDB console avec "sudo mysql -u root')

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

puis dans l'invite de shell bash,

mysql-workbench

et vous pouvez vous connecter avec l'utilisateur " par "votremotdepasse" sur localhost

28
répondu Curycu 2017-07-25 15:11:53

j'ai eu un problème similaire. Dans mon cas, c'est arrivé parce que j'ai corrompu ma table d'utilisateurs du serveur MySQL.

Cet article qui m'a aidé: mysql-how-to-fix-Accès refusé pour l'utilisateur'root'@'localhost'

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

3
répondu fishi 2017-03-20 10:18:16

j'ai dû être connecté à Ubuntu en tant que root pour accéder à Mariadb en tant que root. Il peut avoir quelque chose à voir avec le "Durcir ..."qu'il vous invite à le faire lors de la première installation. So:

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

et vous êtes dedans.

2
répondu Joe C 2017-06-02 21:44:39

la nouvelle commande pour supprimer les privilèges est:

FLUSH PRIVILEGES

L'ancien FLUSH ALL PRIVILEGES ne fonctionne plus.

vous obtiendrez une erreur qui ressemble à cela:

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

Espérons que cela aide :)

1
répondu Sylvain 2017-07-24 15:15:55

, Essayez la commande

sudo mysql_secure_installation

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

Si vous obtenez une erreur comme

Erreur

2002 (HY000): impossible de se connecter au serveur MySQL local par socket "/var/run/mysqld / mysqld.sock '

activer le service avec

service mysql start

maintenant si vous entrez de 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 '<password>';

cela a réglé mon problème en MariaDB .

bonne chance

1
répondu IsraelM17 2018-02-25 22:10:18

Vous avez juste besoin d'utiliser sudo pour le faire fonctionner

sudo mysql_secure_installation
-1
répondu Uahmed 2016-08-08 21:31:07