J'ai installé le serveur Ubuntu 16.04. Le serveur Mysql y était installé par défaut. Lorsque j'essaie d'accéder à mysql avec mysql -u root -p
, je ne parviens pas à me connecter à mysql car je n'ai pas le mot de passe. Y a-t-il un mot de passe par défaut?
J'ai aussi essayé avec --skip-grant-tables
, même cela ne fonctionne pas. Même essayer de se connecter avec seulement mysql -u root
est un échec.
C'est ce que vous recherchez:Sudo mysql --defaults-file=/etc/mysql/debian.cnf
MySql sous Linux Debian utilise généralement un fichier de configuration avec les informations d'identification.
Mysql par défaut a le plug-in d'authentification de l'utilisateur root sous la forme auth_socket
, ce qui nécessite que le nom d'utilisateur du système et le nom d'utilisateur de la base de données soient identiques.
Plus précisément, connectez-vous en tant que root ou Sudo -i
et tapez simplement mysql
et vous serez connecté en tant que mysql root
. Vous pourrez ensuite créer d'autres utilisateurs.
Si vous n'avez pas de racine sur l'hôte, j'imagine que vous ne devriez pas être autorisé à vous connecter à mysql en tant que root?
Vous pouvez simplement réinitialiser le mot de passe root en exécutant le serveur avec --skip-grant-tables et en vous connectant sans mot de passe en exécutant ce qui suit en tant que root ou avec Sudo:
service mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
# service mysql stop
# service mysql start
$ mysql -u root -p
Je pense qu'un autre endroit à regarder est /var/lib
. Si vous y allez, vous pouvez voir trois dossiers mysql avec des autorisations 'intéressantes':
user group
mysql mysql
Voici ce que j'ai fait pour résoudre mon problème avec le mot de passe root:
après avoir couru
Sudo apt-get purge mysql*
Sudo rm -rf /etc/mysql
J'ai aussi couru ce qui suit (au lieu de mon_username mettez le votre):
cd /var/lib
Sudo chown --from=mysql <my_username> mysql* -R
Sudo rm -rf mysql*
Et alors:
Sudo apt-get install mysql-server
ce qui m'a incité à sélectionner un nouveau mot de passe root . J'espère que cela aide
Sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
essayez de cette façon, mon problème avec cette méthode a été résolu.J'ai eu une nouvelle installation de mysql-server
sur Ubuntu 18.10 et je n'ai pas pu me connecter avec le mot de passe par défaut. Alors seulement, j'ai appris que l'utilisateur root par défaut est authentifié avec auth_socket
. Donc, comme dans la réponse lorsque le plugin a été remplacé par mysql_native_password
, nous pouvons utiliser le mot de passe par défaut mysql
$ Sudo apt install mysql-server
$ Sudo cat /etc/mysql/debian.cnf
Vous pouvez trouver les lignes suivantes ici
user = debian-sys-maint
password = password_for_the_user
Ensuite:
$ mysql -u debian-sys-maint -p
Enter password:
tapez le mot de passe de debian.cnf
mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User | Host | plugin |
+------------------+-----------+-----------------------+
| root | localhost | auth_socket |
| mysql.session | localhost | mysql_native_password |
| mysql.sys | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT;
Non plus:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Ou:
// Pour MySQL 5.7+
mysql>UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Il suffit de lancer Sudo dpkg-reconfigure mysql-server-5.7
Vous pouvez trouver la version que vous avez installée en exécutant dpkg --get-selections | grep mysql-server