DriverManager.getConnection异常和izmysql_native_passwor!#08S01Got packets out of order错误解决

版权声明:本文为博主原创文章,未经博主允许不得转载。如果你非要转载,麻烦加上我的原网址,谢谢。http://blog.csdn.net/qinglingLS https://blog.csdn.net/qinglingLS/article/details/85043364

遇到DriverManager.getConnection异常,其实有很多原因:
比如,你的库是不是可用,端口开放了没有

【Linux】Linux下Mysql开放远程端口3306用于远程登录
https://blog.csdn.net/qqxx6661/article/details/71157055

我用到的库
在这里插入图片描述
我的一个微信小程序的实例代码在:
在这里插入图片描述
说明网址在:https://blog.csdn.net/qinglingLS/article/details/83792777

如果库没有问题,试试下面的方法:
1.检查数据库语法,在运行数据库的主机上telnet一下,看能不能联通。
在这里插入图片描述
运行后结果如下:
在这里插入图片描述

2.可能是你拒绝了主机的访问(特别是一台是远程其他公网ip的主机,一台是你自己的电脑时)

use mysql;
select user,host from user;
update user set host='xxx.xxx.xxx.xx' where host='localhost';//xxx.xxx.xxx.xxx是你的访问
//这台sql服务器的网址,这样做是为了使得你的主机能够访问到这个表。把所
//有的localhost(本地主机)的访问都改为了xxx.xxx.xxx.xxx网址可以访问。
或者你也可以用下面这句:
update user set host='%' where host='localhost';
这样就可以让所有任意地址主机访问你的表了。

3.看了网上很多的教程,总结一下:
你的mysql是不是用的root,如果是root用户,建议你建个新用户,
别用root了,首先不安全,第二似乎在用DriverManager.getConnection的时候会遇到什么问题,我的啥也没改;就设置了一个新的普通用户,然后赋予它访问权限,就ok了。
步骤如下:
在mysql下输入
在这里插入图片描述

use mysql;
select user,host from user;

看到下面的表,
在这里插入图片描述

grant select on hit_tbl to hit;//插入新用户hit,可以改成任意其他名
select user,host from user; //查看下新用户加没加
update user set host='xxx.xxx.xxx.xx' where host='%';//xxx.xxx.xxx.xxx是你的访问这台
//sql服务器的网址,这样做是为了使得你的主机能够访问到这个表,但其他人访问不到,
//如果你不做这一步,其他任意用户也可以随意访问你的表了。
flush privileges;//应用下更新
grant select on hit.* to hit;
//我把访问选择数据库hit的所有列表的权限赋予刚才的用户hit

这样就完成了。试试看可以用DriverManager.getConnection去访问了吗吧。
虽然telnet还是失败,但是已经能连上DriverManager.getConnection并运行了。

关于mysql用户组更多的细节:
https://blog.csdn.net/qinglingLS/article/details/85043358

调用代码:
在这里插入图片描述
在这里插入图片描述
希望我说清楚了,,如果不清楚,下方提问。

猜你喜欢

转载自blog.csdn.net/qinglingLS/article/details/85043364