linux - 脚本自动化 postgres 设置

标签 linux postgresql

我正在编写系统设置脚本并且已经安装了 postgres。这是一个测试脚本(以 root 身份运行),用于尝试报告 postgres 中的工作目录。调用 pwd 作为 postgres 给出 /var/lib/postgresql。但是测试..

#!/bin/bash
su - postgres
pwd > /home/me/postgres_report
exit

.. 失败(显然)并报告原始工作目录。之后 bash shell 卡在 postgres 中,表明命令没有按正确的顺序调用。我了解这里的 bash 环境问题。我不知道如何做我需要做的事情,这是一个自动化的 postgres 过程,我可以很容易地以交互方式进行(即进入 postgres,执行命令,然后退出)。有什么指点吗?

最佳答案

使用 sudo .

使用其中之一:

  • 将一行命令传递给 psql

    sudo -u postgres psql -c "SELECT ..."`
    
  • 此处文档:

    sudo -u postgres psql <<"__END__"
    SELECT ...;
    SELECT ...;
    __END__
    

    (如果您希望能够在 shell 变量中替换,请省略 ",例如 <<__END__,反斜杠转义 $ 表示您不想成为变量)

  • 将文件传递给 psql

     sudo -u postgres psql -f /path/to/file
    

sudo -u postgres当然只有当你需要成为 postgres 时才需要系统用户以 postgres 身份运行任务数据库用户通过 peer验证。否则你可以使用 psql -U username , 一个 .pgpass文件等

关于linux - 脚本自动化 postgres 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32406484/

相关文章:

linux - 如何使用 DKMS 将 NVIDIA .run 驱动程序重新打包为 .deb

postgresql - SequelizeJS 中的自定义 Postgresql 序列 Nextval

postgresql - PostgreSQL 有没有办法自动设置记录更新的时间?

.net - 如何在 Postgres 数据库中存储 UTF-16 字符?

sql - 判断表中的条目是否在增加

python - psycopg2 在/tmp 上的权限被拒绝

linux - 如何在 Ubuntu 上通过 CLI 显示 apt 历史记录

linux - 使用 SIGALRM 和计时器时内存损坏

java - 类未找到异常 : Didn't find class "com.xxx.xxx.Application" on path: DexPathList on Linux

mysql - master.info 文件不断被截断