sql - 在 shell 中自动安装和创建 postgresql 数据库

标签 sql linux postgresql shell debian

我正在尝试通过自动 shell 脚本在 postgresql 下创建两个名为 spider 和 geo 的数据库。这是到目前为止的代码。

apt-get install -y postgresql
echo "CREATE ROLE deploy LOGIN ENCRYPTED PASSWORD '$APP_DB_PASS';" | sudo -u postgres psql
su postgres -c "createdb spider --owner deploy"
su postgres -c "createdb geo --owner deploy"
/etc/init.d/postgresql reload

任何人都可以看看我是否以正确的方式处理这个问题。此外,当我尝试通过运行以下命令查看它是否有效时,我收到错误消息:

root:~# psql -l                                                                               
psql: FATAL:  role "root" does not exist 

我哪里出错了,有什么方法可以改进这个脚本吗?

最佳答案

通过 apt-get 判断,您的部署平台是 Ubuntu-(ish)。

apt-get install -y postgresql
echo "CREATE ROLE deploy LOGIN ENCRYPTED PASSWORD '$APP_DB_PASS';" | sudo -u postgres psql
su postgres -c "createdb spider --owner deploy"
su postgres -c "createdb geo --owner deploy"
service postgresql reload

那么你应该可以通过在命令行指定一个用户来登录了:

psql -U root spider

psql -U deploy spider

一般来说,您的方向是正确的。

关于sql - 在 shell 中自动安装和创建 postgresql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18345107/

相关文章:

c# - 使用一种方法运行类似的存储过程(将 StoredProcedure 名称作为方法参数传递)是否安全

java - 如何为具有 ArrayList 字段的实体创建 spring-batch ItemWriter?

sql - 将某个时间段内的所有日期插入表中

sql - 查询有问题

python - Django累积总和或运行总和

postgresql - psql:致命:连接需要有效的客户端证书

postgresql - 使用 PL/pgsql 触发器更新同一个表中的旧记录

c - 为目标文件中的指令分配地址

linux - test -n 和 test -z 都为真的情况

linux - 两个具有相同路径权限的 FTP 用户