我正在尝试将一个表导入到我已经作为 postgres 超级用户创建的名为“test”的数据库中。该文件(即表)位于已安装的驱动器/文件系统中。
*我已登录到 postgres 用户。其他用户对该文件具有读、写和执行权限。
当我使用以下命令时
\i '/run/media/qazizarifulislam/Windows_files/Work/RA/learning-postgres/person.sql'
我收到错误 - /run/media/qazizarifulislam/Windows_files/Work/RA/learning-postgres/person.sql: Permission denied
在哪里,
- qazizarifulislam 是我的用户名
- Windows_files 是文件系统(它是 NFTS,而不是外部 HDD 或 SDD)
- 其余部分只是子文件夹。
- person.sql 是一个文件,其中包含创建表的行,然后具有将记录插入表中的查询。(预览如下图)
我该如何解决这个问题/导入表格?
问题更深层次,与用户角色并没有真正的关系。我的硬盘驱动器没有安装到 mnt 目录中。它们被挂载到一个临时目录中。我使用磁盘更改了设置,以便它们自动挂载到 mnt 中。之后一切正常。
您的操作系统用户需要对该文件的读取权限以及对路径中所有目录的读取和执行权限。你可能缺少后者。
请注意,我所说的操作系统用户不是PostgreSQL 用户(通常
postgres
),而是启动的操作系统用户psql
。如果找不到权限问题,请尝试禁用 SE-Linux。
在 PostgreSQL 中,您应该创建一个“角色”来访问数据库,然后将 psql 与 -U 选项一起用作您的常规 linux 用户。
创建角色;当您的 postgres 用户运行时
createuser --interactive
然后查看有关将数据库“测试”更改为由该新“角色”拥有的文档: https ://www.postgresql.org/docs/13/sql-alterdatabase.html
https://www.postgresql.org/docs/13/database-roles.html