nacos开机自启无法连接上本机的Mysql

  nacos和mysql处于同一台服务器的情况下才会遇到我说的这个问题。

一、遇到的问题如下:nacos在设置了开机自启动脚本/usr/lib/systemd/system/nacos.service,并且设置了systemctl enable nacos。mysql给nacos使用的用户开启了%和localhost均可连接的权限。这种情况下,nacos开机自启无法连接上Mysql,必须手动结束再开启。

  开机自启动脚本如下(注意:启动脚本中不要存在注释,我加了注释报错,原因未知):

[Unit]
Description=nacos  #
After=network.target  #设置在联网后启动,但网络不一定联通,如果要联通的网络再启动,那么使用network-online.target
After=mysqld.service  #设置在mysqld.service之后启动

[Service]
Type=forking
TimeoutSec=0  #防止连接超时
User=admin  #以什么角色启动
Group=admin  #以什么组启动

ExecStart=/bin/bash /home/admin/nacos/bin/startup.sh -m standalone  #因为我试单机节点启动,所以写全命令
ExecReload=/home/admin/nacos/bin/shutdown.sh  #重启脚本地址
ExecStop=/home/admin/nacos/bin/shutdown.sh  #停止脚本地址
Restart=on-failure
PrivateTmp=true

[Install]
WantedBy=multi-user.target

  nacos/bin/startup.sh脚本修改(注意:这里需要直接指定JAVA_HOME,否则systemctl start nacos会报错):

# [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
# [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
# [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/opt/taobao/java
# [ ! -e "$JAVA_HOME/bin/java" ] && unset JAVA_HOME
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_301

二、解决办法:nacos的JDBC配置需要增加一个“&allowPublicKeyRetrieval=true”,允许在 SSL 连接情况下获取公钥。

  nacos/conf/application.properties配置文件修改

db.url.0=jdbc:mysql://[IP地址,不要用127.0.0.1]:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false
&serverTimezone=UTC&allowPublicKeyRetrieval=true

三、类似的问题出现在两个docker容器可以查看:https://blog.csdn.net/ElendaLee/article/details/131102400

posted @ 2023-10-12 14:02  苦逼运维  阅读(186)  评论(0编辑  收藏  举报