加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

postgresql – 在postgres中以单用户模式创建表

发布时间:2020-12-16 03:54:16 所属栏目:安全 来源:网络整理
导读:我试图从postgres图像创建一个Dockerfile.回购说,应该通过在/docker-entrypoint-initdb.d/中放置一个shell脚本来处理初始化.我根据我在网上找到的一个例子提出了以下脚本: #!/bin/bashecho "******CREATING DOCKER DATABASE******"gosu postgres postgres -

我试图从postgres图像创建一个Dockerfile.回购说,应该通过在/docker-entrypoint-initdb.d/中放置一个shell脚本来处理初始化.我根据我在网上找到的一个例子提出了以下脚本:

#!/bin/bash
echo "******CREATING DOCKER DATABASE******"
gosu postgres postgres --single <<- EOSQL
   CREATE DATABASE orpheus;
   CREATE USER docker WITH ENCRYPTED PASSWORD 'pwd_docker';
   GRANT ALL PRIVILEGES ON DATABASE orpheus to docker;
   CREATE TABLE profiles ( 
     profile_id    SERIAL UNIQUE PRIMARY KEY,
     user_id integer NOT NULL UNIQUE,
     profile_photo_id integer NOT NULL UNIQUE,
     age integer 
   );
   CREATE TABLE hidden_user ( 
     owner_id    integer NOT NULL PRIMARY KEY,
     target_id integer NOT NULL 
   );
EOSQL
echo ""
echo "******DOCKER DATABASE CREATED******"

反斜杠似乎是必需的,否则我得到一个解析错误.该脚本运行时没有错误,除了CREATE TABLE命令之外的所有命令似乎都有效.

是否在单用户模式下不支持表创建?如果是这样,有没有更好的方法让dockerfile设置一个包含在postgres中创建的表的图像?

@a_horse_with_no_name通过他的评论让我走上正轨.我决定放弃单用户模式,即使它是“推荐”.相反,我用pg_ctl启动postgres,加载一些包含我的表创建的sql文件,并使用pg_ctl停止服务器.

我的shell脚本如下所示:

#!/bin/bash
echo "******CREATING DOCKER DATABASE******"

echo "starting postgres"
gosu postgres pg_ctl -w start

echo "bootstrapping the postgres db"
gosu postgres psql -h localhost -p 5432 -U postgres -a -f /db/bootstrap.sql

echo "initializing tables"
gosu postgres psql -h localhost -p 5432 -U postgres -d orpheus -a -f /db/setup.sql

echo "stopping postgres"
gosu postgres pg_ctl stop

echo "stopped postgres"


echo ""
echo "******DOCKER DATABASE CREATED******"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读