Java.SQL.SQLException: Accès refusé à l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: oui)
Le code suivant:
Class.forName("com.mysql.jdbc.Driver");
Connection m_connection = DriverManager.getConnection("jdbc:mysql://localhost","root","root");
jette cette exception sur getConnection()
:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at db.Database.<init>(Database.java:91)
at db.Main.main(Main.java:10)
Comment est-ce causé et comment puis-je le résoudre?
EDIT:
public static void main(String[] args) throws ClassNotFoundException, ServletException, SQLException
{
try
{
Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=rootpassword");
Statement s = (Statement) conn.createStatement();
int result = s.executeUpdate("CREATE DATABASE databasename");
}
catch ( Exception e)
{
e.printStackTrace();
}
}
Produit :
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at db.Main.main(Main.java:19)
14 réponses
comme vous créez une base de données à partir de zéro, vous pouvez utiliser:
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=rootpassword");
PreparedStatement ps = connection.prepareStatement("CREATE DATABASE databasename");
int result = ps.executeUpdate();
Voici un identiques scénario.
Cela peut vous aider:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '%password%' WITH GRANT OPTION;
L'exécuter avec une ligne de commande ou un outil GUI.
N'oubliez pas de remplacer %password%
avec un vrai mot de passe.
j'ai eu un problème similaire, mais la différence était: je N'ai pas exécuté mon JavaApp de localhost
, mais à partir d'un PC distant. Je me suis donc quelque chose comme java.sql.SQLException: Access denied for user 'root'@'a.remote.ip.adress' (using password: YES)
Pour résoudre cela, vous pouvez simplement vous connecter à phpMyAdmin, allez à Users
, cliquez sur add user
et entrez l'hôte à partir duquel vous voulez exécuter votre JavaApp (ou choisissez Any Host
)
vous pouvez utiliser ce
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/YOUR_DB_NAME";
static final String USER = "root";
static final String PASS = "YOUR_ROOT_PASSWORD";
Connection conn = DriverManager.getConnection(DB_URL,USER,PASS);
vous devez donner le bon mot de passe root .
vous devez spécifier le db auquel vous vous connectez:
jdbc:mysql://localhost:3306/mydb
j'ai été frappé de la même question. Ajouté le numéro de port de service mysql (3307), résolu le problème.
conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/?" + "user=root&password=password");
essayez comme ceci....
public static Connection getConnection() throws SQLException{
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "vicky"; // Change it to your Password
System.setProperty(driver,"");
return DriverManager.getConnection(url,username,password);
}
bien que ce ne soit peut-être pas la cause de votre problème, vous obtiendrez la même erreur s'il y a deux services MySQL fonctionnant sur le même port. Vous pouvez le vérifier sur windows en consultant la liste des services dans l'onglet services du Gestionnaire des Tâches.
cette Exception est également causée en raison de l'inadéquation de la version de mysql db et de votre pom.xml / jar.
assurez-vous de votre pom.la version xml/jar est plus haute que votre version mysql db. Parce que les versions supérieures sont compatibles avec les versions inférieures, mais la même chose n'est pas vraie pour l'inverse.
la Solution est pour le projet java
- remplacer le bocal par la version appropriée.
la Solution pour maven fonction
- Modifier la dépendance Version en pom.xml
Solution pour botte de printemps - Outrepasser la dépendance de démarrage à ressort en ajoutant 5.1.5.Final
j'ai eu le même problème "de java.SQL.SQLException: Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: oui)". Le problème était "mauvais mot de passe". Copiez et collez la requête as-it-is dans le shell pour vérifier si elle donne la sortie désirée ou non. Les petites erreurs prennent plus de temps.
j'ai dû changer ma configuration SQL (dans mon hôte, Dreamhost dans mon cas) pour permettre au nom d'utilisateur d'accéder à la base de données à partir d'autres hôtes, pas seulement Dreamhost puisque j'exécute un programme à partir de l'IDE sur mon ordinateur. Je l'ai fait pour l'instant en ajoutant le % à la liste des hôtes autorisés. Il fonctionne maintenant!
cela semble se produire surtout lorsque le nom D'utilisateur et le mot de passe MySQL ne sont pas corrects. Vérifiez votre nom D'utilisateur et votre mot de passe MySQL.
ceci est spécifique à Ubuntu 18.04 LTS et MySQL 5.x Suivi de ceci lien Suivez tout partir d'ici:
sudo mysql_secure_installation
sudo mysql
une fois connecté à MySQL, exécutez ces commandes à partir de L'invite MySQL:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
vérifiez maintenant que la table a le mot de passe pour la racine
SELECT user,authentication_string,plugin,host FROM mysql.user;
ceci a résolu mon problème et maintenant je peux me connecter.
j'ai rencontré cette erreur. Le problème était que j'avais le mauvais nom de base de données.