赞
踩
Nacos、Mysql 容器均开机自启。
Nacos 配置了 Mysql,配置确认没有问题,发现每次重启服务器,Nacos都无法直接成功连接 mysql。每次启动完 Nacos 后,需要用 Datagrip 连接一次 Mysql,再 docker restart nacos 才可以连上 Mysql。
Nacos 启动报错 No DataSource set,详情如下
很显然数据库没连上,经过百度搜索后,整理出一个解决方案。
解决方案之前,先看我的 nacos docker 启动参数:
- docker run -d \
- -e NACOS_AUTH_ENABLE=true \
- -e MODE=standalone \
- -e JVM_XMS=128m \
- -e JVM_XMX=128m \
- -e JVM_XMN=128m \
- -p 8848:8848 \
- -e SPRING_DATASOURCE_PLATFORM=mysql \
- -e MYSQL_SERVICE_HOST=XXX.XXX.XX.XXX \
- -e MYSQL_SERVICE_PORT=3306 \
- -e MYSQL_SERVICE_USER=root \
- -e MYSQL_SERVICE_PASSWORD=这里是密码嘻嘻嘻 \
- -e MYSQL_SERVICE_DB_NAME=nacos_config \
- -e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
- --restart=always \
- --privileged=true \
- -v /home/data/nacos/logs:/home/nacos/logs \
- --name xdclass_nacos_auth \
- nacos/nacos-server:2.0.2
- -- 查看用户权限
- select host,user from user;
-
- -- 修改root权限,可以远程登录
- update user set host='%' where user='root';
-
- -- 刷新权限
- flush privileges;
-
- --------------------------------------- 分割线 ---------------------------------------
-
- -- MySQL8以前的版本,给root用户授权的语句,如下:
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
- -- 注:
- -- All : 表示所有操作,比如select,update,insert等操作
- -- *.* :表示所有库的所有表(test.*则表示test库的所有表)
- -- root :表示授权的用户名
- -- % :表示可以从任意地方登录,如改成192.168.0.999,则表示只能从ip地址为192.168.0.999的机器登录
- -- 123456 :表示授权的用户名的密码
方案① 第一次run镜像的时候,可以在参数上修改一波
在mysql连接参数后面加上一个 &allowPublicKeyRetrieval=true
解释:"&allowPublicKeyRetrieval=true" 是 MySQL 数据库连接字符串中的一个参数,用于允许在 SSL 连接情况下获取公钥。
- docker run -d \
- -e NACOS_AUTH_ENABLE=true \
- -e MODE=standalone \
- -e JVM_XMS=128m \
- -e JVM_XMX=128m \
- -e JVM_XMN=128m \
- -p 8848:8848 \
- -e SPRING_DATASOURCE_PLATFORM=mysql \
- -e MYSQL_SERVICE_HOST=XXX.XXX.XX.XXX \
- -e MYSQL_SERVICE_PORT=3306 \
- -e MYSQL_SERVICE_USER=root \
- -e MYSQL_SERVICE_PASSWORD=这里是密码嘻嘻嘻 \
- -e MYSQL_SERVICE_DB_NAME=nacos_config \
- -e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true' \
- --restart=always \
- --privileged=true \
- -v /home/data/nacos/logs:/home/nacos/logs \
- --name xdclass_nacos_auth \
- nacos/nacos-server:2.0.2
方案② 我直接在docker容器的配置文件改了,如下
systemctl stop docker 关闭 docker
- # 进入该容器的配置文件所在目录
- cd /var/lib/docker/containers/[容器ID]
-
- # 更改配置文件
- vim config.v2.json
在后面加了 \u0026allowPublicKeyRetrieval=true
最后重启 docker 万事大吉,溜溜球~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。