2

我正在尝试使用 postgreSQL 自动安装 debian,但我的脚本遇到了问题。schema.sql 到 db1 的数据库导入似乎不起作用,我不确定我是否正确创建了数据库。

这是我正在使用的代码:

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

# IMPORT SQL
psql --username=postgres spider < /etc/schema.sql

当我尝试查看是否创建了数据库时,出现以下错误,并且 SQL 导入似乎不起作用。

root@li624-168:/etc/app# psql -U root spider                                                        
psql: FATAL:  role "root" does not exist

root@li624-168:/etc//app# psql -U deploy spider                                                      
psql: FATAL:  Peer authentication failed for user "deploy" 

谁能告诉我我哪里出错了?

4

2 回答 2

1

首先,确保在执行命令时检查结果代码。您可以通过set -e在顶部添加来中止 bash 脚本。如果任何单个命令失败,它将立即停止。

其次,再看一下错误信息:

Peer authentication failed for user "deploy"

您正在尝试以“部署”身份登录,它似乎可以识别用户名。但是,您的操作系统用户不称为“部署”,因此peer auth failed。看起来您想使用密码登录,因此设置您的pg_hba.conf文件以允许该操作。

于 2013-08-22T12:22:54.953 回答
0

Postgres 数据库归 Linux 用户所有。因此,您需要在 postgres 中创建一个与您的 Linux 用户同名的用户。然后,您必须使用新用户来创建您的数据库。例子:

我的 linux 帐户是 razcor

sudo su postgres -c 'createuser -d -E -R -S razcor'

这将创建一个 postgres 用户

sudo su razcor -c "createdb db1 --owner razcor"

这会创建我的数据库

结果:

razcor@ubuntu:~$ psql -U razcor db1

psql (8.4.17)
Type "help" for help.

db1=>

在您的情况下,创建一个名为:root的用户

@Richard Huxton:是的,我同意。

于 2013-08-22T10:47:06.957 回答