【JavaEE学习】我在学习JDBC时连接MySQL数据库时遇到的问题和解决方案

连接MySQL数据库时出错的解决经验分享

遇到的问题有:
①java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: YES)
②MySQL服务无法启动(发生系统错误 1067)
③MySQL服务无法启动(发生系统错误 5):没权限,使用管理员权限运行就ok了
④java.sql.SQLException: The server time zone value ‘???ú±ê×??±??’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

背景:最近在学习JavaEE课程中的JDBC,需要连接MySQL数据库,但是在连接过程中遇到了种种问题。最终庆幸问题得以解决。(使用的软件时netbeans)一下内容比较杂,都是我遇到的问题。这东西快把俺恶心吐了。

首次是出现错误提示:

java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: YES)
解决方案:确认你在代码中填入了正确的账号和密码:
账号和密码一定要匹配,如果忘记账号密码:
在这边我出现了一个问题:MySQL服务无法启动(发生系统错误 1067)以下是解决过程:
参考资料:https://www.cnblogs.com/hanson1/p/7100909.html
首先保证你的MySQL的版本是启动的,启动方式如下,使之正在运行即可:
【JavaEE学习】我在学习JDBC时连接MySQL数据库时遇到的问题和解决方案_第1张图片
然后资料中的解决方案结合我的使用:
①设置可跳过密码:打开MySQL目录下的my.ini文件(找不到的话打开显示隐藏文件),在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。(默认安装时,my.ini在C:\ProgramData\MySQL\MySQL Server 5.6)
②重启MySQL服务使用管理员权限进入cmd,通过cd命令进入MySQL的BIN目录,输入“mysql -u root -p”(不输入密码),回车即可进入数据库。(默认安装时,BIN目录为:C:\Program Files\MySQL\MySQL Server 5.6\bin)
执行“use mysql;”,使用mysql数据库。
执行“update user set password=PASSWORD(“root”) where user=‘root’;”(修改root的密码),然后quit退出。
【JavaEE学习】我在学习JDBC时连接MySQL数据库时遇到的问题和解决方案_第2张图片
③重新打开密码:打开MySQL目录下的my.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件。
④尝试使用net start mysql启动MySQL服务,若出现上图红框,就能正常启动MySQL了。
此时按道理可以直接在netbeans上连接MySQL了。
我在这边先用net stop mysql关闭了MySQL服务,再打开,尝试是否出错,没有错误。
【JavaEE学习】我在学习JDBC时连接MySQL数据库时遇到的问题和解决方案_第3张图片

conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true","root","root"); 
//conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");

此处两行代码都自行进行测试,我在地址处后面加上?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
即可成功连接。如果还是不行……

可能是my.ini中位置错了。

打开my.ini文件。
【JavaEE学习】我在学习JDBC时连接MySQL数据库时遇到的问题和解决方案_第4张图片
确认这两行位置无误,有错误就修改到你的mysql安装目录。
【JavaEE学习】我在学习JDBC时连接MySQL数据库时遇到的问题和解决方案_第5张图片
在my-default.ini文件中
使用管理员权限打开记事本,再用记事本打开这个文件。
【JavaEE学习】我在学习JDBC时连接MySQL数据库时遇到的问题和解决方案_第6张图片
去掉红框两行的#符号,并改为正确位置。保存即可。
【JavaEE学习】我在学习JDBC时连接MySQL数据库时遇到的问题和解决方案_第7张图片

如果运行后出现问题:

java.sql.SQLException: The server time zone value ‘???ú±ê×??±??’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
类似服务器时区值的问题。
解决要点是:添加的JAR文件必须与安装的MySQL相匹配。
我电脑上有
【JavaEE学习】我在学习JDBC时连接MySQL数据库时遇到的问题和解决方案_第8张图片
在此jar文件版本不得过高,若像我使用mysql server 5.6,就用5.0左右的jar就行。

结尾

我也是个小白,这是我解决的历程,每个人遇到的问题的答案可能都不同,一定要有耐心去解决。查阅资料,我这些解决方案就是查阅总结各种资料下来的,如果可以帮到你,再好不过。

翻阅的资料

https://www.cnblogs.com/hanson1/p/7100909.html(此资料彻底解决问题)
https://blog.csdn.net/d_hyacinth/article/details/53791592
https://www.cnblogs.com/freespring/p/10692994.html
https://blog.csdn.net/qq_34885598/article/details/84344946
https://blog.csdn.net/icecoola_/article/details/76864354
https://www.cnblogs.com/yfceshi/p/6897668.html
查阅的资料不止以上这些,非常感谢愿意分享经验的博主。

你可能感兴趣的:(【JavaEE学习】我在学习JDBC时连接MySQL数据库时遇到的问题和解决方案)