今天弄Android studio的时候,数据库连接总是不行,一直超时没反应,仔细思考觉得是ip地址出了问题,在jdbc:mysql://xxxx:3306/DBname 这句语句中的xxxx具体写什么地址使我浪费了很多时间,不论是用公网ip地址还是私网ip地址还是本机地址127.0.0.1都没有用。
我公网ip地址和本机地址浪费了太多时间,因为这玩意用了第三方模拟器所以不能用本机地址,而经过chatgpt的指点后,我确定了应该把方向放在私网ip上,方向对了,问题就解决了。
而java.sql.SQLException: null, message from server: “Host ‘XXX’ is not allowed to connect,这就是我把方向放在私网ip后出现的问题。
解决办法:修改数据库权限
flush privileges是为了将权限更新操作刷新到内存中,而不用下次启动时生效。
不用这句话的话重启mysql服务也行。
上面操作执行完成之后就可以连接数据库了。
反思:此次解决问题花了很多时间,这个问题的产生原因是用了第三方模拟器不能直接连本地地址,但是我却不知道用哪个地址。
我应该:本机地址不行->换私网ip->解决私网ip的问题(数据库权限问题)->解决问题
但是我:本机地址不行->换公网ip->公网ip弹出的问题(超时)不是根本问题->解决了之后并不能解决问题
对策:以后解决问题首先要定位问题出现在哪里,然后把解决方案先列出来,以广度优先搜索的方式去试这些问题,不要太死磕一个方案,当一个方案行不通时要立刻换方案,然后继续深究。如:看报错定位是数据库问题,然后数据库问题肯定是这地址选用问题,到底选用什么地址就是关键问题。公网ip的超时问题不是根本问题,私网ip的服务器权限才是根本问题。
参考:https://blog.csdn.net/m0_37460012/article/details/90290148