gpt4 book ai didi

postgresql - 为什么我不能扩展 docker postgres 图像来创建额外的数据库和用户

转载 作者:行者123 更新时间:2023-11-29 12:56:59 28 4
gpt4 key购买 nike

我正在使用 docker postgres 9.4.5图像并使用复制到 docker 容器中的 /docker-entrypoint-initdb.d 的 init.sh 对其进行扩展。我正在尝试创建另一个数据库和一个非管理员用户,该用户可以访问 $POSTGRES_DB 以及我正在创建的第二个数据库。我尝试了以下操作,其中 $POSTGRES_USER 是用户 myadmin$POSTGRES_DB 是通过 docker- 传递的数据库 mydb1编写环境:

#!/bin/bash
set -e

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE USER userx WITH password '$POSTGRES_PASSWORD';
CREATE DATABASE diagnostics;
GRANT ALL PRIVILEGES ON DATABASE userx TO $POSTGRES_DB;
GRANT ALL PRIVILEGES ON DATABASE userx TO mydb2;
EOSQL

这给了我一个错误:

postgres_1   | CREATE DATABASE
postgres_1 |
postgres_1 | CREATE ROLE
postgres_1 |
postgres_1 |
postgres_1 | /docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init-user-db.sh
postgres_1 | FATAL: database "myadmin" does not exist
postgres_1 | psql: FATAL: database "myadmin" does not exist
docker_postgres_1 exited with code 2

然后我用 --username postgres 尝试了它,现在得到了错误

ERROR:  database "userx" does not exist

然后我尝试创建数据库 userx: #!/bin/庆典 设置-e

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE DATABASE userx;
CREATE USER userx WITH password '$POSTGRES_PASSWORD';
CREATE DATABASE diagnostics;
GRANT ALL PRIVILEGES ON DATABASE userx TO $POSTGRES_DB;
GRANT ALL PRIVILEGES ON DATABASE userx TO mydb2;
EOSQL

但是得到了:

postgres_1   | CREATE DATABASE
postgres_1 | ERROR: role "mydb1" does not exist
postgres_1 | STATEMENT: GRANT ALL PRIVILEGES ON DATABASE rwx TO analytics;
postgres_1 | ERROR: role "mydb2" does not exist
docker_postgres_1 exited with code 3

有人可以帮忙吗,这对我来说是一个真正的障碍,我不知道如何继续,因为我觉得我不需要创建数据库 userx 或角色,或者我错了吗?

最佳答案

您的 GRANT 语法不太正确 - https://www.postgresql.org/docs/9.0/static/sql-grant.html

简而言之应该是这样的:

GRANT ALL PRIVILEGES ON yourdbname not user TO your user;

关于postgresql - 为什么我不能扩展 docker postgres 图像来创建额外的数据库和用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40657809/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com