\i psql 权限被拒绝

时间:2021-04-01 16:35:09

标签: postgresql psql permission-denied sql-scripts

我正在尝试运行一个使用 postgresql 的 .sql 脚本。我已经安装了 postgresql,并创建了一个数据库来运行脚本,但是我不断收到文件的权限被拒绝错误。正在寻找问题的解决方案或变通方法以允许我执行 psql 脚本。

我尝试过的: 巴什:

chmod 777 mysqlfile.sql
chown postgres mysqlfile.sql

psql 命令:

\i /path/to/file/mysqlfile.sql
psql -U postgres -d testdb -a -f mysqlfile.sql

我已经查看了以下解决方案,但它们没有解决我的问题:Sol1Sol2,我使用此站点作为设置 postgresql 的说明。

目前,我在尝试运行上面使用的命令时遇到权限被拒绝错误,理想的解决方案/解决方法是在新数据库上的 postgres 中执行 sql 脚本。

1 个答案:

答案 0 :(得分:0)

在@wildplasser 发表评论后,我找到了解决方案。下面我按顺序运行命令,作为解决方法,然后解释。

cs@cs: sudo -u -i postgres
postgres@cs: psql
(postgres) psql: CREATE DATABASE cs;
(postgres) psql: GRANT ALL PRIVILEGES ON DATABASE cs TO cs;
(postgres) psql: exit 
postgres@cs: exit
cs@cs: psql
(cs) psql: \i /path/to/file/mysqlfile.sql

为什么我必须这样做:

当您以 postgres 以外的其他人的身份连接到 psql 时,它还会查找要以该名称连接的数据库。所以我创建了一个与我的本地帐户 (cs) 同名的数据库 (cs),否则它会出错。我还给了自己对该数据库的所有权限。然后我就可以按预期执行命令了。

这个解决方案有点恶心。我会关注这个话题一段时间,如果出现更好的结果,我会很乐意切换答案。