我们目前在生产数据库中使用 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
文件在哪里?我怎样才能生成它们?我把这些生成的文件放在哪里?我应该在客户端做什么?