J'ai une solution !
Lors de la réinitialisation du mot de passe root à l'étape 2), changez également le plugin d'authentification en mysql_native_password
:
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
Cela m'a permis de me connecter avec succès !
Solution de code complet
1. Tout d'abord, exécutez ces commandes bash
sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql
2. Ensuite, exécutez les commandes mysql => copiez-le et collez-le manuellement dans la CLI
use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user
flush privileges;
quit;
3. Exécutez plus de commandes bash
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p
4. Problème de socket (d'après vos commentaires)
Lorsque vous voyez un socket erreur, une communauté est venue avec 2 solutions possibles :
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(merci à @Cerin)
Ou
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(merci à @Peter Dvukhrechensky)
Chemins aveugles et erreurs de bord possibles
Utilisez 127.0.0.1 au lieu de localhost
mysql -uroot # "-hlocalhost" is default
Peut entraîner un "fichier manquant" ou une erreur slt.
mysql -uroot -h127.0.0.1
Fonctionne mieux.
Ignorer le problème de socket
J'ai trouvé de nombreuses façons de créer mysqld.sock
fichier, modifiez les droits d'accès ou créez un lien symbolique. Ce n'était pas le problème après tout.
Ignorer le my.cnf
fichier
Le problème n'était pas non plus là. Si vous n'êtes pas sûr, cela pourrait vous aider.
Pour Ubuntu 18.04 et mysql 5.7
-
étape 1 :
sudo mkdir /var/run/mysqld;
étape 2 :
sudo chown mysql /var/run/mysqld
étape 3 :
sudo mysqld_safe --skip-grant-tables
&quitter (utiliser quit si c'est bloqué )
connectez-vous à mysql sans mot de passe
-
étape 4 :
sudo mysql --user=root mysql
étape 5 :
SELECT user,authentication_string,plugin,host FROM mysql.user;
étape 6 :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
connectez-vous maintenant avec
mysql -u root -p <root>
Vous pouvez essayer comme suit, cela fonctionne pour moi.
Démarrer le serveur :
sudo service mysql start
Maintenant, allez dans le dossier des chaussettes :
cd /var/run
Sauvegardez la chaussette :
sudo cp -rp ./mysqld ./mysqld.bak
Arrêter le serveur :
sudo service mysql stop
Restaurer la chaussette :
sudo mv ./mysqld.bak ./mysqld
Démarrez mysqld_safe :
sudo mysqld_safe --skip-grant-tables --skip-networking &
Initialiser le shell mysql :
mysql -u root
Modifier le mot de passe :
Par conséquent, choisissez d'abord la base de données
mysql> use mysql;
Entrez maintenant ci-dessous deux requêtes :
mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root';
Maintenant, tout ira bien.
mysql> flush privileges;
mysql> quit;
Pour vérifier :
mysql -u root -p
c'est fait !
N.B, After login please change the password again from phpmyadmin
Vérifiez maintenant hostname/phpmyadmin
Username: root
Password: 123456
Pour plus de détails, veuillez consulter Comment réinitialiser le mot de passe oublié phpmyadmin dans Ubuntu
Le mysql
La commande utilise par défaut les sockets UNIX pour se connecter à MySQL.
Si vous utilisez MariaDB, vous devez charger le plug-in Unix Socket Authentication côté serveur.
Vous pouvez le faire en éditant le [mysqld]
configuration comme celle-ci :
[mysqld]
plugin-load-add = auth_socket.so
Selon la distribution, le fichier de configuration est généralement situé à /etc/mysql/
ou /usr/local/etc/mysql/
Si unix_socket=OFF
est défini dans la même section, activez-le en le remplaçant par unix_socket=ON
ou ce correctif ne s'applique pas.