好吧,所以我對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 | {}
我對RDS(尚未)非常熟悉,但是從我看到的它非常熱衷於執行所有者規則。那麼,誰是'testgetwork'數據庫的所有者?可能'rdsadmin'。即使不是這樣,你可能會以更大的成功運行你的命令作爲'rdsadmin'。我意識到這並不理想,但是讓你走出門外可能會證明是成功的。 – ProgrammerDan