运行idea报错Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YES)) 怎么解决
时间: 2023-12-10 13:36:17 浏览: 142
sql server 2005设置sql身份验证 Cannot create PoolableConnectionFactory (用户 'sa' 登录失败。该
这个错误提示表明在连接MySQL数据库时,使用的用户名和密码不正确,或者该用户没有访问该数据库的权限。解决方法如下:
1. 确认用户名和密码是否正确,可以尝试使用MySQL命令行工具连接数据库,例如:
```
mysql -u root -p
```
然后输入密码,如果能够成功登录,则说明用户名和密码正确。
2. 确认该用户是否有访问该数据库的权限,可以使用以下命令查看:
```
show grants for 'root'@'localhost';
```
如果没有访问权限,则需要为该用户授权:
```
grant all privileges on database_name.* to 'root'@'localhost' identified by 'password';
```
其中,database_name是数据库名称,password是该用户的密码。
3. 如果以上两个方法都无法解决问题,则可以尝试修改MySQL的配置文件my.cnf,将以下两行注释掉:
```
#skip-grant-tables
#bind-address = 127.0.0.1
```
然后重启MySQL服务即可。
以下是一个修改用户密码的例子:
```java
import java.sql.*;
public class Main {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
try {
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
String sql = "update user set password=PASSWORD('new_password') where User='root'";
int rows = stmt.executeUpdate(sql);
System.out.println(rows + " rows updated.");
conn.close();
} catch (SQLException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
```
阅读全文