如何解决IDEA无法连接docker中的数据库的问题
IDEA无法连接docker中的数据库
问题最后无解,或许可以通过抓包发现原因,但是经过两个小时的蛮力测试,最后证明可能当前应用的运行环境有关。
毕竟生成环境用的就是简单的‘123456’。
问题现象
本地idea起springboot的微服务,以com.alibaba.druid.pool.DruidDataSource连接池连接docker中安装的。
datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: 'jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&verifyServerCertificate=false' username: root password: '123456' druid: initialSize: 50 minIdle: 50 maxActive: 300 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT user() testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true connection-properties: druid.stat.mergeSql:true;druid.stat.slowSqlMillis:5000
相关版本
连接池
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.20</version> </dependency>
数据库
dockerfile: FROM mysql:5.7.25
现象
用以下命令可以修改数据库密码
grant all on *.* to root@'%' identified by 't$>9MJ4q' with grant option; flush privileges;
当密码采用
‘123456’或者‘abcdef’时无法连接;当密码采访复杂的’t$>9MJ4q’时,就可以直接连接成功。
尝试了各种所谓密码需要用‘’包裹的方式,都无效。
本机连接docker数据库
首先要保证本机能访问虚拟机的网络
例如:可以通过远程连接工具连接到虚拟机
操作步骤
1.进入容器
docker exec -it 容器id /bin/bash
1).获取容器id
docker ps -a
图中红框为容器id
2.操作容器mysql
mysql -uroot -p
use mysql
update user set password_expired = "Y"where user="root";
ALTER USER'root'@'%' IDENTIFIED WITH mysql_native_password BY '自己的数据库密码';
依次执行完成之后,可以通过你的数据库连接工具连接你docker中的数据库
工具连接:
cmd终端连接:
mysql -h 192.168.5.130 -uroot -p -P 3306 //192.168.5.130为自己的虚拟机ip
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
windows宿主机和docker容器设置挂载共享文件夹的步骤
这篇文章主要介绍了windows宿主机和docker容器设置挂载共享文件夹的步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-11-11解决docker CMD/ENTRYPOINT执行sh脚本报: not found/run.sh:
这篇文章主要介绍了解决docker CMD/ENTRYPOINT执行sh脚本报: not found/run.sh:的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-11-11解决Docker x509 insecure registry的问题
这篇文章主要介绍了解决Docker x509 insecure registry的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-03-03docker-swarm之使用Docker secret管理敏感数据
就Docker Swarm集群服务而言,secret 是块状数据,例如密码、SSH私钥、SSL证书或其他不应通过网络传输或未加密存储在Dockerfile或应用程序源代码中的数据,我们可以使用Docker secret 集中管理这些数据,所以接下来就带大家了解一下如何使用Docker secret 管理敏感数据2023-08-08
最新评论