【故障排查】Docker启动Nacos报错:No DataSource set 问题解决

在这里插入图片描述

Nacos报错内容

Nacos Server did not start because dumpservice bean construction failure :  No DataSource set

原因分析

Nacos 配置的是单机模式,使用mysql 进行存储配置文件,Nacos的启动脚本已经配置了MySQL的连接方式,根据错误提示,应该是数据库的问题,重点排查MySQL的服务是否正常

排查MySQL可能存在的问题

确保Mysql已经启动

Mysql服务也是通过docker 的方式启动

查看docker 服务
docker ps
登录MySQL容器
docker exec -it <容器名称|容器id> /bin/sh

发现MySQL服务正常启动,也可以正常进入docker 容器

确保Mysql账号可以远程访问
登录MySQL
mysql -u root -p

输入密码

选择 mysql 数据库
use mysql;

因为 mysql 数据库中存储了用户信息的 user 表。

查看当前用户的相关信息
select host, user, authentication_string, plugin from user; 
确保IP可以访问
ping <IP>
确保端口可以访问
telnet <IP> <PORT>

排查Nacos可能存在的问题

是否正确设置环境变量

特别是以下环境变量:

  • MYSQL_SERVICE_HOST:MySQL数据库的主机名或IP地址。
  • MYSQL_SERVICE_PORT:MySQL数据库的端口号。
  • MYSQL_SERVICE_USER:连接数据库的用户名。
  • MYSQL_SERVICE_PASSWORD:连接数据库的密码。
  • MYSQL_SERVICE_DB_NAME:要使用的数据库名称。

确保这些环境变量的值正确地对应你的MySQL数据库配置。

是否设置超时时间

Nacos启动脚本增加,以下配置

-e NACOS_SERVER_TIMEOUT=5000

重启Nacos服务,还是报错

设置MySQL连接参数
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&serverTimezone=UTC'

重启Nacos服务,依旧报错

问题分析

根据报错的内容,一直觉得是MySQL的问题,可以发现MySQL是正常启动的,于是开始怀疑的Nacos的问题,而Nacos经过一系列的排查,也没有发现问题,到底是什么原因造成的呢?

最后把问题重新回到MySQL的上面,继续在MySQL上面找原因,由于把MySQL升级到了最新版,是不是因为升级MySQL造成的问题呢,对比MySQL旧版本存储数据,发现是MySQL加密插件的问题,那么问题就好解决了,只需要把加密插件修改为之前的就可以了

问题解决

修改MySQL密码并指定加密插件

# 使用mysql数据库
use mysql;
# 修改MySQL密码并指定加密插件
alter user 'root'@'%' identified with mysql_native_password by 'root';
# 刷新使其生效
flush privileges;
# 查询修改后的数据
select host,user,plugin,authentication_string from mysql.user;

这里将MySQL的密码设置为root,具体使用时,可以根据需要修改。

文档参考

在MySQL中,mysql.user表是存储用户信息的系统表之一。该表中的plugin字段表示用户所使用的身份验证插件。

  • caching_sha2_password:这是MySQL 8.0版本引入的默认身份验证插件。它使用SHA-256算法对密码进行加密,并将加密后的密码存储在mysql.user表中。这种插件提供了更强大的安全性,因为它使用了更强大的加密算法。
  • mysql_native_password:这是MySQL早期版本中使用的默认身份验证插件。它使用SHA-1算法对密码进行加密,并将加密后的密码存储在mysql.user表中。然而,SHA-1算法已经被认为不够安全,因此在MySQL 8.0版本中被caching_sha2_password取代。

当MySQL的用户使用caching_sha2_password作为身份验证插件时,可能会遇到无法通过外部访问的问题。这是因为caching_sha2_password插件要求客户端使用SSL/TLS加密连接到MySQL服务器。如果客户端没有使用SSL/TLS加密连接,MySQL服务器将拒绝连接请求。

这种限制是为了增加数据传输的安全性。通过使用SSL/TLS加密连接,可以防止密码在传输过程中被窃取或篡改。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
启动 Docker 引擎后启动 Nacos 出现 "No DataSource set" 报错时,这通常表示 Nacos 容器无法找到正确的数据源配置。根据您提供的引用内容,有几种可能导致这个问题的原因。 首先,该问题可能与您的数据源配置有关。请确保您的数据源配置正确无误,并且在容器启动时已经正确加载。如果您已经确认配置正确,可以尝试重新启动容器,以确保配置的正确加载。 其次,这个问题还可能与 Nacos 的日志配置有关。根据引用的内容,有时候报错可能是由于缺少 "nacos-logback.xml" 文件导致的。您可以尝试将该文件放入相应的文件夹中,以确保 Nacos 可以正确加载日志配置。 另外,根据引用中提到的操作系统和软件信息,您使用的是 Apple M1 Pro 操作系统,Nacos 版本为 v2.2.2-slim,MySQL 版本为 8.0.32。请确保您的操作系统和软件版本与 Nacos 的兼容性,并且已经正确安装和配置。 综上所述,当 Docker 启动 Nacos 报错 "No DataSource set"时,您可以尝试以下解决方法: 1. 确认数据源配置正确,并确保在容器启动时正确加载。 2. 检查是否缺少 "nacos-logback.xml" 文件,并将其放入相应的文件夹中。 3. 确认操作系统和软件版本与 Nacos 的兼容性,并正确安装和配置。 希望以上信息对您有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Docker 启动 Nacos 报错:No DataSource set](https://blog.csdn.net/qq_44402184/article/details/132014373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [docker安装nacos报错nacos-logback.xml找不到](https://download.csdn.net/download/weixin_43965349/87915737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值