运行Java代码遇MySQL访问拒绝异常,已加驱动包该如何解决?
解决MySQL连接权限异常的操作步骤
针对你遇到的Access denied for user 'root'@'localhost' (using password: NO)异常,在已添加MySQL Connector驱动的前提下,可按以下步骤排查解决:
检查JDBC连接配置
确认代码中的连接参数是否正确传入了密码:- 若使用URL参数拼接,确保连接串包含密码信息,示例:
String url = "jdbc:mysql://localhost:3306/your_db_name?user=root&password=your_root_pwd"; Connection conn = DriverManager.getConnection(url); - 若使用重载方法传参,确保密码参数不为空,示例:
String url = "jdbc:mysql://localhost:3306/your_db_name"; Connection conn = DriverManager.getConnection(url, "root", "your_root_pwd");
避免出现未传递密码或密码参数为空的情况。
- 若使用URL参数拼接,确保连接串包含密码信息,示例:
验证MySQL root用户的密码与访问权限
- 打开MySQL命令行客户端,尝试用
mysql -u root -p登录,输入密码后能正常进入则说明密码有效;若无法登录,需重置root密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password'; FLUSH PRIVILEGES; - 检查root用户的访问权限,执行以下SQL:
确保存在SELECT user, host FROM mysql.user WHERE user = 'root';root@localhost的用户记录,若缺失则创建该用户并授权:CREATE USER 'root'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'; FLUSH PRIVILEGES;
- 打开MySQL命令行客户端,尝试用
确认MySQL服务状态
确保本地MySQL服务处于运行状态:- Windows:打开「服务」面板,找到MySQL服务并确认其状态为「正在运行」
- Linux:执行命令
systemctl status mysql,查看服务是否正常运行,若未启动则执行systemctl start mysql
排查端口与防火墙问题
确认MySQL默认端口3306未被其他程序占用,且本地防火墙未拦截该端口的连接请求。
内容的提问来源于stack exchange,提问作者M.H.B. Vamsi
相关产品推荐
相关产品推荐

