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.
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/
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';
Pour MySQL 5.7, le mot de passe par défaut est imprimé dans les journaux. Un rapide grep peut le renvoyer.
grep 'temporary password' /var/log/mysqld.log
Références: https://www.percona.com/blog/2016/05/18/where-is-the-mysql-5-7-root-password/
https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
https://stackoverflow.com/questions/33991228/what-is-the-default-root-pasword-for-mysql-5-7
https://dba.stackexchange.com/questions/127537/setting-root-password-in-fresh-mysql-5-7-installation
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