2016-03-04 69 views
1

我目前正在编写脚本来构建我的流浪盒。我得到了PHP 7和安装一些其他的工具,以及PostgreSQL的,但创建数据库,当试图给予我收到以下错误特权尝试授予权限时不存在关系

ERROR: relation "projectname" does not exist

这是我的脚本(重要的东西)

#!/usr/bin/env bash 
projectname='projectname' 
echo "Initializing database" 
sudo apt-get install -y postgresql 
sudo -u postgres psql -c "CREATE USER $projectname WITH PASSWORD 'xxxx';" 
sudo -u postgres psql -c "CREATE DATABASE $projectname;" 
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON $projectname TO $projectname;" 

一切正常,直到最后一步

sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON $projectname TO $projectname;"

w ^母鸡尝试了这一点,我收到上述错误。我也试图把它写手动

sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON projectname TO projectname;"

同样的错误。

我也试图把它包在引号

sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON 'feedparser' TO 'feedparser';" 

sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON \"feedparser\" TO \"feedparser\";" 

正是我错了在这里做什么?

回答

4

有关GRANT PRIVILEGES的文档说您的版本GRANT命令适用于授予表的权限。如果你想授予数据库的权利,你应该使用GRANT ALL PRIVILEGES ON DATABASE projectname TO projectname;。下面我显示这个命令的结果:

postgres=# CREATE USER projectname WITH PASSWORD 'projectname'; 
CREATE ROLE 
postgres=# CREATE DATABASE projectname; 
CREATE DATABASE 
postgres=# GRANT ALL PRIVILEGES ON projectname TO projectname; 
ERROR: relation "projectname" does not exist 
postgres=# GRANT ALL PRIVILEGES ON DATABASE projectname TO projectname; 
GRANT 
+0

谢谢。就是这样。后来我自己发现了它,但由于我没有写在某处,我会接受你的答案。正如你所说:我只需要将DATABASE添加到查询中就行了。 – Musterknabe

+0

非常感谢您接受答案。 –