windows 系统下(nacos1.x) nacos-1.1.3 链接数据库 mysql8.0 出错分析

本文详细描述了在Windows系统下,使用Nacos1.1.3版本连接MySQL8.0数据库时遇到的问题,包括尝试过的无效解决方案以及最终的正确配置步骤。作者提供了修改pom.xml、引入正确驱动、调整bootstrap.properties以及运行脚本的具体指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

windows 系统下(nacos1.x) nacos-1.1.3 链接数据库 mysql8.0 出错分析

**

1、首先以下方法亲测无效:

1)需要在数据库 URL 链接配置信息中 添加 allowPublicKeyRetrieval=true 无效
db.url.0=**&allowPublicKeyRetrieval=true
	
2)	在 nacos 根目录下新建文件夹 plugins/mysql/ 文件夹,并上传相应驱动
mysql-connector-java-8.0.23.jar 无效。

3)查看 ../nacos/bin/startup.cmd 文件 mysql 加载配置,正确,无效。

set "JAVA_OPT=%JAVA_OPT% -Xbootclasspath/a:%BASE_DIR%\plugins\cmdb:%BASE_DIR%\plugins\mysql"
set "JAVA_OPT=%JAVA_OPT% -Dnacos.home=%BASE_DIR%"
set "JAVA_OPT=%JAVA_OPT% -Dloader.path=%BASE_DIR%/plugins/health -jar %BASE_DIR%\target\nacos-server.jar"
set "JAVA_OPT=%JAVA_OPT% --spring.config.location=%CUSTOM_SEARCH_LOCATIONS%"
set "JAVA_OPT=%JAVA_OPT% --logging.config=%BASE_DIR%/conf/nacos-logback.xml"
	
4)检查 application.properties 文件中,配置外部数据库链接用户名密码等,正确,无效。	
	
# mysql datasource
spring.datasource.platform=mysql
# 
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.user=root
db.password=******	
	

5)	开启 mysql8.0 root 远程权限,无效。

mysql> use mysql
Database changed
mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
| localhost | testuser         |
+-----------+------------------+
5 rows in set (0.06 sec)

mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.09 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.07 sec)
	
	
6)下载 nacos-1.1.3 源码,idea 打开,修改,重新打包,失败!	

	6.1  修改 nacos 项目根目录下的 pom.xml,手动指定 mysql 驱动版本
	
	(C:\java-test\idea2019\nacos-1.1.3\pom.xml)
	
	<!-- JDBC libs -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <!-- 这里使用8.0.23,可根据自己 mysql 安装实际情况调整 -->
	    <version>8.0.23</version>
	</dependency>
	
		
	6.2  修改 naming[nacos-naming] 下 相关类
	
	( 修改 com.alibaba.nacos.naming.healthcheck.MysqlHealthCheckProcessor.java )
	
	
	// 修改前
	//import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
	
	// 修改后
	import com.mysql.cj.jdbc.MysqlDataSource;
		
	6.3 	修改mysql连接参数:mysql8.X版本需要指定时区等参数(这里可不修改,但最好修改一下)
		
	找到 nacos-console 下的 src/main/resources/META-INF/nacos-default.properties 
	并修改 db.url 的数据库连接配置为
	
	characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
	
	// 修改前
	db.url.0=jdbc:mysql://11.162.196.161:3306/diamond_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
	db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
	
	// 修改后
	db.url.0=jdbc:mysql://11.162.196.161:3306/diamond_devtest?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
	db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
		
	6.4  打包运行,执行构建命令:mvn install 失败!!!
	
	mvn -Prelease-nacos -DskipTests clean install -U	
	
	打包失败!!!	

2、 解决方案:

1)在 nacos 根目录下,新建文件夹 plugins/mysql/ 文件夹,并上传相应驱动
mysql-connector-java-8.0.23.jar 。

在这里插入图片描述

2)将 nacos 目录下的 conf\application.properties 改名为 bootstrap.properties
关键一步,否则上面的不会起作用。

在这里插入图片描述

3) 在配置文件 conf/bootstrap.properties 中,添加数据库配置:

# mysql datasource
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.user=root
db.password=yourpassword

4)运行脚本 bin/startup.cmd(linux系统运行.sh脚本)

5)启动成功,可通过浏览器访问 http://127.0.0.1:8848/nacos

用户名:nacos 密码:nacos

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

段子手-168

你的鼓励将是我你的创作最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值