【发布时间】:2020-04-24 23:05:10
【问题描述】:
我正在尝试从托管在 GCP/GCE 实例 (RHEL 8.x VM) 上转储整个 PG 数据库。
目的是将 .sql 文件传输到 GCE 上的另一个 RHEL 8.x VM 并恢复数据库。
我以操作系统用户 'postgres'
身份运行此脚本#!/bin/bash
clear
export PGUSER=<pg_user>
export PG_DATABASE=<pg_db>
export PGHOSTADDR=<pg_ip_addr>
export PGPORT=5432
SQL_FILE=<pg_db>.sql
export PGPASSWORD=<passwd>
pg_dump \
--format plain \
--no-owner \
--verbose \
--file $SQL_FILE \
$PG_DATABASE
如果脚本中还有其他建议可以将数据库转储到 .sql 文件以进行恢复:
- 建议添加到脚本中的任何内容,
- 或您知道的任何改进脚本的方法),请告知。
运行脚本时出现此错误:(已安装 PostGIS)
pg_dump: last built-in OID is 16383
pg_dump: reading extensions
pg_dump: identifying extension members
pg_dump: reading schemas
pg_dump: reading user-defined tables
pg_dump: error: query failed: ERROR: permission denied for table us_lex
pg_dump: error: query was: LOCK TABLE public.us_lex IN ACCESS SHARE MODE
为什么以操作系统用户postgres 运行时权限被拒绝。
我需要添加什么权限(完整/精确命令),才能添加所需的任何权限?
或者我怎么能排除这个表?我认为我不需要它,它会通过安装一个新的 Postgres 实例来重新创建。
【问题讨论】:
标签: postgresql google-compute-engine rhel pg-dump