【问题标题】:How to use pg_dump correctly in order to do a database migration?如何正确使用 pg_dump 进行数据库迁移?
【发布时间】:2021-10-25 22:20:57
【问题描述】:

大家好,我对在 Postgre sql 中执行 pg_dump 还很陌生。我已经登录到服务器并以 postgres 用户身份运行。我尝试运行 pg_dump 以进行数据库迁移,但我不断收到“Permission Denied”提示。我相信我拥有最高权限并且应该能够运行它。我在终端中的语法有问题吗?非常感谢您的帮助。

问题:

*

[user@dfhsdaf07 ~]$ sudo su
[root@dfhsdaf07 user]# su postgres
bash-4.2$ pg_dump -F t file > file.tar
bash: file.tar: Permission denied
bash-4.2$ pg_dump -F t file >./file.tar
bash: ./file.tar: Permission denied

系统信息:

Macbook Pro 2015

16 GB 内存

英特尔 I7 处理器

操作系统:

macOS Big Sur 11.5.2

【问题讨论】:

  • 不要使用图像来显示文本信息。复制并粘贴文本作为您问题的更新。权限问题与创建文件有关。看起来您正在尝试以postgres 用户的身份在root 用户目录中创建文件。不需要所有sudo\su 命令。在您的主目录中执行此操作,只需将 -U postgres 添加到 pg_dump 命令。
  • 非常感谢阿德里安。我会听取你的建议,从现在开始只复制和粘贴。我会试试这个,然后将此问题标记为已解决。
  • 这成功了!非常感谢阿德里安

标签: sql postgresql macos terminal database-migration


【解决方案1】:

你缺少的权限是在当前目录创建dump文件的权限。

原因是如果你使用so postgres,你会留在之前的工作目录(大概是/root),而用户postgres没有在那里创建文件的权限。

使用- 选项:

su - postgres`

这将启动一个登录 shell 并将您放入 postgres 的主目录。

【讨论】:

  • 或者只是在su postgres之后做cd
猜你喜欢
  • 2016-02-28
  • 1970-01-01
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-10
  • 2019-12-02
相关资源
最近更新 更多