mariadb 当我使用podman-compose时,我如何访问一个数据库容器?

a14dhokn  于 2023-01-26  发布在  其他
关注(0)|答案(2)|浏览(125)

我一直试图弄清楚如何连接到一个mariadb容器,而使用podman-compose,我一直得到一个错误。
我是这么做的:

软件版本

podman version = 3.3.1
podman-compose version = podman-compose-0.1.7-2.git20201120.el8.noarch`

停靠-编写.yml

version: '3'
services:
  db:
    image: mariadb:latest
    environment:
      MARIADB_USER: user
      MARIADB_PASSWORD: pass
      MARIADB_DATABASE: testdb
      MARIADB_ROOT_PASSWORD: rootpass
    volumes:
      - db_data:/var/lib/mysql

当我使用以下命令旋转此容器时:podman-compose up -d
然后尝试使用以下命令连接到此数据库:

podman exec -it project_db_1 mariadb -uroot -prootpass

我得到这个错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

作为普通用户和root用户,我都收到此错误。
然而,当我运行与podman相同的容器时:

指挥官

podman run -d \
--name mariadb \
-e MARIADB_USER=user \
-e MARIADB_PASSWORD=pass \
-e MARIADB_DATABASE=testdb \
-e MARIADB_ROOT_PASSWORD=rootpass \
mariadb:latest

然后尝试使用以下命令连接到此数据库:

podman exec -it mariadb mariadb -uroot -prootpass

我能够成功登录。
有没有人能解释一下我在podman-compose上做错了什么,或者为什么它不允许我用我提供的凭据登录?

mqkwyuun

mqkwyuun1#

好的,对于任何想知道我做了什么来修复这个问题的人...首先,我卸载了podman & podman-compose,因为它有太多的问题,所以我安装了docker & docker-compose。
其次,当我在docker-compose中运行这个脚本时,我得到了一个在podman-compose中没有出现的错误。
错误:services.db.environment must be a mapping
在Google上搜索了那个错误之后,我发现我需要将环境部分格式化为这样:

version: '3'
services:
  db:
    image: mariadb:latest
    environment:
      - MARIADB_USER=user
      - MARIADB_PASSWORD=pass
      - MARIADB_DATABASE=testdb
      - MARIADB_ROOT_PASSWORD=rootpass
    volumes:
      - db_data:/var/lib/mysql

在我修复了这个问题之后,docker-compose运行得很好,我可以连接到我的数据库,甚至从另一个容器。我做了一个测试,使用这个代码修复的podman-compose,它仍然不能工作。所以我只是打算使用docker,直到podman修复他们的问题。

5gfr0r5j

5gfr0r5j2#

您需要确保绑定到容器的“公共”地址。默认情况下,它将绑定到0.0.0.0。在该接口上,您无法从其他pod访问它。
在服务中添加一个command,并设置--bind-address,如下所示:

services:
  db:
    image: docker.io/mariadb:latest
    command: --bind-address=db

这将使它侦听正确的接口:)

相关问题