在使用podman-compose时,我一直试图弄清楚如何连接到mariadb容器,但我一直收到一个错误。
以下是我所做的:
软件版本
podman version = 3.3.1
podman-compose version = podman-compose-0.1.7-2.git20201120.el8.noarch`
docker compose.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上做错了什么吗?或者为什么它不允许我使用我提供的凭据登录?
好吧,对于任何想知道我做了什么来解决这个问题的人来说。。。首先,我卸载了podman&podman compose是因为它有太多的问题,所以我安装了docker&码头工人作曲。
其次,当我在docker compose中运行这个脚本时,我遇到了一个错误,这个错误没有出现在podman compose中。
错误:services.db.environment must be a mapping
在谷歌上搜索了这个错误后,我发现我需要像这样格式化环境部分:
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解决他们的问题。
您需要确保绑定到;"公共";容器的地址。默认情况下,它将绑定到0.0.0.0。在该界面上,您无法从其他pod访问它
向服务添加一个command
,并设置--bind-address
。像这样:
services:
db:
image: docker.io/mariadb:latest
command: --bind-address=db
这将使它监听正确的接口:(