Postgresql 如何运行postgres命令:无法识别当前目录

Postgresql 如何运行postgres命令:无法识别当前目录,postgresql,macos,Postgresql,Macos,通过执行以下操作,我可以运行psql: Davids-d david$ psql --u postgres Password for user postgres: psql (9.4.18) Type "help" for help. postgres=# 但是,当我运行以下命令时,我得到一个错误: Davids-iMac:datadocs david$ sudo -u postgres psql -f resources/postgresql/initdb.sql could not

通过执行以下操作,我可以运行
psql

Davids-d david$ psql --u postgres
Password for user postgres: 
psql (9.4.18)
Type "help" for help.

postgres=# 
但是,当我运行以下命令时,我得到一个错误:

Davids-iMac:datadocs david$ sudo -u postgres psql -f resources/postgresql/initdb.sql
could not identify current directory: Permission denied
这意味着什么?我将如何解决这一问题?请注意,我设置了以下变量:

david$ echo $PGDATA
/Users/david/PostgreSQL/data/pg94

您的命令似乎错误,请尝试以下操作:

sudo psql -U postgres -f resources/postgresql/initdb.sql

问题是sudo-u postgres

您的shell以您的身份运行,但您以postgres用户的身份运行该命令。它没有查看文件的权限,甚至不在当前目录中

通过使用
sudo-u postgres cat resources/postgresql/initdb.sql
以postgres用户的身份读取文件,我们可以从等式中消除
psql
。你应该得到同样的错误

有两件事你必须做

  • cd
    到postgres用户可以访问的目录
  • 将文件放在postgres用户可以访问的位置

  • 例如,
    /tmp

    您的前两句话和列表中的第一点刚刚解决了我在尝试启动数据库4天时遇到的问题。如果这个问题/答案出现在搜索引擎查询“启动postgres db”时,我相信很多人不会感到头痛,因为我已经看到很多人在通过终端启动postgres db方面也有同样的问题