在 Amazon RDS 上设置 PostGis

Posted

技术标签:

【中文标题】在 Amazon RDS 上设置 PostGis【英文标题】:Setting up PostGis on Amazon RDS 【发布时间】:2014-03-17 07:06:28 【问题描述】:

好的,所以我对 RDS 和 AWS 还很陌生,但我无法终生将我在笔记本电脑上创建的数据库放到亚马逊 RDS 上,我确实将它移到了我的测试 VPS 以及我的台式机,完全没有问题,这是我迄今为止尝试过的..

create extension postgis;
create extension fuzzystrmatch;
create extension postgis_tiger_geocoder;
create extension postgis_topology;
alter schema tiger owner to rds_superuser;
alter schema topology owner to rds_superuser;

CREATE FUNCTION exec(text) returns text language plpgsql volatile AS $f$ BEGIN EXECUTE $1; RETURN     $1; END; $f$;
SELECT exec('ALTER TABLE ' || quote_ident(s.nspname) || '.' || quote_ident(s.relname) || ' OWNER TO rds_superuser')
  FROM (
    SELECT nspname, relname
    FROM pg_class c JOIN pg_namespace n ON (c.relnamespace = n.oid) 
    WHERE nspname in ('tiger','topology') AND
    relkind IN ('r','S','v') ORDER BY relkind = 'S')
s;        

GRANT ALL PRIVILEGES ON DATABASE testgetwork TO luke;

然后我连接到数据库并尝试加载新数据库的本地副本...

luke@l-xps:~$ psql --host=myhost.dns.us-west-2.rds.amazonaws.com --port=5432 --username=luke --password --dbname=testgetwork < testgetwork.sql 
Password for user luke: 
SET
SET
SET
SET
SET
ERROR:  schema "topology" already exists
ALTER SCHEMA
CREATE EXTENSION
ERROR:  must be owner of extension plpgsql
CREATE EXTENSION
ERROR:  must be owner of extension postgis
CREATE EXTENSION
ERROR:  must be owner of extension postgis_topology

<more output, removed to save space>

ERROR:  permission denied for relation spatial_ref_sys
invalid command \.
 setval 
-------- 
      1
(1 row)

 setval 

<more output, removed to save space>

我的问题是,我该如何从这里继续前进?所有功能似乎都被权限问题阻止了,因为用户 luke 是 rds_superuser 组的一部分,有 PostGis 和 RDS 经验的人知道我该如何解决这个问题吗?

testgetwork=> \du
                                  List of roles
   Role name   |                   Attributes                   |    Member of    
---------------+------------------------------------------------+-----------------
 luke          | Create role, Create DB                         | rds_superuser
 rds_superuser | Cannot login                                   | 
 rdsadmin      | Superuser, Create role, Create DB, Replication | 

【问题讨论】:

我对 RDS 还不是很熟悉,但据我所知,它非常热衷于执行所有者规则。那么,testgetwork 数据库的所有者是谁?可能rdsadmin。即使没有,您也可能会以rdsadmin 的身份运行命令获得更大的成功。我意识到这并不理想,但就让你走出大门而言可能证明是成功的。 【参考方案1】:

在 RDS 上设置 PostGIS 的官方指南是here。

这对我有用。

我仍然无法导入我的数据,获取:

...
must be superuser to create a base type
permission denied for language c
....

对这些有什么想法吗? 另外,可以rdsadmin登录吗?

【讨论】:

我们是否应该在从 SQL 文件导入时进行设置? 您是否解决了基本类型和语言 c 问题?

以上是关于在 Amazon RDS 上设置 PostGis的主要内容,如果未能解决你的问题,请参考以下文章

Amazon RDS Aurora 与 RDS MySQL 与 EC2 上的 MySQL?

sh Amazon RDS性能调整设置

云原生数据库-Amazon RDS

云原生数据库-Amazon RDS

Amazon RDS 的 Oracle 只读副本

在 Amazon RDS 上安装 Kmeans PostgreSQL 扩展