我们目前在生产数据库中使用 PostgreSQL 9.2,我们希望迁移到使用 PostgreSQL 9.4 的新 RDS 实例。但是,我们需要拥有创建函数的权限,但只有超级用户才能在 RDS 上创建函数,而我的用户无法被授予超级用户权限。
CREATE FUNCTION crosstab50(text, OUT rownumber integer, OUT c1 text,...)
RETURNS SETOF record
LANGUAGE c
STABLE STRICT
AS '$libdir/tablefunc', 'crosstab';
Run Code Online (Sandbox Code Playgroud)
但我们在恢复操作期间遇到此错误:
ERROR: permission denied for language c
Run Code Online (Sandbox Code Playgroud) 我需要提高我的数据库性能,为了实现这一点,我启用了log我的postgresql.conf:
log_statement = 'all'
log_connections = on
log_disconnections = on
Run Code Online (Sandbox Code Playgroud)
为什么我有 3 个duration输出SELECT?
2016-02-29 15:35:07 CET [3492-349] postgres@uat LOG: execute <unnamed>: SELECT ID FROM public.document WHERE documentID is NULL AND StatusID = (SELECT ID FROM public.status WHERE status = 'New') ORDER BY PriorityID DESC, ModTime ASC FOR UPDATE LIMIT 1
2016-02-29 15:35:07 CET [3492-350] postgres@uat LOG: duration: 31.096 ms
2016-02-29 15:35:08 CET [3494-223] postgres@uat LOG: duration: 0.090 ms
2016-02-29 15:35:08 CET [3494-224] …Run Code Online (Sandbox Code Playgroud) 我当前的数据库uat作为 owner postgres。但现在我想设置具有正确权限的角色和用户。一些简单的东西,比如:
角色:dba,developer,application
用户: dba1, dev1, dev2,app1
哪里dba可以在数据库上做任何事情以进行管理;developer可以进行SELECT,UPDATE和INSERT, 通常的开发人员操作;app1与developer角色相同的操作,暂时。
我怎样才能正确地做到这一点?production在这个新设置中,谁应该是我表的所有者?
更新:
------------------------
-- INITIAL SETUP
------------------------
-- create uat database
create database uat;
-- dba role
create role dba with superuser createdb createrole nologin replication bypassrls;
-- dev role
create role dev with nosuperuser nocreatedb nocreaterole nologin noreplication nobypassrls; …Run Code Online (Sandbox Code Playgroud) 我对安全性了解不多。我正在云服务中使用我的数据库部署虚拟机。我想加密此服务器与任何客户端之间的所有通信。我怎样才能做到这一点 ?
更多信息: 我已经从 postgres 文档 [ 1 , 2 ] 中阅读了很多材料,但我对其中的内容了解不多。我遵循了本教程,现在我有了这些文件:
valter@eniac:test$ ll
total 28
drwxr-xr-x 2 valter valter 4096 Jan 25 12:54 ./
drwxr-xr-x 3 root root 4096 Jan 25 12:50 ../
-rw-rw-r-- 1 valter valter 1834 Jan 25 12:53 privkey.pem
-rw-rw-r-- 1 valter valter 4783 Jan 25 12:54 server.crt
-rw------- 1 valter valter 1675 Jan 25 12:53 server.key
-rw-rw-r-- 1 valter valter 3672 Jan 25 12:53 server.req
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么处理他们。root.crt和root.crt文件在哪里?我怎样才能生成它们?我把这些生成的文件放在哪里?我应该在客户端做什么?