当前位置:   article > 正文

Nacos连接Mysql8连接失败问题_nacos mysql8

nacos mysql8

一、问题复现

Nacos、Mysql 容器均开机自启。

Nacos 配置了 Mysql,配置确认没有问题,发现每次重启服务器,Nacos都无法直接成功连接 mysql。每次启动完 Nacos 后,需要用 Datagrip 连接一次 Mysql,再 docker restart nacos 才可以连上 Mysql。

Nacos 启动报错  No DataSource set,详情如下

很显然数据库没连上,经过百度搜索后,整理出一个解决方案。

解决方案之前,先看我的 nacos docker 启动参数:

  1. docker run -d \
  2. -e NACOS_AUTH_ENABLE=true \
  3. -e MODE=standalone \
  4. -e JVM_XMS=128m \
  5. -e JVM_XMX=128m \
  6. -e JVM_XMN=128m \
  7. -p 8848:8848 \
  8. -e SPRING_DATASOURCE_PLATFORM=mysql \
  9. -e MYSQL_SERVICE_HOST=XXX.XXX.XX.XXX \
  10. -e MYSQL_SERVICE_PORT=3306 \
  11. -e MYSQL_SERVICE_USER=root \
  12. -e MYSQL_SERVICE_PASSWORD=这里是密码嘻嘻嘻 \
  13. -e MYSQL_SERVICE_DB_NAME=nacos_config \
  14. -e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
  15. --restart=always \
  16. --privileged=true \
  17. -v /home/data/nacos/logs:/home/nacos/logs \
  18. --name xdclass_nacos_auth \
  19. nacos/nacos-server:2.0.2

二、解决方案

第一步:nacos配置的用户事root登录,先配置mysql用户表,修改root用户权限,使其能够实现远程登录(我的mysql版本是8.0)

  1. -- 查看用户权限
  2. select host,user from user;
  3. -- 修改root权限,可以远程登录
  4. update user set host='%' where user='root';
  5. -- 刷新权限
  6. flush privileges;
  7. --------------------------------------- 分割线 ---------------------------------------
  8. -- MySQL8以前的版本,给root用户授权的语句,如下:
  9. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  10. -- 注:
  11. -- All : 表示所有操作,比如select,update,insert等操作
  12. -- *.* :表示所有库的所有表(test.*则表示test库的所有表)
  13. -- root :表示授权的用户名
  14. -- % :表示可以从任意地方登录,如改成192.168.0.999,则表示只能从ip地址为192.168.0.999的机器登录
  15. -- 123456 :表示授权的用户名的密码

第二步:修改nacos 启动参数

方案① 第一次run镜像的时候,可以在参数上修改一波

在mysql连接参数后面加上一个 &allowPublicKeyRetrieval=true 

解释:"&allowPublicKeyRetrieval=true" 是 MySQL 数据库连接字符串中的一个参数,用于允许在 SSL 连接情况下获取公钥。

  1. docker run -d \
  2. -e NACOS_AUTH_ENABLE=true \
  3. -e MODE=standalone \
  4. -e JVM_XMS=128m \
  5. -e JVM_XMX=128m \
  6. -e JVM_XMN=128m \
  7. -p 8848:8848 \
  8. -e SPRING_DATASOURCE_PLATFORM=mysql \
  9. -e MYSQL_SERVICE_HOST=XXX.XXX.XX.XXX \
  10. -e MYSQL_SERVICE_PORT=3306 \
  11. -e MYSQL_SERVICE_USER=root \
  12. -e MYSQL_SERVICE_PASSWORD=这里是密码嘻嘻嘻 \
  13. -e MYSQL_SERVICE_DB_NAME=nacos_config \
  14. -e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true' \
  15. --restart=always \
  16. --privileged=true \
  17. -v /home/data/nacos/logs:/home/nacos/logs \
  18. --name xdclass_nacos_auth \
  19. nacos/nacos-server:2.0.2

方案② 我直接在docker容器的配置文件改了,如下

systemctl stop docker 关闭 docker

  1. # 进入该容器的配置文件所在目录
  2. cd /var/lib/docker/containers/[容器ID]
  3. # 更改配置文件
  4. vim config.v2.json

 在后面加了 \u0026allowPublicKeyRetrieval=true

 最后重启 docker 万事大吉,溜溜球~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/296555
推荐阅读
相关标签
  

闽ICP备14008679号