V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cMoon
V2EX  ›  程序员

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

  •  
  •   cMoon · 2023-02-01 13:57:00 +08:00 · 2505 次点击
    这是一个创建于 640 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想自己搭一个博客( 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:
    
    34 条回复    2023-02-05 22:32:20 +08:00
    cMoon
        1
    cMoon  
    OP
       2023-02-01 14:01:10 +08:00
    容器内也无法登录,修改密码没用
    Still4
        2
    Still4  
       2023-02-01 14:36:38 +08:00
    MYSQL_ROOT_HOST=%
    加上这个试试
    cMoon
        3
    cMoon  
    OP
       2023-02-01 14:49:54 +08:00
    @Still4 还是登不上
    wdssmq
        4
    wdssmq  
       2023-02-01 14:58:56 +08:00
    - --spring.r2dbc.url=r2dbc:pool:mysql://xxx:3316/halo

    ↓ ↓

    - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
    1120101929
        5
    1120101929  
       2023-02-01 15:13:10 +08:00
    --spring.r2dbc.password= halodb

    password 多了空格?
    xuyang2
        6
    xuyang2  
       2023-02-01 15:17:25 +08:00
    MySQL 报错难道就给你报个 "Access denied" ?
    Access denied **for whom** ?
    TiDao
        7
    TiDao  
       2023-02-01 15:25:03 +08:00
    1 docker ps 确认 halodb 是 running 的状态;
    cMoon
        8
    cMoon  
    OP
       2023-02-01 15:29:41 +08:00
    @wdssmq
    @1120101929 确实是多了个空格,但问题应该是出在下面 halodb 的配置,我容器内都登录不了
    TiDao
        9
    TiDao  
       2023-02-01 15:30:11 +08:00
    1 docker ps 确认 halodb 是 running 的状态;2 用 root 账号看能不能登录再容器外部登录,不能登录需要进入 halodb 容器里给 root 远程登录权限;
    cMoon
        10
    cMoon  
    OP
       2023-02-01 15:31:49 +08:00
    @1120101929 access denied for user ‘root‘@
    @TiDao 确认过了 db 是正常启动了
    cMoon
        11
    cMoon  
    OP
       2023-02-01 15:33:47 +08:00
    @TiDao 我容器内部登录都进不去,配置文件加了 skip-grant-tables 可以进去,但是改完密码重启容器又是 access denied for user 了
    TiDao
        12
    TiDao  
       2023-02-01 15:38:17 +08:00
    @cMoon MYSQL_ROOT_PASSWORD: halodb 这是 root 的密码,你使用的是这个密码吗? mysql -uroot -p 进 db 容器里,用这个命令登录
    xuyang2
        13
    xuyang2  
       2023-02-01 15:44:10 +08:00
    https://github.com/halo-dev/docs/blob/main/docs/getting-started/install/docker-compose.md:

    environment:
    # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
    - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
    - MYSQL_DATABASE=halo

    yours:

    environment:
    MYSQL_ROOT_PASSWORD: halodb
    TZ: Asia/Shanghai
    MYSQL_DATABASE: halo
    gumuxi
        14
    gumuxi  
       2023-02-01 15:48:31 +08:00
    cMoon
        15
    cMoon  
    OP
       2023-02-01 15:55:56 +08:00
    @TiDao 我查了 user 表的信息,
    mysql> SELECT User, authentication_string, Host FROM user;
    +------------------+------------------------------------------------------------------------+-----------+
    | User | authentication_string | Host |
    +------------------+------------------------------------------------------------------------+-----------+
    | root | halodb | % |
    | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost |
    | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost |
    | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost |
    | root | halodb | localhost |
    +------------------+------------------------------------------------------------------------+-----------+
    cMoon
        16
    cMoon  
    OP
       2023-02-01 15:57:13 +08:00
    @xuyang2 我刚查了 user 表,发现问题了😂
    cMoon
        17
    cMoon  
    OP
       2023-02-01 15:58:12 +08:00
    @xuyang2
    @TiDao 存的密码是要自己先 md5 加密一下是吧😂
    xuyang2
        18
    xuyang2  
       2023-02-01 15:59:14 +08:00
    environment 的格式
    应该是 list 而不是 dict 吧
    cMoon
        19
    cMoon  
    OP
       2023-02-01 16:01:37 +08:00
    @xuyang2 应该都可以,我后面是按照 dockerhub 上 mysql 提供的格式改的
    cMoon
        20
    cMoon  
    OP
       2023-02-01 16:06:25 +08:00
    @cMoon 不是这个问题,裂开,搞了一天了
    xuyang2
        21
    xuyang2  
       2023-02-01 16:14:21 +08:00
    换个 MYSQL_USER 不要用 root 试试?
    cMoon
        22
    cMoon  
    OP
       2023-02-01 16:44:48 +08:00
    @xuyang2
    @TiDao 我把数据库挂载的配置删掉就没问题了
    joesonw
        23
    joesonw  
       2023-02-01 16:55:28 +08:00 via iPhone
    network 内端口用 3306
    moshiyeap100
        24
    moshiyeap100  
       2023-02-01 17:14:23 +08:00
    halo 的这个 docker-compose 配置最早应该是我写的,但是和我最初提的 pr 有些差异。不过你这个问题尝试下把整个 mysql 容器 rm 掉,然后删除 MYSQL 宿主机挂载的文件,然后重新创建一个 mysql 容器就好了。

    rm -rf ./mysql ./mysqlBackup ./mysqlConf
    moshiyeap100
        25
    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
        26
    magewu1223ll  
       2023-02-01 17:23:45 +08:00
    我之前遇到过的是 host 配置 127.0.0.1 失败 要改成 0.0.0.0 才能访问,不过看样子跟楼主不是同一个问题
    moshiyeap100
        27
    moshiyeap100  
       2023-02-01 17:24:59 +08:00
    如果是 access denied for user ‘root‘@, 那就在 environment 中加一条 MYSQL_ROOT_HOST: '%'
    aichunya
        28
    aichunya  
       2023-02-01 17:28:31 +08:00
    - --default-authentication-plugin=mysql_native_password
    把这个删掉就好了
    liuxingdeyu
        29
    liuxingdeyu  
       2023-02-01 18:30:24 +08:00
    environment:
    - TZ=Asia/Shanghai
    - MYSQL_ROOT_PASSWORD=123456
    noparking188
        30
    noparking188  
       2023-02-01 22:30:24 +08:00
    spring.r2dbc.url=r2dbc:pool:mysql://xxx:3316/halo

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

    我遇到过类似问题,官方 MySQL 镜像默认配置没给 root 远程登录权限,还有一些其它坑,需要自己改配置
    noparking188
        31
    noparking188  
       2023-02-01 22:31:34 +08:00
    @noparking188 #30 27 楼老哥的方法
    dy0425
        32
    dy0425  
       2023-02-02 00:27:34 +08:00 via Android
    我上次腾讯云上的测试数据库默认端口弱密码,被勒索了,重新起个容器改了密码,死活登不上去,搞了半天发现原来弱密码还能进去,挂载的配置没删
    cMoon
        33
    cMoon  
    OP
       2023-02-02 08:47:09 +08:00
    @moshiyeap100 谢谢大佬,应该就是这个挂载的文件的问题.现在解决了
    muhahaha
        34
    muhahaha  
       2023-02-05 22:32:20 +08:00 via iPhone
    请问 Halo 这个博客好用吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1481 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:18 · PVG 01:18 · LAX 10:18 · JFK 13:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.