It is recommended that a dedicated user account is used for replication.
- While it is possible to add the REPLICATION> privilege to
- a superuser account for the purporses of replication, this is not
- recommended. While REPLICATION> privilege gives very high
+ While the REPLICATION> privilege is granted to superuser
+ accounts by default, it is not recommended to use superuser accounts
+ for replication. While REPLICATION> privilege gives very high
permissions, it does not allow the user to modify any data on the
primary system, which the SUPERUSER> privilege does.
A role having the REPLICATION> attribute is a very
highly privileged role, and should only be used on roles actually
used for replication. If not specified,
- NOREPLICATION is the default.
+ NOREPLICATION is the default for all roles except
+ superusers.
to do most of your work as a role that is not a superuser.
To create a new database superuser, use CREATE ROLE
name SUPERUSER. You must do
- this as a role that is already a superuser.
+ this as a role that is already a superuser. Creating a superuser
+ will by default also grant permissions to initiate streaming
+ replication. For increased security this can be disallowed using
+ CREATE ROLE name SUPERUSER
+ NOREPLICATION.
A role must explicitly be given permission to initiate streaming
- replication (superusers do not bypass this check). A role used
- for streaming replication must always have LOGIN>
- permission as well. To create such a role, use
+ replication. A role used for streaming replication must always
+ have LOGIN> permission as well. To create such a role, use
CREATE ROLE name REPLICATION
LOGIN.
if (dpassword && dpassword->arg)
password = strVal(dpassword->arg);
if (dissuper)
+ {
issuper = intVal(dissuper->arg) != 0;
+ /*
+ * Superusers get replication by default, but only if
+ * NOREPLICATION wasn't explicitly mentioned
+ */
+ if (!(disreplication && intVal(disreplication->arg) == 0))
+ isreplication = 1;
+ }
if (dinherit)
inherit = intVal(dinherit->arg) != 0;
if (dcreaterole)
*/
/* yyyymmddN */
-#define CATALOG_VERSION_NO 201101031
+#define CATALOG_VERSION_NO 201101051
#endif
* user choices.
* ----------------
*/
-DATA(insert OID = 10 ( "POSTGRES" t t t t t t f -1 _null_ _null_ ));
+DATA(insert OID = 10 ( "POSTGRES" t t t t t t t -1 _null_ _null_ ));
#define BOOTSTRAP_SUPERUSERID 10