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

遇到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

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值