JDBC Common Connection Problems

文章描述了两种在Windows11环境下使用IDEA2021.1和MySQL8.0遇到的连接问题。第一种情况是用户root无法通过CMD或Navicat访问数据库,解决方案包括跳过密码验证并重置密码。第二种情况涉及远程访问和IDEA的JDBC连接失败,原因是其他服务占用端口或时区配置不正确。解决方案是检查并解决端口冲突,以及在JDBC连接URL中指定正确的时区。
摘要由CSDN通过智能技术生成

连接问题

Access denied for user ‘root’@‘localhost’ (using password: YES)

第一种情况

问题描述

环境:IDEA 2021.1 windows11 mysql8.0 
已知条件:
	1.已正常安装数据库
	2.无法通过CMD输入mysql -u root -p 密码进入数据库
	3.无法通过Navicat进入
	4.修改my.ini依然无法进入
提示:Access denied for user 'root'@'localhost' (using password: YES) 或者 Access denied for user 'root'@'localhost' (using password: NO)

解决方案

【解决Mysql:ERROR 1045 (28000):Access denied for user ‘root‘@‘localhost‘ (using password: NO)的方法】
--https://www.jb51.net/article/250474.html

以下命令行代码均在管理员权限下运行:

第一步:关闭Mysql服务
net stop mysql
第二步:跳过Mysql密码验证

注意:mysql8.0无法直接在my.ini中添加–skip-grant-tables来进行跳过密码验证,需要使用命令行的方式

mysqld -console --skip-grant-tables --shared-memory

请添加图片描述

第三步:无密码方式进入Mysql

在上述步骤之后,再打开一个管理员模式运行的cmd.exe

不需要通过net start mysql打开mysql服务

然后输入

mysql -u root -p

直接回车,就可以进入mysql界面

请添加图片描述

第四步:将登陆密码设置为空
use mysql; (使用mysql数据表)
update user set authentication_string='' where user='root';(将密码置为空)
quit; (然后退出Mysql)
第五步:更改自己的登陆密码

1.关闭前两个cmd窗口(一定要关闭!);

2.在第三个窗口中输入代码;

然后输入

cd D:\mysql-8.0.19-winx64\bin  (此处输入自己电脑上的安装目录)
mysql -u root -p
(此处会显示输入密码,直接回车就好了,第四步我们已经将他置为空了)
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';(By 后面跟的字符串就是你想要更新的密码)
最后一步:验证密码是否修改成功
quit(退出mysql)
mysql -u root -p 
(输入新密码,再次登录)

记录时间:2022-7-27-17:13 --好像是老问题了,之前一直没有改正过来,正好在复习的时候将其改正,一定要跟着步骤慢慢来。

第二种情况

问题描述

环境:IDEA 2021.1 windows11 mysql8.0 
已知条件:
	1.已确定正常安装对应的驱动
	2.在windows的CMD窗口中能正常通过 [mysql -u root -p 密码] 进入数据库
	3.可以在IDEA的终端中正常输入账号密码和数据库进入
	4.远程访问或者idea登录时出现此错误。
	5.使用IDEA测试JDBC连接时,发现无法连接JDBC
	6.Access denied for user 'root'@'localhost' (using password: YES)
代码:
public static void main(String[] args) {
        try {
            Driver driver=new com.mysql.cj.jdbc.Driver();
            DriverManager.registerDriver(driver);
            String url="jdbc:mysql://localhost:3306/sqlstudy?useUnicode=true&characterEncoding=UTF-8";
            String user="root";
            String password="li1473606768";
            Connection connection=DriverManager.getConnection(url,user,password);
            System.out.println(connection);
        } catch (SQLException e) {
            System.out.println("检测到异常");
            e.printStackTrace();
        }
}

解决方案

原因:
服务中有一个mysqlzt的服务器将端口占用了,无法进行远程访问
参考文章:
CSDN 文章:https://blog.csdn.net/evan_one/article/details/113941416

发生错误的服务:

请添加图片描述

The server time zone value ‘xxxxxxxxxx’ is unrecognized or represents more than one time zone.

问题描述

环境:IDEA 2021.1 windows11 mysql8.0 
1.可以连接数据库
2.通过JAVA JDBC连接时,出现以上问题

解决方案

问题提示时区未配置正确
在进行JDBC连接时,8.0版本以上就要求绑定时区了,最好将charactEncoding=UTF8加上...

String url="jdbc:mysql://localhost:3306/sqlstudy";
更改:
String url="jdbc:mysql://localhost:3306/sqlstudy?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT";

//可以使GMT也可以是UTC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值