我一直试图弄清楚如何连接到一个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上做错了什么,或者为什么它不允许我用我提供的凭据登录?
2条答案
按热度按时间mqkwyuun1#
好的,对于任何想知道我做了什么来修复这个问题的人...首先,我卸载了podman & podman-compose,因为它有太多的问题,所以我安装了docker & docker-compose。
其次,当我在docker-compose中运行这个脚本时,我得到了一个在podman-compose中没有出现的错误。
错误:
services.db.environment must be a mapping
在Google上搜索了那个错误之后,我发现我需要将环境部分格式化为这样:
在我修复了这个问题之后,docker-compose运行得很好,我可以连接到我的数据库,甚至从另一个容器。我做了一个测试,使用这个代码修复的podman-compose,它仍然不能工作。所以我只是打算使用docker,直到podman修复他们的问题。
5gfr0r5j2#
您需要确保绑定到容器的“公共”地址。默认情况下,它将绑定到0.0.0.0。在该接口上,您无法从其他pod访问它。
在服务中添加一个
command
,并设置--bind-address
,如下所示:这将使它侦听正确的接口:)