求教 Docker Componse 部署 mysql 配置默认密码失效

2023-02-01 13:57:00 +08:00
 cMoon

想自己搭一个博客( halo

按照文档Halo Documents通过 docker componse 创建 Halo + MySQL 的实例。halo 启动报错,连接数据库 Access denied

参考https://blog.csdn.net/qq_36493719/article/details/104246271未解决

docker-componse.yml:

version: "3"

services:
  halo:
    image: halohub/halo:2.1.0
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./:/root/.halo2
    ports:
      - 6666:8090
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://xxx:3316/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password= halodb
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://xxx/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=pwd@halo

  halodb:
    image: mysql:8.0.31
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    command:
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
      - ./mysqlConf/my.cnf:/etc/mysql/my.cnf
    ports:
      - 3316:3306
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      MYSQL_ROOT_PASSWORD: halodb
      TZ: Asia/Shanghai
      MYSQL_DATABASE: halo

networks:
  halo_network:
2544 次点击
所在节点    程序员
34 条回复
xuyang2
2023-02-01 16:14:21 +08:00
换个 MYSQL_USER 不要用 root 试试?
cMoon
2023-02-01 16:44:48 +08:00
@xuyang2
@TiDao 我把数据库挂载的配置删掉就没问题了
joesonw
2023-02-01 16:55:28 +08:00
network 内端口用 3306
moshiyeap100
2023-02-01 17:14:23 +08:00
halo 的这个 docker-compose 配置最早应该是我写的,但是和我最初提的 pr 有些差异。不过你这个问题尝试下把整个 mysql 容器 rm 掉,然后删除 MYSQL 宿主机挂载的文件,然后重新创建一个 mysql 容器就好了。

rm -rf ./mysql ./mysqlBackup ./mysqlConf
moshiyeap100
2023-02-01 17:20:59 +08:00
而且 MYSQL_ROOT_PASSWORD: halodb 和 - MYSQL_ROOT_PASSWORD=o#DwN&JSa56 这两种写法是 Map syntax 和 Array syntax ,有些细微差异的

environment defines environment variables set in the container. can use either an array or a map. Any boolean values; true, false, yes, no, SHOULD be enclosed in quotes to ensure they are not converted to True or False by the YAML parser.environment
magewu1223ll
2023-02-01 17:23:45 +08:00
我之前遇到过的是 host 配置 127.0.0.1 失败 要改成 0.0.0.0 才能访问,不过看样子跟楼主不是同一个问题
moshiyeap100
2023-02-01 17:24:59 +08:00
如果是 access denied for user ‘root‘@, 那就在 environment 中加一条 MYSQL_ROOT_HOST: '%'
aichunya
2023-02-01 17:28:31 +08:00
- --default-authentication-plugin=mysql_native_password
把这个删掉就好了
liuxingdeyu
2023-02-01 18:30:24 +08:00
environment:
- TZ=Asia/Shanghai
- MYSQL_ROOT_PASSWORD=123456
noparking188
2023-02-01 22:30:24 +08:00
spring.r2dbc.url=r2dbc:pool:mysql://xxx:3316/halo

你这里是写的本机地址吧,是地址试一下给 MySQL root 加远程登录权限,或者试一下换成 halodb 的容器名称

我遇到过类似问题,官方 MySQL 镜像默认配置没给 root 远程登录权限,还有一些其它坑,需要自己改配置
noparking188
2023-02-01 22:31:34 +08:00
@noparking188 #30 27 楼老哥的方法
dy0425
2023-02-02 00:27:34 +08:00
我上次腾讯云上的测试数据库默认端口弱密码,被勒索了,重新起个容器改了密码,死活登不上去,搞了半天发现原来弱密码还能进去,挂载的配置没删
cMoon
2023-02-02 08:47:09 +08:00
@moshiyeap100 谢谢大佬,应该就是这个挂载的文件的问题.现在解决了
muhahaha
2023-02-05 22:32:20 +08:00
请问 Halo 这个博客好用吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/912233

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX