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.
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.
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
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.
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.
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 :)
, 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
Erreur2002 (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
Vous avez juste besoin d'utiliser sudo pour le faire fonctionner
sudo mysql_secure_installation