i psql 权限被拒绝
Posted
技术标签:
【中文标题】\i psql 权限被拒绝【英文标题】:\i psql permission denied 【发布时间】:2021-04-01 16:35:09 【问题描述】:我正在尝试运行一个使用 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
我已经查看了以下解决方案,但它们并没有解决我的问题:Sol1、Sol2,我使用此站点作为设置 postgresql 的说明。
目前我在尝试运行上面使用的命令时遇到权限被拒绝错误,理想的解决方案/解决方法是在新数据库上的 postgres 中执行 sql 脚本。
【问题讨论】:
目录也有权限。 [cat /path/to/file/mysqlfile.sql
是做什么的? ]
给了我一个权限被拒绝的错误。也许如果我在 postgres 中创建用户作为我的普通帐户,它将起作用......
psql 需要做两件事:1)连接数据库(成功) 2)读取文件(失败)
【参考方案1】:
@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),否则它会出错。我还给了自己对该数据库的所有权限。然后我就可以按预期执行命令了。
这个解决方案有点恶心。我会关注这个帖子一段时间,如果有更好的结果我会很乐意切换答案。
【讨论】:
否psql
正在寻找 -d
数据库名称、-U
用户名、-h
主机名和/或 -p
端口号。在没有明确声明的情况下,它将回退到默认值。因此,如果您想以说明符用户身份连接到特定数据库,请使用上面的参数来执行此操作。这一切都在这里psql 和Key words 进行了说明。
是的,我在我发布的最初问题的一个链接中看到了该解决方案。以上是关于i psql 权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
拒绝+启示+TED+被拒的100天+What I learned from 100 days of rejection
让我们加密 SSL 无法以“错误:EACCES:权限被拒绝,打开 '/etc/letsencrypt/live/domain.net/privkey.pem'”开始