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