【问题标题】:psql: error: could not connect to server: FATAL: role "postgres" does not existpsql:错误:无法连接到服务器:致命:角色“postgres”不存在
【发布时间】:2021-01-07 20:06:15
【问题描述】:

我已经“dockerized”了一个 Django/PostgreSQL 应用程序并尝试连接到我的数据库 我有 2 个容器:web et db 它可以工作,但我无法连接到我的 postgresql 数据库

我曾经运行过docker exec -it coverage_africa_db_1 psql -U postgres,但出现错误

psql:错误:无法连接到服务器:致命:角色“postgres”不存在

我尝试通过运行命令docker exec -it aab213f730cd bash '跳转'到我的容器中并尝试使用 psql 命令进行连接...

psql -d db_dev

psql:错误:无法连接到服务器:致命:角色“root”不存在

psql -U postgres

错误:无法连接到服务器:致命:角色“postgres”不存在

事实上,psql 选项都不起作用...

.env.dev

SECRET_KEY=*************************************
DEBUG=1
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
SQL_ENGINE=django.db.backends.postgresql
SQL_DATABASE=db_dev
SQL_USER=user
SQL_PASSWORD=user
SQL_HOST=db
SQL_PORT=5432
DATABASE=postgres
DJANGO_SETTINGS_MODULE=core.settings.dev

docker-compose.yml

version: '3.7'

services:
    web:
        build: ./app
        restart: always
        command: python manage.py runserver 0.0.0.0:8000
        volumes:
            - ./app/:/usr/src/app
        ports:
            - 8000:8000
        env_file:
            - ./.env.dev
        depends_on: 
            - db
    db:
        image: postgres:12.0-alpine
        restart: always
        volumes:
            - postgres_data:/var/lib/postgres/data/
        environment:
            - POSTGRES_USER=user
            - POSTGRES_PASSWORD=user
            - POSTGRES_DB=db_dev
volumes:
    postgres_data:

【问题讨论】:

    标签: postgresql docker


    【解决方案1】:

    使用 postgres 容器,这个:

    environment:
    - POSTGRES_USER=user
    - POSTGRES_PASSWORD=user
    - POSTGRES_DB=db_dev
    

    定义如何初始化数据库。如果您没有更改它,您应该能够以用户 'user' 的身份使用密码 'user' 连接。

    如果您确实更改了它,那么实际值就是第一次启动时存在的值。首次启动后,这些凭据将写入数据库,这些数据位于 postgres_data 卷上。如果您想删除数据并使用新凭据重新初始化数据库,请使用docker-compose down -v

    【讨论】:

    • 感谢您的回复。我没有更改它并尝试docker exec -it coverage_africa_db_1 psql -U user并得到错误psql: error: could not connect to server: FATAL: database "user" does not exist
    • 不明白为什么在一种情况下是角色不存在而另一种情况下数据库不存在
    • 我已经做了一个 docker-compose down(没有 -v)但没有改变任何东西......
    • 您使用POSTGRES_DB=db_dev 将数据库命名为“db_dev”。试试docker exec -it coverage_africa_db_1 psql -d db_dev -U user
    • 不客气。如果您想了解更多关于这些变量的信息,请查看此页面hub.docker.com/_/postgres
    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 2015-07-31
    • 2013-06-03
    相关资源
    最近更新 更多