Docker+PostgreSQL报错:角色‘dummy’不存在的问题求助
解决PostgreSQL Docker容器中“Role不存在”的认证失败问题
你的问题核心是Docker命名卷postgres_data中保留了旧的数据库初始化数据,导致你在compose文件中配置的POSTGRES_USER、POSTGRES_DB等环境变量没有生效——PostgreSQL容器只会在首次启动且数据目录为空时,才会根据这些环境变量创建用户和数据库。如果卷已经存在,容器会直接使用卷中已有的数据,无视新的环境变量配置。
以下是具体解决步骤:
彻底清理旧容器和关联数据卷
运行命令停止容器并删除关联的命名卷:docker-compose down -v如果你需要手动操作,也可以分步执行:
# 停止运行中的容器 docker stop pg_test # 删除容器 docker rm pg_test # 删除保存旧数据的命名卷 docker volume rm postgres_data重新启动容器
执行启动命令,此时容器会重新初始化数据库,根据你compose文件中的配置创建dummy用户和test数据库:docker-compose up -d验证连接
使用psql客户端测试连接(如果本地没有psql,也可以用容器内的客户端):# 本地客户端连接 psql -h localhost -p 5432 -U dummy -d test # 或进入容器内部连接 docker exec -it pg_test psql -U dummy -d test输入密码
dummy即可成功连接。
补充说明:你之前尝试的切换端口、终止端口进程操作,只能解决端口冲突类问题,但本次问题的根源是数据卷中的旧配置,因此这些操作无法解决问题。
内容的提问来源于stack exchange,提问作者Swarnendu Basak
相关产品推荐
相关产品推荐

