Alors ... je configure un nouveau serveur et continue à rencontrer ce problème.
Lorsque j'essaie de me connecter à la base de données MySQL avec l'utilisateur root, l'erreur "ERREUR 1698 (28000): accès refusé pour l'utilisateur" root "@" localhost "" s'affiche.
Peu importe si je me connecte via le terminal (SSH), via PHPMyAdmin ou un client MySQL, par exemple. Navicat. Ils échouent tous.
J'ai regardé dans la table mysql.user et j'ai obtenu ce qui suit:
+------------------+-------------------+
| user | Host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
Comme vous pouvez le voir, root devrait avoir accès.
Le serveur est assez simple, car j'ai essayé de résoudre ce problème depuis un moment maintenant.
Il exécute Ubuntu 16.04.1 LTS avec Apache, MySQL et PHP pour pouvoir héberger des sites Web et iRedMail 0.9.5-1 afin d'héberger du courrier.
La connexion à la base de données MySQL fonctionne correctement avant d’installer iRedMail. J'ai aussi essayé, juste installer iRedMail, mais ensuite root, ne fonctionne pas non plus ...
Si quelqu'un pouvait me dire comment je résous mon problème de connexion à MySQL ou comment installer iRedMail, en plus d'une installation existante de MySQL. Et oui, j'ai essayé les Conseils d'installation et je ne trouve pas ces variables dans les fichiers de configuration.
Toute aide est très appréciée :)
Certains systèmes comme Ubuntu, mysql utilise par défaut le plugin UNIX auth_socket .
Cela signifie fondamentalement que: db_utilisateurs l’utilisant, sera "authentifié" par les identifiants de l’utilisateur système. Vous pouvez voir si votre utilisateur root
est configuré comme ceci en procédant comme suit:
$ Sudo mysql -u root # I had to use "Sudo" since is new installation
mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------------------+
| User | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
Comme vous pouvez le constater dans la requête, l’utilisateur root
utilise le plugin auth_socket
.
Il y a 2 façons de résoudre ceci:
mysql_native_password
db_user
avec vous system_user
(recommandé)Option 1:
$ Sudo mysql -u root # I had to use "Sudo" since is new installation
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ service mysql restart
Option 2: (remplacez YOUR_SYSTEM_USER par le nom d'utilisateur que vous avez)
$ Sudo mysql -u root # I had to use "Sudo" since is new installation
mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ service mysql restart
N'oubliez pas que si vous utilisez l'option 2, vous devrez vous connecter à mysql en tant que nom d'utilisateur de votre système (mysql -u YOUR_SYSTEM_USER
).
Remarque: Sur certains systèmes (par exemple, une extension Debian), le plug-in 'auth_socket' est appelé 'unix_socket' , de sorte que la commande SQL correspondante doit être: UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Update: Le commentaire de @ andy semble indiquer que mysql 8.xx a mis à jour/remplacé le auth_socket
pour caching_sha2_password
Je n'ai pas de configuration système avec mysql 8.xx pour le tester, mais les étapes ci-dessus devraient vous aider pour comprendre le problème. Voici la réponse:
Un changement depuis MySQL 8.0.4 est que le nouveau plugin d'authentification par défaut est 'caching_sha2_password'. Le nouveau 'YOUR_SYSTEM_USER' aura ce plugin auth et vous pouvez maintenant vous connecter depuis le shell bash avec "mysql -u YOUR_SYSTEM_USER -p" et fournir le mot de passe de cet utilisateur sur l'invite. Pas besoin de l'étape "UPDATE user SET plugin". Pour la mise à jour du plug-in auth par défaut 8.0.4, voir https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
Vérifier ici:
NEW La version de MYSQL le fait de cette façon.
Dans le nouveau my-sql, si le mot de passe est laissé vide lors de l'installation, il est basé sur le plugin auth_socket
.
La méthode correcte consiste à vous connecter à my-sql avec le privilège Sudo
.
$ Sudo mysql -u root -p
Et puis mettre à jour le mot de passe en utilisant:
$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
Une fois que cela est fait, stop and start
le serveur mysql.
$ Sudo service mysql stop
$ Sudo service mysql start
Pour plus de détails, vous pouvez vous référer à ce lien .
Faites un commentaire pour tout doute.
Je suggère de supprimer la connexion Mysql -
UPDATE-Ceci est pour Mysql version 5.5, si votre version est différente, veuillez modifier la première ligne en conséquence
Sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
Sudo rm -rf /etc/mysql /var/lib/mysql
Sudo apt-get autoremove
Sudo apt-get autoclean
Et installez à nouveau Mais cette fois, définissez vous-même un mot de passe root… .. Cela vous épargnera beaucoup.
Sudo apt-get update
Sudo apt-get install mysql-server
J'avais ce problème sur une Debian 8 VM avec laquelle j'interagissais via PuTTY sur le bureau Windows 10.
J'ai essayé les différentes suggestions ici mais rien n’a vraiment fonctionné et je lance MariaDB sur l’hôte Debian. En fin de compte, j’ai constaté que je ne pouvais pas démarrer le serveur de base de données en mode sans échec mais je n’en avais pas besoin et les commandes suivantes fonctionnaient réellement pour moi, c’est-à-dire permettre à un utilisateur MySql nouvellement créé de se connecter au serveur MySql/MariaDB:
Sudo service mysql restart
Sudo mysql # logs in automatically into MariaDB
use mysql;
update user set plugin='' where user='your_user_name';
flush privileges;
exit;
Sudo service mysql restart # restarts the mysql service
Si ce qui précède ne fonctionne pas vraiment pour vous, suivez les étapes décrites dans le message de zetacu ci-dessus ( zetacu ), puis suivez mes étapes.
Maintenant, vous devriez pouvoir utiliser un client terminal distant et vous connecter en toute sécurité à mysql en utilisant la commande:
mysql -u your_user_name -p
* tapez le mot de passe lorsque vous y êtes invité
J'ai aussi fait face au même problème la première fois.
Maintenant, il est corrigé:
Commencez par copier le fichier /etc/mysql/mysql.conf.d/mysqld.cnf
et le coller dans /etc/mysql/my.cnf
.
Vous pouvez le faire par commande:
Sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
Reste maintenant le mot de passe:
Utilisez les commandes suivantes dans votre terminal:
Sudo service mysql stop
Sudo service mysql start
Sudo mysql -u root
Vous êtes maintenant dans la console mysql.
Puis écrivons quelques requêtes pour réinitialiser notre mot de passe root
USE mysql
update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password";
flush privileges;
quit
Maintenant nous pouvons nettoyer /etc/mysql/my.cng
Ouvrez le fichier ci-dessus dans votre éditeur et supprimez toutes les lignes qu'il contient.
Après cela, redémarrez mysql:
Sudo mysql service restart
Maintenant, utilisons mysql avec le nouveau mot de passe:
Sudo mysql -u root -p
Enfin, entrez votre nouveau mot de passe.
Vous voulez accéder à MySQL avec l'utilisateur root mais vous ne fournissez pas le mot de passe correct de root.
Si vous avez besoin de définir un nouveau mot de passe pour root, le site de MySQL propose une excellente documentation sur la procédure à suivre: http://dev.mysql.com/doc/refman/5.7/fr/resetting- permissions.html
Je vais ne pas montrer le processus ici parce que documentation MySql sur le lien ci-dessus c'est clair et concis.
Cela a fonctionné pour moi:
mysql --user=root mysql
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
étape 1. Sudo mysql -u root -p
étape 2. USE mysql;
étape 3. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
Ici 'admin' est votre nouveau mot de passe, vous pouvez le changer.
étape 4. exit
Merci. Vous avez terminé.
Première étape: allez dans /etc/phpmyadmin/config.inc.php puis décommentez les lignes où vous trouverez AllowNoPassword . Deuxième étape: connectez-vous à votre compte mysql par défaut
mysql -u root -p
use mysql;
update user set plugin="" where user='root';
flush privilege;
et c'est tout!
os: Ubuntu18.04
mysql: 5.7
ajoutez le skip-grant-tables
au fichier end de mysqld.cnf
cp le my.cnf
Sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
(base) ➜ ~ Sudo service mysql stop
(base) ➜ ~ Sudo service mysql start
(base) ➜ ~ mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed, 3 warnings
mysql> update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> update user set plugin="mysql_native_password";
Query OK, 0 rows affected (0.00 sec)
Rows matched: 4 Changed: 0 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
skip-grant-tables
de my.cnf(base) ➜ ~ Sudo emacs /etc/mysql/mysql.conf.d/mysqld.cnf
(base) ➜ ~ Sudo emacs /etc/mysql/my.cnf
(base) ➜ ~ Sudo service mysql restart
(base) ➜ ~ mysql -uroot -ppassword
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> select @@validate_password_policy;
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM |
+----------------------------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
6 rows in set (0.08 sec)!
validate_password
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.05 sec)
mysql> set global validate_password_mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_number_count=3;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file | |
| validate_password_length | 3 |
| validate_password_mixed_case_count | 0 |
| validate_password_number_count | 3 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 0 |
+--------------------------------------+-------+
6 rows in set (0.00 sec)
note vous devriez savoir que votre erreur est causée par quoi? validate_password_policy?
vous devriez décider de réinitialiser votre mot de passe pour remplir la stratégie ou modifier la stratégie.
Cela est arrivé à moi aussi. Le problème est avec le repo mysql qui est déjà fourni avec la distribution linux. Donc, quand vous faites simplement: $ Sudo apt install mysql-server
.__, il installe mysql à partir de leur dépôt par défaut, ce qui pose ce problème. Donc, pour surmonter cela, vous devez désinstaller le mysql installé $ Sudo apt remove mysql* --purge --auto-remove
Puis téléchargez mysql repo depuis le site officiel de mysql MySQL APT Repo Suivez leur documentation sur la façon d’ajouter repo et de l’installer . Cela ne pose aucun problème . Également répondu par @ zetacu, vous pouvez vérifier que la racine mysql utilise bien le plugin mysql_native_password