Je reçois continuellement cette erreur.
J'utilise mySQL Workbench et, d'après mes conclusions, les privilèges de schéma de root sont nuls. Il n'y a pas de privilèges du tout.
Je rencontre des problèmes sur toutes les plates-formes pour lesquelles mon serveur est utilisé, ce qui est un problème soudain.
[email protected] a apparemment beaucoup d'accès, mais je suis connecté en tant que tel, mais cela n'affecte que localhost de toute façon - localhost n'a pas de privilèges.
J'ai fait quelques choses comme FLUSH HOSTS
, FLUSH PRIVILEGES
, etc., mais je n'y ai trouvé aucun succès, ni sur Internet.
Comment puis-je récupérer son accès root? Je trouve cela frustrant, car lorsque je regarde autour de moi, les gens s'attendent à ce que vous "ayez accès", mais je n'y ai pas accès, je ne peux donc pas entrer en ligne de commande ou quoi que ce soit et GRANT
moi-même rien.
Lorsque je lance SHOW GRANTS FOR root
, voici ce que je reçois en retour:
Code d'erreur: 1141. Aucune autorisation de ce type n'a été définie pour l'utilisateur 'root' sur l'hôte '%'.
Utilisez les instructions pour réinitialiser le mot de passe root - mais au lieu de réinitialiser le mot de passe root, nous allons FORCER un enregistrement dans la table mysql.user
Dans le fichier init, utilisez ceci à la place
INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
Si vous avez le même problème dans MySql 5.7. +:
Access denied for user 'root'@'localhost'
c'est parce que MySql 5.7 autorise par défaut la connexion avec socket, ce qui signifie que vous vous connectez simplement avec Sudo mysql
. Si vous utilisez sql:
SELECT user,authentication_string,plugin,Host FROM mysql.user;
alors vous le verrez:
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | Host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Pour autoriser la connexion avec root et le mot de passe, mettez à jour les valeurs du tableau avec la commande suivante:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;
Ensuite, exécutez à nouveau la commande select et vous verrez qu'elle a changé:
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | Host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *2F2377C1BC54BE827DC8A4EE051CBD57490FB8C6 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Et c'est tout. Vous pouvez exécuter ce processus après avoir exécuté et terminé la commande Sudo mysql_secure_installation
.
Il n’a pas aimé mon privilège d’utilisateur alors je l’ai soudé. (in bash << Sudo définir l'utilisateur et le mot de passe) (cela donne le nom d'utilisateur de la racine et ne définit le mot de passe à rien) (Sur Mac)
Sudo mysql -uroot -p
Essayez les commandes suivantes
~$ Sudo /etc/init.d/mysql stop
~$ Sudo mysqld_safe --skip-grant-tables &
~$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
mysql> use mysql;
mysql> update user set password=PASSWORD("root") where User='root';
mysql> flush privileges;
mysql> quit
~$ Sudo /etc/init.d/mysql stop
Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+ Done mysqld_safe --skip-grant-tables
~$ Sudo /etc/init.d/mysql start
~$ mysql -u root -p
* MySQL Community Server 5.6.35 is started
~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, 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>
pour les personnes qui font face à l'erreur ci-dessous dans mysql version 5.7+ -
Access denied for user 'root'@'localhost' (using password: YES)
Ouvrir un nouveau terminal
Sudo /etc/init.d/mysql stop
... MySQL Community Server 5.7.8-rc est arrêté
Sudo mysqld_safe --skip-grant-tables &
cela ignorera tous les privilèges de niveau d’octroi et lancera le mysql en mode sans échec Parfois, le processus est bloqué juste à cause de
grep: erreur d'écriture: canal cassé 180102 11:32:28 mysqld_safe Enregistrement dans '/var/log/mysql/error.log'.
Appuyez simplement sur Ctrl + Z ou Ctrl + C pour interrompre et quitter le processus
mysql -u root
Bienvenue sur le moniteur MySQL. Les commandes se terminent par; ou\g. Votre identifiant de connexion MySQL est 2 Version du serveur: 5.7.8-rc MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle et/ou ses filiales. Tous les droits sont réservés.
Oracle est une marque déposée d'Oracle Corporation et/ou de ses filiales. Les autres noms peuvent être des marques de commerce de leurs propriétaires respectifs.
Tapez 'aide'; ou '\ h' pour obtenir de l'aide. Tapez '\ c' pour effacer l'instruction d'entrée actuelle.
use mysql;
Lecture des informations de table pour compléter les noms de table et de colonne Vous pouvez désactiver cette fonctionnalité pour un démarrage plus rapide avec -A
Base de données modifiée
mysql> update user set authentication_string=password('password') where user='root';
Requête OK, 4 lignes affectées, 1 avertissement (0.03 sec) Lignes alignées: 4 Modifiées: 4 Avertissements: 1
mysql> flush privileges;
Requête OK, 0 ligne affectée (0.00 s)
mysql> quit
Bye
Sudo /etc/init.d/mysql stop
..180102 11:37:12 mysqld_safe mysqld à partir du fichier pid /var/run/mysqld/mysqld.pid terminé. * MySQL Community Server 5.7.8-rc est arrêté arif @ ubuntu: ~ $ Sudo /etc/init.d/mysql start .. * MySQL Community Server 5.7.8-rc est démarré
mysql -u root -p
Entrer le mot de passe:
Bienvenue sur le moniteur MySQL. Les commandes se terminent par; ou\g. Votre identifiant de connexion MySQL est 2 Version du serveur: 5.7.8-rc MySQL Community Server (GPL)
après la version 5.7+ de mysql, le mot de passe de la colonne a été remplacé par le nom authentication_string de la table mysql.user.
espérons que ces étapes aideront n'importe qui, merci.
Un moyen simple de réinitialiser le mot de passe root sur les systèmes Linux:
Sudo dpkg-reconfigure mysql-server-5.5
Commander d'autres raisons pour l'accès refusé:
https://dev.mysql.com/doc/refman/5.7/en/problems-connecting.html
J'ai rencontré ce problème lors de l'installation de Testlink sur le serveur Ubuntu, j'ai suivi ces étapes
mysql -u root
use mysql;
update user set password=PASSWORD("root") where User='root';
flush privileges;
quit
Maintenant, arrêtez l'instance et recommencez i.e
Sudo /etc/init.d/mysql stop
Sudo /etc/init.d/mysql start
dans mysql 5.7, le champ mot de passe a été remplacé par authentication_string afin que vous fassiez quelque chose comme ceci à la place
update user set authentication_string=PASSWORD("root") where User='root';
Voir ce lien la base de données d’utilisateurs MySQL n’a pas de colonne mot de passe - Installation de MySQL sur OSX
J'ai travaillé sur l'accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: OUI) pendant plusieurs heures, j'ai trouvé la solution suivante,
The answer to this problem was that in the my.cnf located within
/etc/mysql/my.cnf
the line was either
bind-address = 127.0.0.1
(or)
bind-address = localhost
(or)
bind-address = 0.0.0.0
I should prefer that 127.0.0.1
I should also prefer 0.0.0.0, it is more flexible
because which will allow all connections
Le moyen le plus simple de réinitialiser le mot de passe root est le suivant:
redémarrez l'option mysqld --skip-grant-tables . Cela permet à quiconque de se connecter sans mot de passe et avec tous les privilèges. Comme cela n’est pas sûr, vous pouvez utiliser --skip-grant-tables avec --skip-networking pour empêcher les clients distants de se connecter.
Connectez-vous au serveur mysqld avec cette commande:
Shell> mysql Émettez les instructions suivantes dans le client mysql. Remplacez le mot de passe par le mot de passe que vous souhaitez utiliser.
mysql> UPDATE mysql.user SET Mot de passe = PASSWORD ('MyNewPass') -> WHERE User = 'root'; mysql> FLUSH PRIVILEGES;
Arrêtez le serveur, puis redémarrez-le normalement (sans les options --skip-grant-tables et --skip-networking).
Documentation de Mysql et expérience personnelle:
http://dev.mysql.com/doc/refman/5.6/en/resetting-permissions.html
J'ai résolu le même problème en exécutant Workbench en tant qu'administrateur.
... Je suppose que c'est à cause des restrictions sur les ordinateurs de l'entreprise, dans mon cas ...
J'ai résolu le même problème en utilisant next SQL et en redémarrant le serveur MySQL:
update mysql.user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y'
where user='root';
Je ne pense pas que vous deviez échapper au paramètre --init-file
:
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\\mysql-init.txt
devrait être:
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\mysql-init.txt
Avec moi était le même problème, mais il a été causé, parce que j'utilisais le serveur mysql sur 32 (bit) et le workbench s'exécutait sur la version 64 (bit). le serveur et le plan de travail doivent avoir la même version.
Essayez les étapes suivantes pour résoudre ce problème:
mysqld --console
.171010 14:58:22 [Note] --secure-file-priv
est définie sur NULL. Les opérations liées à l'importation et à l'exportation de données sont désactivées après l'exécution de la commande ci-dessus à partir de l'invite de commande.mysqld
est bloquée par le Pare-feu Windows ou par un autre programme.mysqld
ou mysql
, suivez les étapes ci-dessous: wf.msc
pour ouvrir les paramètres du pare-feu.mysqld
ou mysqld
sont disponibles dans la liste, cochez la case correspondant au domaine, public et privé, puis enregistrez les paramètres.Il devrait être possible d’exécuter la console MySQL sans aucun problème maintenant!
pour le problème ci-dessus, votre mot de passe dans le système doit correspondre au mot de passe que vous avez entré dans le programme car, lorsque vous exécutez le programme, il vérifie le mot de passe du système comme vous l'avez indiqué en tant qu'utilisateur root, ce qui vous donne une erreur et l'enregistrement n'est pas supprimé de la base de données.
import Java.sql.DriverManager;
import Java.sql.Connection;
import Java.sql.Statement;
import Java.sql.ResultSet;
class Delete
{
public static void main(String []k)
{
String url="jdbc:mysql://localhost:3306/student";
String user="root";
String pass="jacob234";
try
{
Connection myConnection=DriverManager.getConnection(url,user,pass);
Statement myStatement=myConnection.createStatement();
String deleteQuery="delete from students where id=2";
myStatement.executeUpdate(deleteQuery);
System.out.println("delete completed");
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
Conservez le mot de passe de votre système sous le nom jacob234, puis exécutez le code.
Pour moi, j'utilisais MYSQLWorkbench et le port était 3306 MAMP en utilisant 8889