Impossible de se connecter via MySQL Workbench à localhost dans Ubuntu 16.04 (racine sans mot de passe)

17

Le site Web d'Oracle semble impliquer qu'il ne fonctionne que les 15 et 14. http://dev.mysql.com/downloads/workbench/

De plus, deux de mes machines Ubuntu 16.04 ne semblent pas pouvoir se connecter (erreurs d'accès est refusé pour root)

Image

Il s'installe bien. Ça ouvre bien. Mais il ne se connectera pas à localhost.

Quelqu'un a-t-il de la chance?

Jonathan
la source
L'avez-vous construit à partir des sources? Quelle est l'erreur exacte donnée? Similaire à lorsque vous spécifiez un mot de passe incorrect?
Oui c'est pareil. Mais root n'a pas de mot de passe. Et je peux me connecter correctement à root sur la ligne de commande. Et j'ai revérifié tous les privilèges et j'ai couru. FLUSH PRIVILEGES; À ce stade, je suis curieux de savoir si quelqu'un peut se connecter à localhost à partir du 16, car le site Oracle ne dit explicitement que 14 et 15
Jonathan
Je n'ai pas vu Oracle affirmer que cela ne fonctionne pas, je n'ai tout simplement pas vu de binaire pour Xenial. Je vois cependant mysql-workbench ici, packages.ubuntu.com/xenial/mysql-workbench . Cette erreur ne ressemble pas à une erreur de compatibilité logicielle. Activez la journalisation sur mysql et augmentez le niveau de journalisation à 2 et voyez si le journal affiche votre demande.
@ bc2946088 mysql-workbenchest dans le référentiel de l'univers pour le lien
Videonauth
avez-vous vérifié l'une des 4 options? ;-) WB fonctionne parfaitement bien pour moi (avec 5,7 btw). Preuve ci-dessous.
Rinzwind

Réponses:

27

Le problème est probablement dû à l'authentification par socket activée pour l'utilisateur root par défaut quand aucun mot de passe n'est défini, lors de la mise à niveau vers 16.04. Cette mise en garde importante est documentée dans les notes de version 16.04 :

Le comportement du mot de passe lorsque le mot de passe racine MySQL est vide a changé. L'empaquetage permet désormais l'authentification de socket lorsque le mot de passe racine MySQL est vide. Cela signifie qu'un utilisateur non root ne peut pas se connecter en tant qu'utilisateur root MySQL avec un mot de passe vide.

Pour une raison quelconque, le MySQL Workbench fourni avec 16.04 ne fonctionne pas avec le serveur MySQL, du moins pour moi. J'ai essayé d'utiliser "Local Socket / Pipe" pour me connecter de différentes manières mais en vain.

La solution consiste à revenir à l'authentification par mot de passe natif. Vous pouvez le faire en vous connectant à MySQL en utilisant l'authentification de socket en faisant:

sudo mysql -u root

Une fois connecté:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

qui reviendra à l'authentification par mot de passe natif (ancien par défaut). Si vous avez essayé une autre méthode pour résoudre le problème, vous devez vous assurer que le champ "plugin" dans mysql.user est défini sur "auth_token", ce qui peut nécessiter l'utilisation de mysqld_safe pour vous connecter à MySQL au cas où vous 'ai bricolé des choses, comme moi.

Nous remercions Miguel Nieto pour son blog pour cette solution.

Mike M
la source
Étonnant, je ne l'aurais jamais réalisé.
Jonathan
Cela l'a corrigé, mais la prochaine fois que j'ai exécuté la mise à jour d'apt, il s'est à nouveau cassé.
Jonathan
Quelle était la sortie de mise à jour apt?
Mike M
Je ne l'ai pas vu, car je n'ai pas remarqué jusqu'à la prochaine fois que j'ai exécuté mysql, beaucoup plus tard
Jonathan
Je me demande si c'est une chose Ubuntu 16.04 ou une chose mysql 5.7 (était-ce Oracle ou Canonical qui a fait ce changement?)
Jonathan
22

MySQL 5.7 et les versions ultérieures ne prennent pas en charge la connexion en tant que «root» mysql-workbench, vous devez donc créer un utilisateur normal et vous connecter via ce dernier.

sudo mysql -u root -p

Créez un utilisateur nommé "admin" et utilisez-le pour vous connecter mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Jonathan
la source
Cette réponse était parfaite pour moi, merci Jonathan.
Chris Evans
2
Cela fonctionne pour Ubuntu 18.04
tadeubarbosa
Parfait. Merci (18.04.2)
Ron Nuni
4

Cette question a peut-être deux ans mais mon travail avec mysql-workbench ce soir semble m'avoir donné la réponse.

l'utilisateur root utilise désormais l'authentification auth_socket par défaut. La seule façon dont root peut accéder est d'être connecté en tant que root.

J'ai découvert cela en exécutant à la mysql -u rootfois en tant qu'utilisateur root et utilisateur standard.

Cela ne fonctionnerait pas avec un utilisateur standard.

Donc, ma prochaine question était - sous quel utilisateur fonctionne mysql-workbench. Il s'avère qu'il fonctionne en tant qu'utilisateur standard par défaut. Pour le faire fonctionner en tant qu'utilisateur root, il doit être exécuté à partir de root. Je suis donc allé dans la CLI de l'utilisateur root et tapez 'mysql-workbench'.

J'ai ensuite dû entrer dans les paramètres de l'utilisateur root comme indiqué ici. L'emplacement du fichier est valide pour une installation d'ubuntu 18.04.

Paramètres de connexion racine mysql-workbench.

Si cet emplacement de socket n'est pas valide, vous devrez accéder à la CLI mysql à partir de root ou sudo et exécuter la commande suivante.

Commande CLI MySQL pour trouver le socket.

Une fois que vous avez les bons paramètres, testez la connexion. Cela devrait réussir et vous êtes prêt à partir.

George Tasker
la source
Merci pour ça! Je ne devrais pas avoir à annuler les modifications d'authentification liées à la sécurité pour prendre en charge un ancien outil, lorsque je peux simplement dire à cet outil de se connecter à l'aide de la nouvelle méthode.
Aaron
Puis-je établir une connexion locale de cette manière? Je ne comprends pas pourquoi ne pouvons-nous pas nous connecter via TCP / IP.
john gonidelis
2

Fonctionne bien pour moi et je n'ai rien de spécial. Installé mysql-server-5.7et établi à la fois à partir de la ligne de commande et configurer un utilisateur avec un mot de passe et configurer les autorisations de base de données normales (également avec la méthode normale).

entrez la description de l'image ici

Et avec une base de données et une table:

entrez la description de l'image ici

Rinzwind
la source
Intéressant. J'adore la référence du monde du disque. Lorsque je reconfigure les packages mysql, je ne reçois pas d'invite pour changer le mot de passe. Le faites vous? Je penche pour penser que j'ai une installation corrompue ou un conflit. Je pense que je suis censé recevoir une invite pour changer le mot de passe root.
Jonathan
1

Créez un compte utilisateur avec les privilèges administratifs appropriés qui peut se connecter via mysql workbench à l'aide du plugin auth_socket. Notez que cela ne fonctionne pas pour les connexions root au serveur mysql .

Connectez-vous à mysql à partir d'une session de terminal:

$sudo mysql

Si vous êtes en mesure de le faire, le plugin auth_socket est activé et le compte root s'authentifie à l'aide de ce plugin. Notez qu'il s'agit de la configuration par défaut lors de l'installation de mysql sur ubuntu après avoir exécuté le script d'installation sécurisée.

Créez d'abord un utilisateur mysql pour votre compte 'valerie':

mysql> CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;

Activez les privilèges administratifs pour le compte:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'valerie'@'localhost' WITH GRANT OPTION;

Quittez le shell:

mysql> exit

Puis dans mysql workbench:

  1. Créer une nouvelle connexion
  2. Sélectionnez la méthode de connexion comme Local Socket / Pipe
  3. Définissez le chemin du socket / tuyau sur: /var/run/mysqld/mysqld.sock (notez qu'il s'agit du chemin pour un système Debian / Ubuntu et des modifications pour d'autres versions de Linux)
  4. Définissez le nom d'utilisateur ('valerie' dans cet exemple)

Vous devriez alors pouvoir vous connecter au serveur mysql avec cette connexion.

David
la source
0

essaye ça

sélectionner la base de données mysql

1: utilisez mysql;

2: UPDATE user set plugin = 'mysql_native_password' where User = 'root';

3: privilèges de vidage;

4: sortie;

~ $ sudo service mysql restart

URI
la source
0

Serveur MySQL sur l'hôte AWS exécutant Ubuntu 16.04; mysql-workbench sur un ordinateur portable Ubuntu 16.04; utilise la connexion KeyPair.

Après avoir configuré la connexion Test db, la connexion fonctionnait. Mais la connexion réelle a toujours échoué avec un message comme celui publié par Jonathan Leaders. Vérifié le journal à ~/.mysql/workbench/loget trouvé quelques messages "permission refusée" .

Maintenant, je peux faire fonctionner mysql-workbench avec: sudo mysql-workbench

Et plus tard, je peux aller et chmodles répertoires nécessitant une autorisation.

Usman Suleman
la source
2
Est-ce une réponse à la question?
George Udosen