NACOS启动连接数据库失败
运行环境
操作系统:ubuntu20.04 双网卡
数据库:mysql8.0.36
nacos版本:nacos2.2.3
问题体现
外网环境下docker-compose启动nacos乐成,切换到内网之后,重启docker-compose,nacos启动失败,提示数据库连接失败
问题排查
- 排除数据库配置问题,查到网上很多资料说是数据库配置错误,但是外网环境下nacos能正常启动,阐明配置是正确的;
- 怀疑可能是docker容器内部无法访问数据库,进入容器测试发现3306端口是连通的,故排除网络问题;
- 查看mysql日记
tail -f /var/log/mysql/error.log
根据日记可知:Nacos 容器的 IP 地址 172.18.0.5 无法被 MySQL 服务器剖析,不外这个只是warning日记,现实不影响系统利用。
- 改本钱地部署nacos测试,发现利用127.0.0.1可以连接数据库,但利用服务器ip连接数据库失败
查看数据库用户配置:
- select user,host,plugin from mysql.user where user='root';
复制代码
发现利用localhost连接数据库利用的暗码认证插件为mysql_native_password,通过ip连接数据库利用的暗码认证插件为caching_sha2_password。
到这里问题基本可以确定:nacos连接mysql数据库,服务器不能访问外网,利用caching_sha2_password认证插件连接数据库,导致认证失败
- 更改用户’root’@'%'认证插件为mysql_native_password
- ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
- FLUSH PRIVILEGES;
复制代码 更改后测试效果依然是连接数据库失败,怀疑可能是nacos利用ip连接数据库时不支利用mysql_native_password认证插件
- 可能是由于 caching_sha2_password 插件在初次连接时必要通过网络进行密钥交换
修改数据库配置中RSA密钥文件路径:
- [mysqld]
- # Ensure the correct authentication plugin is set
- default_authentication_plugin=caching_sha2_password
- # Set the paths for the private and public keys
- caching_sha2_password_private_key_path=/path/to/private_key.pem
- caching_sha2_password_public_key_path=/path/to/public_key.pem
复制代码 网络配置dns问题
利用外网配置了dns,切回内网之后必要删除dns配置
结论
- 采用本地部署nacos,通过localhost连接数据库可以保证正常连接数据库
- nacos通过ip访问数据库问题未解决,等待遇到过类似问题的小同伴反馈
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |