NACOS启动连接mysql数据库失败

NACOS启动连接数据库失败

运行环境

操作系统:ubuntu20.04 双网卡
数据库:mysql8.0.36
nacos版本:nacos2.2.3

问题表现

外网环境下docker-compose启动nacos成功,切换到内网之后,重启docker-compose,nacos启动失败,提示数据库连接失败
nacos启动失败日志

问题排查

  1. 排除数据库配置问题,查到网上很多资料说是数据库配置错误,但是外网环境下nacos能正常启动,说明配置是正确的;
  2. 怀疑可能是docker容器内部无法访问数据库,进入容器测试发现3306端口是连通的,故排除网络问题;
  3. 查看mysql日志
    tail -f /var/log/mysql/error.logmysql日志
    根据日志可知:Nacos 容器的 IP 地址 172.18.0.5 无法被 MySQL 服务器解析,不过这个只是warning日志,实际不影响系统使用。
  4. 改成本地部署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认证插件连接数据库,导致认证失败

  1. 更改用户’root’@'%'认证插件为mysql_native_password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;

更改后测试结果依然是连接数据库失败,怀疑可能是nacos使用ip连接数据库时不支使用mysql_native_password认证插件

  1. 可能是由于 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配置

结论

  1. 采用本地部署nacos,通过localhost连接数据库可以保证正常连接数据库
  2. nacos通过ip访问数据库问题未解决,期待遇到过类似问题的小伙伴反馈
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值