{"Entry":{"collection":"sql","key":"alter-default-privileges","name":"ALTER DEFAULT PRIVILEGES","aliases":["alterdefaultprivileges"],"metadata":{"aliases":["alterdefaultprivileges"],"changed_in":["9.2","10","11","12","17","18"],"changes":[{"from":"8.4","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":[],"removed":[]},"status":"added","synopsis":null,"to":"9.0"},{"from":"9.0","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description"],"removed":[]},"status":"changed","synopsis":null,"to":"9.1"},{"from":"9.1","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description"],"removed":[]},"status":"changed","synopsis":{"added":["TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]","GRANT { USAGE | ALL [ PRIVILEGES ] }","ON TYPES","REVOKE [ GRANT OPTION FOR ]","{ USAGE | ALL [ PRIVILEGES ] }","ON TYPES","FROM { [ GROUP ] role_name | PUBLIC } [, ...]","[ CASCADE | RESTRICT ]"],"removed":[]},"to":"9.2"},{"from":"9.3","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description","examples"],"removed":[]},"status":"changed","synopsis":null,"to":"9.4"},{"from":"9.6","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description"],"removed":[]},"status":"changed","synopsis":{"added":["TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]","GRANT { USAGE | CREATE | ALL [ PRIVILEGES ] }","ON SCHEMAS","REVOKE [ GRANT OPTION FOR ]","{ USAGE | CREATE | ALL [ PRIVILEGES ] }","ON SCHEMAS","FROM { [ GROUP ] role_name | PUBLIC } [, ...]","[ CASCADE | RESTRICT ]"],"removed":[]},"to":"10"},{"from":"10","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description"],"removed":[]},"status":"changed","synopsis":{"added":["ON { FUNCTIONS | ROUTINES }","ON { FUNCTIONS | ROUTINES }"],"removed":[]},"to":"11"},{"from":"11","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description","notes"],"removed":[]},"status":"changed","synopsis":{"added":["GRANT { { USAGE | CREATE }","[, ...] | ALL [ PRIVILEGES ] }","{ { USAGE | CREATE }","[, ...] | ALL [ PRIVILEGES ] }"],"removed":[]},"to":"12"},{"from":"15","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description"],"removed":[]},"status":"changed","synopsis":null,"to":"16"},{"from":"16","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description","notes"],"removed":[]},"status":"changed","synopsis":{"added":["GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }","{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }"],"removed":[]},"to":"17"},{"from":"17","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description"],"removed":[]},"status":"changed","synopsis":{"added":["TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]","GRANT { { SELECT | UPDATE }","[, ...] | ALL [ PRIVILEGES ] }","ON LARGE OBJECTS","REVOKE [ GRANT OPTION FOR ]","{ { SELECT | UPDATE }","[, ...] | ALL [ PRIVILEGES ] }","ON LARGE OBJECTS","FROM { [ GROUP ] role_name | PUBLIC } [, ...]","[ CASCADE | RESTRICT ]"],"removed":[]},"to":"18"},{"from":"18","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description","notes"],"removed":[]},"status":"changed","synopsis":null,"to":"19"}],"content_hash":"52e7a3f28565f97a0cd2403690ed774fa0c34081625c264389e8313330c36c0b","editorial":{},"first_version":"9.0","group":"role","imported_at":"2026-09-30T17:43:38.050884+08:00","last_version":"20","name":"ALTER DEFAULT PRIVILEGES","object":"DEFAULT PRIVILEGES","position":5002,"present_in":["9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"purpose":"define default access privileges","purpose_zh":"","related":["grant","revoke"],"slug":"alter-default-privileges","source_rev":"a709ab85","synopsis":"ALTER DEFAULT PRIVILEGES\n[ FOR { ROLE | USER } target_role [, ...] ]\n[ IN SCHEMA schema_name [, ...] ]\nabbreviated_grant_or_revoke\nwhere abbreviated_grant_or_revoke is one of:\n\nGRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n[, ...] | ALL [ PRIVILEGES ] }\nON TABLES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SEQUENCES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { EXECUTE | ALL [ PRIVILEGES ] }\nON { FUNCTIONS | ROUTINES }\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { USAGE | ALL [ PRIVILEGES ] }\nON TYPES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | CREATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SCHEMAS\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON LARGE OBJECTS\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n[, ...] | ALL [ PRIVILEGES ] }\nON TABLES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { USAGE | SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SEQUENCES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ EXECUTE | ALL [ PRIVILEGES ] }\nON { FUNCTIONS | ROUTINES }\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ USAGE | ALL [ PRIVILEGES ] }\nON TYPES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { USAGE | CREATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SCHEMAS\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON LARGE OBJECTS\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]","verb":"ALTER"}},"Definition":{"Collection":"sql","Key":"alter-default-privileges","SourceDatabase":"center","Version":"18","SourceTable":"sqlcmd","SourceKey":"alter-default-privileges","SourceRevision":"a709ab85","Facts":{"anchor":"SQL-ALTERDEFAULTPRIVILEGES","file":"sql-alterdefaultprivileges.html","lang":"en","name":"ALTER DEFAULT PRIVILEGES","purpose":"define default access privileges","purpose_zh":"","related":["grant","revoke"],"sections":[{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e allows you to set the privileges that will be applied to objects created in the future. (It does not affect privileges assigned to already-existing objects.) Privileges can be set globally (i.e., for all objects created in the current database), or just for objects created in specified schemas.\u003c/p\u003e\u003cp\u003eWhile you can change your own default privileges and the defaults of roles that you are a member of, at object creation time, new object permissions are only affected by the default privileges of the current role, and are not inherited from any roles in which the current role is a member.\u003c/p\u003e\u003cp\u003eAs explained in \u003ca href=\"/docs/18/ddl-priv.html\" title=\"5.8. Privileges\"\u003eSection 5.8\u003c/a\u003e, the default privileges for any object type normally grant all grantable permissions to the object owner, and may grant some privileges to \u003ccode class=\"literal\"\u003ePUBLIC\u003c/code\u003e as well. However, this behavior can be changed by altering the global default privileges with \u003ccode class=\"command\"\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e.\u003c/p\u003e\u003cp\u003eCurrently, only the privileges for schemas, tables (including views and foreign tables), sequences, functions, types (including domains), and large objects can be altered. For this command, functions include aggregates and procedures. The words \u003ccode class=\"literal\"\u003eFUNCTIONS\u003c/code\u003e and \u003ccode class=\"literal\"\u003eROUTINES\u003c/code\u003e are equivalent in this command. (\u003ccode class=\"literal\"\u003eROUTINES\u003c/code\u003e is preferred going forward as the standard term for functions and procedures taken together. In earlier PostgreSQL releases, only the word \u003ccode class=\"literal\"\u003eFUNCTIONS\u003c/code\u003e was allowed. It is not possible to set default privileges for functions and procedures separately.)\u003c/p\u003e\u003cp\u003eDefault privileges that are specified per-schema are added to whatever the global default privileges are for the particular object type. This means you cannot revoke privileges per-schema if they are granted globally (either by default, or according to a previous \u003ccode class=\"command\"\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e command that did not specify a schema). Per-schema \u003ccode class=\"literal\"\u003eREVOKE\u003c/code\u003e is only useful to reverse the effects of a previous per-schema \u003ccode class=\"literal\"\u003eGRANT\u003c/code\u003e.\u003c/p\u003e\u003cdiv class=\"refsect2\"\u003e\u003ch3\u003eParameters\u003c/h3\u003e\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003etarget_role\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eChange default privileges for objects created by the \u003cem class=\"replaceable\"\u003e\u003ccode\u003etarget_role\u003c/code\u003e\u003c/em\u003e, or the current role if unspecified.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eschema_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe name of an existing schema. If specified, the default privileges are altered for objects later created in that schema. If \u003ccode class=\"literal\"\u003eIN SCHEMA\u003c/code\u003e is omitted, the global default privileges are altered. \u003ccode class=\"literal\"\u003eIN SCHEMA\u003c/code\u003e is not allowed when setting privileges for schemas and large objects, since schemas can't be nested and large objects don't belong to a schema.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe name of an existing role to grant or revoke privileges for. This parameter, and all the other parameters in \u003cem class=\"replaceable\"\u003e\u003ccode\u003eabbreviated_grant_or_revoke\u003c/code\u003e\u003c/em\u003e, act as described under \u003ca href=\"/docs/18/sql-grant.html\" title=\"GRANT\"\u003e\u003cspan class=\"refentrytitle\"\u003eGRANT\u003c/span\u003e\u003c/a\u003e or \u003ca href=\"/docs/18/sql-revoke.html\" title=\"REVOKE\"\u003e\u003cspan class=\"refentrytitle\"\u003eREVOKE\u003c/span\u003e\u003c/a\u003e, except that one is setting permissions for a whole class of objects rather than specific named objects.\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e\u003c/div\u003e","key":"description","title":"Description"},{"html":"\u003cp\u003eUse \u003ca href=\"/docs/18/app-psql.html\" title=\"psql\"\u003e\u003cspan class=\"refentrytitle\"\u003e\u003cspan class=\"application\"\u003epsql\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e's \u003ccode class=\"command\"\u003e\\ddp\u003c/code\u003e command to obtain information about existing assignments of default privileges. The meaning of the privilege display is the same as explained for \u003ccode class=\"command\"\u003e\\dp\u003c/code\u003e in \u003ca href=\"/docs/18/ddl-priv.html\" title=\"5.8. Privileges\"\u003eSection 5.8\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eIf you wish to drop a role for which the default privileges have been altered, it is necessary to reverse the changes in its default privileges or use \u003ccode class=\"command\"\u003eDROP OWNED BY\u003c/code\u003e to get rid of the default privileges entry for the role.\u003c/p\u003e","key":"notes","title":"Notes"},{"html":"\u003cp\u003eGrant SELECT privilege to everyone for all tables (and views) you subsequently create in schema \u003ccode class=\"literal\"\u003emyschema\u003c/code\u003e, and allow role \u003ccode class=\"literal\"\u003ewebuser\u003c/code\u003e to INSERT into them too:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;\nALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;\n\u003c/pre\u003e\u003cp\u003eUndo the above, so that subsequently-created tables won't have any more permissions than normal:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC;\nALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;\n\u003c/pre\u003e\u003cp\u003eRemove the public EXECUTE permission that is normally granted on functions, for all functions subsequently created by role \u003ccode class=\"literal\"\u003eadmin\u003c/code\u003e:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;\n\u003c/pre\u003e\u003cp\u003eNote however that you \u003cspan class=\"emphasis\"\u003e\u003cem\u003ecannot\u003c/em\u003e\u003c/span\u003e accomplish that effect with a command limited to a single schema. This command has no effect, unless it is undoing a matching \u003ccode class=\"literal\"\u003eGRANT\u003c/code\u003e:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;\n\u003c/pre\u003e\u003cp\u003eThat's because per-schema default privileges can only add privileges to the global setting, not remove privileges granted by it.\u003c/p\u003e","key":"examples","title":"Examples"},{"html":"\u003cp\u003eThere is no \u003ccode class=\"command\"\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e statement in the SQL standard.\u003c/p\u003e","key":"compatibility","title":"Compatibility"},{"html":"\u003cspan class=\"simplelist\"\u003e\u003ca href=\"/wiki/sql/grant/?v=18\" title=\"GRANT\"\u003e\u003cspan class=\"refentrytitle\"\u003eGRANT\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/revoke/?v=18\" title=\"REVOKE\"\u003e\u003cspan class=\"refentrytitle\"\u003eREVOKE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e","key":"see_also","title":"See Also"}],"sections_same_as":"","slug":"18","synopsis_html":"ALTER DEFAULT PRIVILEGES\n    [ FOR { ROLE | USER } \u003cem class=\"replaceable\"\u003e\u003ccode\u003etarget_role\u003c/code\u003e\u003c/em\u003e [, ...] ]\n    [ IN SCHEMA \u003cem class=\"replaceable\"\u003e\u003ccode\u003eschema_name\u003c/code\u003e\u003c/em\u003e [, ...] ]\n    \u003cem class=\"replaceable\"\u003e\u003ccode\u003eabbreviated_grant_or_revoke\u003c/code\u003e\u003c/em\u003e\n\n\u003cspan class=\"phrase\"\u003ewhere \u003cem class=\"replaceable\"\u003e\u003ccode\u003eabbreviated_grant_or_revoke\u003c/code\u003e\u003c/em\u003e is one of:\u003c/span\u003e\n\nGRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON TABLES\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | SELECT | UPDATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON SEQUENCES\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { EXECUTE | ALL [ PRIVILEGES ] }\n    ON { FUNCTIONS | ROUTINES }\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { USAGE | ALL [ PRIVILEGES ] }\n    ON TYPES\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | CREATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON SCHEMAS\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { SELECT | UPDATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON LARGE OBJECTS\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON TABLES\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { { USAGE | SELECT | UPDATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON SEQUENCES\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { EXECUTE | ALL [ PRIVILEGES ] }\n    ON { FUNCTIONS | ROUTINES }\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { USAGE | ALL [ PRIVILEGES ] }\n    ON TYPES\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { { USAGE | CREATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON SCHEMAS\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { { SELECT | UPDATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON LARGE OBJECTS\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]","synopsis_text":"ALTER DEFAULT PRIVILEGES\n[ FOR { ROLE | USER } target_role [, ...] ]\n[ IN SCHEMA schema_name [, ...] ]\nabbreviated_grant_or_revoke\nwhere abbreviated_grant_or_revoke is one of:\n\nGRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n[, ...] | ALL [ PRIVILEGES ] }\nON TABLES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SEQUENCES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { EXECUTE | ALL [ PRIVILEGES ] }\nON { FUNCTIONS | ROUTINES }\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { USAGE | ALL [ PRIVILEGES ] }\nON TYPES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | CREATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SCHEMAS\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON LARGE OBJECTS\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n[, ...] | ALL [ PRIVILEGES ] }\nON TABLES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { USAGE | SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SEQUENCES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ EXECUTE | ALL [ PRIVILEGES ] }\nON { FUNCTIONS | ROUTINES }\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ USAGE | ALL [ PRIVILEGES ] }\nON TYPES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { USAGE | CREATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SCHEMAS\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON LARGE OBJECTS\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]"},"ManualEvidence":{},"MeasuredEvidence":{}},"Text":{"Collection":"sql","Key":"alter-default-privileges","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"ALTER DEFAULT PRIVILEGES","Summary":"定义默认访问权限","BodyHTML":"\u003cpre\u003eALTER DEFAULT PRIVILEGES\n[ FOR { ROLE | USER } target_role [, ...] ]\n[ IN SCHEMA schema_name [, ...] ]\nabbreviated_grant_or_revoke\n其中 abbreviated_grant_or_revoke 是下列之一：\n\nGRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n[, ...] | ALL [ PRIVILEGES ] }\nON TABLES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SEQUENCES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { EXECUTE | ALL [ PRIVILEGES ] }\nON { FUNCTIONS | ROUTINES }\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { USAGE | ALL [ PRIVILEGES ] }\nON TYPES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | CREATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SCHEMAS\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON LARGE OBJECTS\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n[, ...] | ALL [ PRIVILEGES ] }\nON TABLES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { USAGE | SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SEQUENCES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ EXECUTE | ALL [ PRIVILEGES ] }\nON { FUNCTIONS | ROUTINES }\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ USAGE | ALL [ PRIVILEGES ] }\nON TYPES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { USAGE | CREATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SCHEMAS\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON LARGE OBJECTS\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\u003c/pre\u003e\u003csection\u003e\u003ch2\u003e描述\u003c/h2\u003e\u003cp\u003e\u003ccode\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e允许你设置将应用于未来创建对象的权限。（它不会影响已经存在的对象上已分配的权限。）权限既可以全局设置（即，对当前数据库中未来创建的所有对象生效），也可以只针对指定模式中未来创建的对象设置。\u003c/p\u003e\u003cp\u003e虽然你可以修改自己的默认权限，也可以修改你所属角色的默认权限，但在创建对象时，新对象的权限只受当前角色的默认权限影响，不会从当前角色所属的任何角色继承。\u003c/p\u003e\u003cp\u003e如\u003ca href=\"/docs/18/ddl-priv.html\" rel=\"nofollow\"\u003e第 5.8 节\u003c/a\u003e中所述，任何对象类型的默认权限通常都会将所有可授予的权限授予对象拥有者，并且也可能向\u003ccode\u003ePUBLIC\u003c/code\u003e授予某些权限。不过，这种行为可以通过 \u003ccode\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e修改全局默认权限来改变。\u003c/p\u003e\u003cp\u003e当前，只有模式、表（包括视图和外部表）、序列、函数、类型（包括域）以及大对象的权限可以修改。对于此命令，函数包括聚合函数和过程。此命令中的\u003ccode\u003eFUNCTIONS\u003c/code\u003e和 \u003ccode\u003eROUTINES\u003c/code\u003e等价。（今后更推荐使用\u003ccode\u003eROUTINES\u003c/code\u003e，因为这是同时指代函数和过程的标准术语。在较早的\u003cspan\u003ePostgreSQL\u003c/span\u003e版本中，只允许使用\u003ccode\u003eFUNCTIONS\u003c/code\u003e。无法分别为函数和过程设置默认权限。）\u003c/p\u003e\u003cp\u003e按模式指定的默认权限会叠加到该对象类型的全局默认权限之上。这意味着，如果某项权限是在全局范围内授予的（无论是默认授予，还是根据此前未指定模式的\u003ccode\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e命令授予的），就不能按模式将其撤销。按模式执行的\u003ccode\u003eREVOKE\u003c/code\u003e 只适用于抵消此前按模式执行的\u003ccode\u003eGRANT\u003c/code\u003e所产生的效果。\u003c/p\u003e\u003cdiv\u003e\u003ch3\u003e参数\u003c/h3\u003e\u003cdiv\u003e\u003cdl\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003etarget_role\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e修改由\u003cem\u003e\u003ccode\u003etarget_role\u003c/code\u003e\u003c/em\u003e创建的对象的默认权限；如果省略，则为当前角色。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003eschema_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e一个现有模式的名称。如果指定，将修改以后在该模式中创建的对象的默认权限。如果省略\u003ccode\u003eIN SCHEMA\u003c/code\u003e，则修改全局默认权限。在为模式和大对象设置权限时，不允许使用\u003ccode\u003eIN SCHEMA\u003c/code\u003e，因为模式不能嵌套，而大对象不属于任何模式。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e要为其授予或撤销权限的现有角色的名称。此参数以及 \u003cem\u003e\u003ccode\u003eabbreviated_grant_or_revoke\u003c/code\u003e\u003c/em\u003e 中的所有其他参数，均按\u003ca href=\"/docs/18/sql-grant.html\" title=\"GRANT\" rel=\"nofollow\"\u003e\u003cspan\u003eGRANT\u003c/span\u003e\u003c/a\u003e或\u003ca href=\"/docs/18/sql-revoke.html\" title=\"REVOKE\" rel=\"nofollow\"\u003e\u003cspan\u003eREVOKE\u003c/span\u003e\u003c/a\u003e中的描述工作，只不过这里设置的是整类对象的权限，而不是特定的具名对象。\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e\u003c/div\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e注解\u003c/h2\u003e\u003cp\u003e使用\u003ca href=\"/docs/18/app-psql.html\" title=\"psql\" rel=\"nofollow\"\u003e\u003cspan\u003e\u003cspan\u003epsql\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e的\u003ccode\u003e\\ddp\u003c/code\u003e命令，可以获取现有默认权限分配的信息。权限显示的含义与\u003ca href=\"/docs/18/ddl-priv.html\" rel=\"nofollow\"\u003e第 5.8 节\u003c/a\u003e中针对\u003ccode\u003e\\dp\u003c/code\u003e的说明相同。\u003c/p\u003e\u003cp\u003e如果你希望删除一个其默认权限已被修改的角色，则必须先撤销对其默认权限所做的更改，或者使用\u003ccode\u003eDROP OWNED BY\u003c/code\u003e 去除该角色的默认权限条目。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e示例\u003c/h2\u003e\u003cp\u003e为你后续在模式\u003ccode\u003emyschema\u003c/code\u003e中创建的所有表（以及视图）向所有人授予 SELECT 权限，并且也允许角色\u003ccode\u003ewebuser\u003c/code\u003e对它们执行 INSERT：\u003c/p\u003e\u003cpre\u003eALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;\nALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;\n\u003c/pre\u003e\u003cp\u003e撤销上述操作，使后续创建的表不再拥有任何超出正常情况的权限：\u003c/p\u003e\u003cpre\u003eALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC;\nALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;\n\u003c/pre\u003e\u003cp\u003e移除通常会在函数上授予的公共 EXECUTE 权限，使后续由角色\u003ccode\u003eadmin\u003c/code\u003e创建的所有函数不再自动具有该权限：\u003c/p\u003e\u003cpre\u003eALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;\n\u003c/pre\u003e\u003cp\u003e但请注意，你\u003cspan\u003e\u003cem\u003e不能\u003c/em\u003e\u003c/span\u003e用仅限单个模式的命令实现这一效果。下面这条命令不会产生作用，除非它是在撤销与之对应的\u003ccode\u003eGRANT\u003c/code\u003e：\u003c/p\u003e\u003cpre\u003eALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;\n\u003c/pre\u003e\u003cp\u003e这是因为按模式设置的默认权限只能向全局设置增加权限，不能移除由全局设置授予的权限。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e兼容性\u003c/h2\u003e\u003cp\u003e在 SQL 标准中没有\u003ccode\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e语句。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e另见\u003c/h2\u003e\u003cspan\u003e\u003ca href=\"/wiki/sql/grant/?v=18\" title=\"GRANT\" rel=\"nofollow\"\u003e\u003cspan\u003eGRANT\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/revoke/?v=18\" title=\"REVOKE\" rel=\"nofollow\"\u003e\u003cspan\u003eREVOKE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e\u003c/section\u003e","SourceRevision":"1b5ca64c","ContentHash":"537f34f0ed36c407874716b880f1d80c30705aceb0f31eeacdf2d7174df7f723","Payload":{"purpose_zh":"定义默认访问权限","sections":[{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e允许你设置将应用于未来创建对象的权限。（它不会影响已经存在的对象上已分配的权限。）权限既可以全局设置（即，对当前数据库中未来创建的所有对象生效），也可以只针对指定模式中未来创建的对象设置。\u003c/p\u003e\u003cp\u003e虽然你可以修改自己的默认权限，也可以修改你所属角色的默认权限，但在创建对象时，新对象的权限只受当前角色的默认权限影响，不会从当前角色所属的任何角色继承。\u003c/p\u003e\u003cp\u003e如\u003ca href=\"/docs/18/ddl-priv.html\" title=\"5.8. 权限\"\u003e第 5.8 节\u003c/a\u003e中所述，任何对象类型的默认权限通常都会将所有可授予的权限授予对象拥有者，并且也可能向\u003ccode class=\"literal\"\u003ePUBLIC\u003c/code\u003e授予某些权限。不过，这种行为可以通过 \u003ccode class=\"command\"\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e修改全局默认权限来改变。\u003c/p\u003e\u003cp\u003e当前，只有模式、表（包括视图和外部表）、序列、函数、类型（包括域）以及大对象的权限可以修改。对于此命令，函数包括聚合函数和过程。此命令中的\u003ccode class=\"literal\"\u003eFUNCTIONS\u003c/code\u003e和 \u003ccode class=\"literal\"\u003eROUTINES\u003c/code\u003e等价。（今后更推荐使用\u003ccode class=\"literal\"\u003eROUTINES\u003c/code\u003e，因为这是同时指代函数和过程的标准术语。在较早的\u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e版本中，只允许使用\u003ccode class=\"literal\"\u003eFUNCTIONS\u003c/code\u003e。无法分别为函数和过程设置默认权限。）\u003c/p\u003e\u003cp\u003e按模式指定的默认权限会叠加到该对象类型的全局默认权限之上。这意味着，如果某项权限是在全局范围内授予的（无论是默认授予，还是根据此前未指定模式的\u003ccode class=\"command\"\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e命令授予的），就不能按模式将其撤销。按模式执行的\u003ccode class=\"literal\"\u003eREVOKE\u003c/code\u003e 只适用于抵消此前按模式执行的\u003ccode class=\"literal\"\u003eGRANT\u003c/code\u003e所产生的效果。\u003c/p\u003e\u003cdiv class=\"refsect2\"\u003e\u003ch3\u003e参数\u003c/h3\u003e\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003etarget_role\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e修改由\u003cem class=\"replaceable\"\u003e\u003ccode\u003etarget_role\u003c/code\u003e\u003c/em\u003e创建的对象的默认权限；如果省略，则为当前角色。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eschema_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e一个现有模式的名称。如果指定，将修改以后在该模式中创建的对象的默认权限。如果省略\u003ccode class=\"literal\"\u003eIN SCHEMA\u003c/code\u003e，则修改全局默认权限。在为模式和大对象设置权限时，不允许使用\u003ccode class=\"literal\"\u003eIN SCHEMA\u003c/code\u003e，因为模式不能嵌套，而大对象不属于任何模式。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e要为其授予或撤销权限的现有角色的名称。此参数以及 \u003cem class=\"replaceable\"\u003e\u003ccode\u003eabbreviated_grant_or_revoke\u003c/code\u003e\u003c/em\u003e 中的所有其他参数，均按\u003ca href=\"/docs/18/sql-grant.html\" title=\"GRANT\"\u003e\u003cspan class=\"refentrytitle\"\u003eGRANT\u003c/span\u003e\u003c/a\u003e或\u003ca href=\"/docs/18/sql-revoke.html\" title=\"REVOKE\"\u003e\u003cspan class=\"refentrytitle\"\u003eREVOKE\u003c/span\u003e\u003c/a\u003e中的描述工作，只不过这里设置的是整类对象的权限，而不是特定的具名对象。\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e\u003c/div\u003e","key":"description","title":"描述"},{"html":"\u003cp\u003e使用\u003ca href=\"/docs/18/app-psql.html\" title=\"psql\"\u003e\u003cspan class=\"refentrytitle\"\u003e\u003cspan class=\"application\"\u003epsql\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e的\u003ccode class=\"command\"\u003e\\ddp\u003c/code\u003e命令，可以获取现有默认权限分配的信息。权限显示的含义与\u003ca href=\"/docs/18/ddl-priv.html\" title=\"5.8. 权限\"\u003e第 5.8 节\u003c/a\u003e中针对\u003ccode class=\"command\"\u003e\\dp\u003c/code\u003e的说明相同。\u003c/p\u003e\u003cp\u003e如果你希望删除一个其默认权限已被修改的角色，则必须先撤销对其默认权限所做的更改，或者使用\u003ccode class=\"command\"\u003eDROP OWNED BY\u003c/code\u003e 去除该角色的默认权限条目。\u003c/p\u003e","key":"notes","title":"注解"},{"html":"\u003cp\u003e为你后续在模式\u003ccode class=\"literal\"\u003emyschema\u003c/code\u003e中创建的所有表（以及视图）向所有人授予 SELECT 权限，并且也允许角色\u003ccode class=\"literal\"\u003ewebuser\u003c/code\u003e对它们执行 INSERT：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;\nALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;\n\u003c/pre\u003e\u003cp\u003e撤销上述操作，使后续创建的表不再拥有任何超出正常情况的权限：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC;\nALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;\n\u003c/pre\u003e\u003cp\u003e移除通常会在函数上授予的公共 EXECUTE 权限，使后续由角色\u003ccode class=\"literal\"\u003eadmin\u003c/code\u003e创建的所有函数不再自动具有该权限：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;\n\u003c/pre\u003e\u003cp\u003e但请注意，你\u003cspan class=\"emphasis\"\u003e\u003cem\u003e不能\u003c/em\u003e\u003c/span\u003e用仅限单个模式的命令实现这一效果。下面这条命令不会产生作用，除非它是在撤销与之对应的\u003ccode class=\"literal\"\u003eGRANT\u003c/code\u003e：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;\n\u003c/pre\u003e\u003cp\u003e这是因为按模式设置的默认权限只能向全局设置增加权限，不能移除由全局设置授予的权限。\u003c/p\u003e","key":"examples","title":"示例"},{"html":"\u003cp\u003e在 SQL 标准中没有\u003ccode class=\"command\"\u003eALTER DEFAULT PRIVILEGES\u003c/code\u003e语句。\u003c/p\u003e","key":"compatibility","title":"兼容性"},{"html":"\u003cspan class=\"simplelist\"\u003e\u003ca href=\"/wiki/sql/grant/?v=18\" title=\"GRANT\"\u003e\u003cspan class=\"refentrytitle\"\u003eGRANT\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/revoke/?v=18\" title=\"REVOKE\"\u003e\u003cspan class=\"refentrytitle\"\u003eREVOKE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e","key":"see_also","title":"另见"}],"sections_same_as":"","synopsis_html":"ALTER DEFAULT PRIVILEGES\n    [ FOR { ROLE | USER } \u003cem class=\"replaceable\"\u003e\u003ccode\u003etarget_role\u003c/code\u003e\u003c/em\u003e [, ...] ]\n    [ IN SCHEMA \u003cem class=\"replaceable\"\u003e\u003ccode\u003eschema_name\u003c/code\u003e\u003c/em\u003e [, ...] ]\n    \u003cem class=\"replaceable\"\u003e\u003ccode\u003eabbreviated_grant_or_revoke\u003c/code\u003e\u003c/em\u003e\n\n\u003cspan class=\"phrase\"\u003e其中 \u003cem class=\"replaceable\"\u003e\u003ccode\u003eabbreviated_grant_or_revoke\u003c/code\u003e\u003c/em\u003e 是下列之一：\u003c/span\u003e\n\nGRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON TABLES\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | SELECT | UPDATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON SEQUENCES\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { EXECUTE | ALL [ PRIVILEGES ] }\n    ON { FUNCTIONS | ROUTINES }\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { USAGE | ALL [ PRIVILEGES ] }\n    ON TYPES\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | CREATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON SCHEMAS\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { SELECT | UPDATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON LARGE OBJECTS\n    TO { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON TABLES\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { { USAGE | SELECT | UPDATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON SEQUENCES\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { EXECUTE | ALL [ PRIVILEGES ] }\n    ON { FUNCTIONS | ROUTINES }\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { USAGE | ALL [ PRIVILEGES ] }\n    ON TYPES\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { { USAGE | CREATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON SCHEMAS\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n    { { SELECT | UPDATE }\n    [, ...] | ALL [ PRIVILEGES ] }\n    ON LARGE OBJECTS\n    FROM { [ GROUP ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003erole_name\u003c/code\u003e\u003c/em\u003e | PUBLIC } [, ...]\n    [ CASCADE | RESTRICT ]","synopsis_text":"ALTER DEFAULT PRIVILEGES\n[ FOR { ROLE | USER } target_role [, ...] ]\n[ IN SCHEMA schema_name [, ...] ]\nabbreviated_grant_or_revoke\n其中 abbreviated_grant_or_revoke 是下列之一：\n\nGRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n[, ...] | ALL [ PRIVILEGES ] }\nON TABLES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SEQUENCES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { EXECUTE | ALL [ PRIVILEGES ] }\nON { FUNCTIONS | ROUTINES }\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { USAGE | ALL [ PRIVILEGES ] }\nON TYPES\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { USAGE | CREATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SCHEMAS\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nGRANT { { SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON LARGE OBJECTS\nTO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }\n[, ...] | ALL [ PRIVILEGES ] }\nON TABLES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { USAGE | SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SEQUENCES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ EXECUTE | ALL [ PRIVILEGES ] }\nON { FUNCTIONS | ROUTINES }\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ USAGE | ALL [ PRIVILEGES ] }\nON TYPES\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { USAGE | CREATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON SCHEMAS\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]\n\nREVOKE [ GRANT OPTION FOR ]\n{ { SELECT | UPDATE }\n[, ...] | ALL [ PRIVILEGES ] }\nON LARGE OBJECTS\nFROM { [ GROUP ] role_name | PUBLIC } [, ...]\n[ CASCADE | RESTRICT ]"}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
