2014-02-17 96 views
17

好吧,所以我对RDS和AWS相当新,但我无法为我的生活,我的笔记本电脑上创建的数据库,到amazon RDS,我确实移动它我的测试VPS,也是我的台式机,根本不需要做任何的问题,这里是我到目前为止已经试过..在Amazon RDS上设置PostGis

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; 

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

[email protected]:~$ 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 | {} 
+1

我对RDS(尚未)非常熟悉,但是从我看到的它非常热衷于执行所有者规则。那么,谁是'testgetwork'数据库的所有者?可能'rdsadmin'。即使不是这样,你可能会以更大的成功运行你的命令作为'rdsadmin'。我意识到这并不理想,但是让你走出门外可能会证明是成功的。 – ProgrammerDan

回答

12

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

这对我有用。

我仍然有问题导入我的数据,得到:

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

那些任何想法?
另外,是否有可能以rdsadmin身份登录?

+0

我们应该在从SQL文件导入时执行安装吗? – sarat

+0

感谢您的链接 – geogeek

+0

您是否曾经解决基本类型和语言c问题? – joncon