web-dev-qa-db-fra.com

Problème avec le mot de passe root mysql

Je suis sur Ubuntu 16.04 LTS. Quel est mon mot de passe root mysql? Si j'entre

mysql -u root -p

Il me demande de saisir un mot de passe: je ne le sais pas et aucun mot de passe ne fonctionnera pas non plus. Mysql était pré-installé, je n'ai donc choisi aucun mot de passe root. Si j'essaie de l'installer à nouveau, avec

Sudo apt-get install mysql-server

Il dit que mysql-server est déjà la dernière version (5.7.18-0ubuntu0.16.04.1)

Toute aide, astuces? Merci.

2
A. N. Other

Deux options:

La première consiste à purger mysql (uniquement si vous ne possédez pas de base de données):

Utilisation

apt-get purge mysql-server

pour purger et ensuite

apt-get install mysql-server

simplement le réinstaller. Lors de l'installation, il devrait vous demander un mot de passe. C’est le moyen le plus simple et le plus rapide. Cependant, des problèmes pourraient survenir si certains programmes, comme phpmyadmin, étaient déjà connectés à MySQL existant. Je vous suggère donc d’utiliser la

Ou procédez comme suit: Arrêtez le serveur MySQL en utilisant

Sudo service mysql stop 

Puis démarrez le mode sans échec avec

Sudo /usr/bin/mysqld_safe --skip-grant-tables & 

Sélectionnez localhost en tant qu'hôte (après la dernière commande, il n'y aura plus d'invite de commande, donc après le message Starting mysqld daemon with databases from [...], tapez la commande suivante)

mysql -h localhost

sélectionnez mysql avec

USE mysql 

(Remplacez VOTRE NOUVEAU MOT DE PASSE par votre nouveau mot de passe!) Type

UPDATE mysql.user 
SET authentication_string=PASSWORD('new_password') 
WHERE user='root' AND Host='localhost'; 

Sortir avec

quit 

Et redémarrez MySQL avec

Sudo mysqladmin shutdown 
Sudo service mysql start

Modifier

Cette erreur a quelque chose à voir avec votre socket MySQL. Tout d'abord, vous voulez trouver tous les fichiers de sockets sur votre système avec:

Sudo find / -type s

Votre prise devrait être quelque chose de semblable à ceci

/var/lib/mysql/mysql.sock

(important est la partie /mysql.sock)

Une fois que vous avez trouvé où ouvrir le socket, ajoutez ou modifiez la ligne à votre

/etc/my.cnf 

fichier avec le chemin d'accès au fichier de socket:

mettre

[mysqld]

au tout début et

socket=/path/to/your/socket/

tout à la fin du fichier.

Réessayez l'option 2. maintenant. Si cela ne fonctionne pas, continuez avec cette explication.

Si cela ne résout pas votre problème, quelque chose remplace l'emplacement de my.cnf, ce qui empêcherait de trouver un socket là où le fichier my.cnf indique qu'il devrait l'être. Ensuite, lorsque vous essayez d’exécuter le client en ligne de commande mysql, il lit le fichier my.cnf pour rechercher le socket, mais ne le trouvera pas car il diffère de celui où le serveur en a créé un. Donc, à moins que vous ne vous préoccupiez de l'emplacement du socket, il suffit de changer le fichier my.cnf pour qu'il corresponde.

Pour résoudre ce problème, commencez par arrêter le processus mysqld

pkill -9 mysqld

Cela fait, vous voudrez peut-être rechercher un fichier pid dans/var/run/mysqld/et le supprimer.

Assurez-vous que les permissions sur votre socket sont telles que tout utilisateur, mysqld, peut être lu/écrit. Un test simple consiste à l’ouvrir en lecture/écriture et à voir s’il fonctionne toujours:

chmod 755 /var/run/mysqld/mysqld.sock

Sources:

https://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html

https://ubuntu.flowconsult.at/en/mysql-set-change-reset-root-password/

https://stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq

1
ADDB

Pour le nouveau my-sql 5.7 si le mot de passe est laissé vide, il utilise auth_plugin.

Dans ce cas, connectez-vous avec le privilège Sudo.

$ Sudo mysql -u root -p

Après la connexion, vous pouvez simplement l'utiliser pour mettre à jour le mot de passe.

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

Pour une vérification complète de la réfraction ici .

EDIT: On peut aussi utiliser ceci (sans -u root):

$ Sudo mysql
$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
2
Nandesh
1
Bujiraso

UBUNTU 16.04 et MYSQL 5.7.20

Je n'ai pas trouvé les instructions de ADDB complètement utiles. Après une recherche, j'ai découvert ce qui suit (une petite réécriture de l'option 2):

Sudo /etc/init.d/mysql stop
    Sudo mkdir /var/run/mysqld/
    Sudo chown mysql /var/run/mysqld/
    Sudo mysqld_safe --skip-grant-tables &
    mysql -uroot
    use mysql;
    update user set authentication_string=PASSWORD("NEW_PASSWORD_GOES_HERE") where User='root';
    flush privileges;
    quit;
    Sudo /etc/init.d/mysql stop
    Sudo /etc/init.d/mysql start    

Référence: http://rricketts.com/reset-root-password-mysql-5-7-ubuntu-16-04-lts/

Ma méthode préférée:

J'ai utilisé l'utilisateur Mysql "debian-sys-maint" (un équivalent racine). Le mot de passe se trouve dans /etc/mysql/debian.cnf. Après vous être connecté à Mysql en tant que cet utilisateur, modifiez le mot de passe de tout utilisateur de Mysql.

USE mysql
SELECT root@localhost;
ALTER USER user IDENTIFIED BY 'auth_string';
ALTER USER 'Name_of_user_to_be_modified'@'Hostname (ie:localhost)' IDENTIFIED BY 'NEW_PASSWORD';
flush privileges;
exit;

Référence: https://serverfault.com/questions/9948/what-is-the-debian-sys-maint-mysql-user-and-more

0
arthurjohnston