~ubuntu-branches/ubuntu/precise/postgresql-9.1/precise-security

« back to all changes in this revision

Viewing changes to doc/src/sgml/html/sql-alterdefaultprivileges.html

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2011-05-11 10:41:53 UTC
  • Revision ID: james.westby@ubuntu.com-20110511104153-psbh2o58553fv1m0
Tags: upstream-9.1~beta1
ImportĀ upstreamĀ versionĀ 9.1~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
2
<HTML
 
3
><HEAD
 
4
><TITLE
 
5
>ALTER DEFAULT PRIVILEGES</TITLE
 
6
><META
 
7
NAME="GENERATOR"
 
8
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 
9
REV="MADE"
 
10
HREF="mailto:pgsql-docs@postgresql.org"><LINK
 
11
REL="HOME"
 
12
TITLE="PostgreSQL 9.1beta1 Documentation"
 
13
HREF="index.html"><LINK
 
14
REL="UP"
 
15
TITLE="SQL Commands"
 
16
HREF="sql-commands.html"><LINK
 
17
REL="PREVIOUS"
 
18
TITLE="ALTER DATABASE"
 
19
HREF="sql-alterdatabase.html"><LINK
 
20
REL="NEXT"
 
21
TITLE="ALTER DOMAIN"
 
22
HREF="sql-alterdomain.html"><LINK
 
23
REL="STYLESHEET"
 
24
TYPE="text/css"
 
25
HREF="stylesheet.css"><META
 
26
HTTP-EQUIV="Content-Type"
 
27
CONTENT="text/html; charset=ISO-8859-1"><META
 
28
NAME="creation"
 
29
CONTENT="2011-04-27T21:20:33"></HEAD
 
30
><BODY
 
31
CLASS="REFENTRY"
 
32
><DIV
 
33
CLASS="NAVHEADER"
 
34
><TABLE
 
35
SUMMARY="Header navigation table"
 
36
WIDTH="100%"
 
37
BORDER="0"
 
38
CELLPADDING="0"
 
39
CELLSPACING="0"
 
40
><TR
 
41
><TH
 
42
COLSPAN="5"
 
43
ALIGN="center"
 
44
VALIGN="bottom"
 
45
><A
 
46
HREF="index.html"
 
47
>PostgreSQL 9.1beta1 Documentation</A
 
48
></TH
 
49
></TR
 
50
><TR
 
51
><TD
 
52
WIDTH="10%"
 
53
ALIGN="left"
 
54
VALIGN="top"
 
55
><A
 
56
TITLE="ALTER DATABASE"
 
57
HREF="sql-alterdatabase.html"
 
58
ACCESSKEY="P"
 
59
>Prev</A
 
60
></TD
 
61
><TD
 
62
WIDTH="10%"
 
63
ALIGN="left"
 
64
VALIGN="top"
 
65
><A
 
66
TITLE="ALTER DATABASE"
 
67
HREF="sql-alterdatabase.html"
 
68
>Fast Backward</A
 
69
></TD
 
70
><TD
 
71
WIDTH="60%"
 
72
ALIGN="center"
 
73
VALIGN="bottom"
 
74
></TD
 
75
><TD
 
76
WIDTH="10%"
 
77
ALIGN="right"
 
78
VALIGN="top"
 
79
><A
 
80
TITLE="ALTER DOMAIN"
 
81
HREF="sql-alterdomain.html"
 
82
>Fast Forward</A
 
83
></TD
 
84
><TD
 
85
WIDTH="10%"
 
86
ALIGN="right"
 
87
VALIGN="top"
 
88
><A
 
89
TITLE="ALTER DOMAIN"
 
90
HREF="sql-alterdomain.html"
 
91
ACCESSKEY="N"
 
92
>Next</A
 
93
></TD
 
94
></TR
 
95
></TABLE
 
96
><HR
 
97
ALIGN="LEFT"
 
98
WIDTH="100%"></DIV
 
99
><H1
 
100
><A
 
101
NAME="SQL-ALTERDEFAULTPRIVILEGES"
 
102
></A
 
103
>ALTER DEFAULT PRIVILEGES</H1
 
104
><DIV
 
105
CLASS="REFNAMEDIV"
 
106
><A
 
107
NAME="AEN59679"
 
108
></A
 
109
><H2
 
110
>Name</H2
 
111
>ALTER DEFAULT PRIVILEGES&nbsp;--&nbsp;define default access privileges</DIV
 
112
><DIV
 
113
CLASS="REFSYNOPSISDIV"
 
114
><A
 
115
NAME="AEN59684"
 
116
></A
 
117
><H2
 
118
>Synopsis</H2
 
119
><PRE
 
120
CLASS="SYNOPSIS"
 
121
>ALTER DEFAULT PRIVILEGES
 
122
    [ FOR { ROLE | USER } <TT
 
123
CLASS="REPLACEABLE"
 
124
><I
 
125
>target_role</I
 
126
></TT
 
127
> [, ...] ]
 
128
    [ IN SCHEMA <TT
 
129
CLASS="REPLACEABLE"
 
130
><I
 
131
>schema_name</I
 
132
></TT
 
133
> [, ...] ]
 
134
    <TT
 
135
CLASS="REPLACEABLE"
 
136
><I
 
137
>abbreviated_grant_or_revoke</I
 
138
></TT
 
139
>
 
140
 
 
141
<SPAN
 
142
CLASS="phrase"
 
143
><SPAN
 
144
CLASS="PHRASE"
 
145
>where <TT
 
146
CLASS="REPLACEABLE"
 
147
><I
 
148
>abbreviated_grant_or_revoke</I
 
149
></TT
 
150
> is one of:</SPAN
 
151
></SPAN
 
152
>
 
153
 
 
154
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
 
155
    [, ...] | ALL [ PRIVILEGES ] }
 
156
    ON TABLES
 
157
    TO { [ GROUP ] <TT
 
158
CLASS="REPLACEABLE"
 
159
><I
 
160
>role_name</I
 
161
></TT
 
162
> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
163
 
 
164
GRANT { { USAGE | SELECT | UPDATE }
 
165
    [, ...] | ALL [ PRIVILEGES ] }
 
166
    ON SEQUENCES
 
167
    TO { [ GROUP ] <TT
 
168
CLASS="REPLACEABLE"
 
169
><I
 
170
>role_name</I
 
171
></TT
 
172
> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
173
 
 
174
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
 
175
    ON FUNCTIONS
 
176
    TO { [ GROUP ] <TT
 
177
CLASS="REPLACEABLE"
 
178
><I
 
179
>role_name</I
 
180
></TT
 
181
> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
182
 
 
183
REVOKE [ GRANT OPTION FOR ]
 
184
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
 
185
    [, ...] | ALL [ PRIVILEGES ] }
 
186
    ON TABLES
 
187
    FROM { [ GROUP ] <TT
 
188
CLASS="REPLACEABLE"
 
189
><I
 
190
>role_name</I
 
191
></TT
 
192
> | PUBLIC } [, ...]
 
193
    [ CASCADE | RESTRICT ]
 
194
 
 
195
REVOKE [ GRANT OPTION FOR ]
 
196
    { { USAGE | SELECT | UPDATE }
 
197
    [, ...] | ALL [ PRIVILEGES ] }
 
198
    ON SEQUENCES
 
199
    FROM { [ GROUP ] <TT
 
200
CLASS="REPLACEABLE"
 
201
><I
 
202
>role_name</I
 
203
></TT
 
204
> | PUBLIC } [, ...]
 
205
    [ CASCADE | RESTRICT ]
 
206
 
 
207
REVOKE [ GRANT OPTION FOR ]
 
208
    { EXECUTE | ALL [ PRIVILEGES ] }
 
209
    ON FUNCTIONS
 
210
    FROM { [ GROUP ] <TT
 
211
CLASS="REPLACEABLE"
 
212
><I
 
213
>role_name</I
 
214
></TT
 
215
> | PUBLIC } [, ...]
 
216
    [ CASCADE | RESTRICT ]</PRE
 
217
></DIV
 
218
><DIV
 
219
CLASS="REFSECT1"
 
220
><A
 
221
NAME="SQL-ALTERDEFAULTPRIVILEGES-DESCRIPTION"
 
222
></A
 
223
><H2
 
224
>Description</H2
 
225
><P
 
226
>   <TT
 
227
CLASS="COMMAND"
 
228
>ALTER DEFAULT PRIVILEGES</TT
 
229
> allows you to set the privileges
 
230
   that will be applied to objects created in the future.  (It does not
 
231
   affect privileges assigned to already-existing objects.)  Currently,
 
232
   only the privileges for tables (including views and foreign tables),
 
233
   sequences, and functions can be altered.
 
234
  </P
 
235
><P
 
236
>   You can change default privileges only for objects that will be created by
 
237
   yourself or by roles that you are a member of.  The privileges can be set
 
238
   globally (i.e., for all objects created in the current database),
 
239
   or just for objects created in specified schemas.  Default privileges
 
240
   that are specified per-schema are added to whatever the global default
 
241
   privileges are for the particular object type.
 
242
  </P
 
243
><P
 
244
>   As explained under <A
 
245
HREF="sql-grant.html"
 
246
>GRANT</A
 
247
>,
 
248
   the default privileges for any object type normally grant all grantable
 
249
   permissions to the object owner, and may grant some privileges to
 
250
   <TT
 
251
CLASS="LITERAL"
 
252
>PUBLIC</TT
 
253
> as well.  However, this behavior can be changed by
 
254
   altering the global default privileges with
 
255
   <TT
 
256
CLASS="COMMAND"
 
257
>ALTER DEFAULT PRIVILEGES</TT
 
258
>.
 
259
  </P
 
260
><DIV
 
261
CLASS="REFSECT2"
 
262
><A
 
263
NAME="AEN59706"
 
264
></A
 
265
><H3
 
266
>Parameters</H3
 
267
><P
 
268
></P
 
269
><DIV
 
270
CLASS="VARIABLELIST"
 
271
><DL
 
272
><DT
 
273
><TT
 
274
CLASS="REPLACEABLE"
 
275
><I
 
276
>target_role</I
 
277
></TT
 
278
></DT
 
279
><DD
 
280
><P
 
281
>      The name of an existing role of which the current role is a member.
 
282
      If <TT
 
283
CLASS="LITERAL"
 
284
>FOR ROLE</TT
 
285
> is omitted, the current role is assumed.
 
286
     </P
 
287
></DD
 
288
><DT
 
289
><TT
 
290
CLASS="REPLACEABLE"
 
291
><I
 
292
>schema_name</I
 
293
></TT
 
294
></DT
 
295
><DD
 
296
><P
 
297
>      The name of an existing schema.  Each <TT
 
298
CLASS="REPLACEABLE"
 
299
><I
 
300
>target_role</I
 
301
></TT
 
302
>
 
303
      must have <TT
 
304
CLASS="LITERAL"
 
305
>CREATE</TT
 
306
> privileges for each specified schema.
 
307
      If <TT
 
308
CLASS="LITERAL"
 
309
>IN SCHEMA</TT
 
310
> is omitted, the global default privileges
 
311
      are altered.
 
312
     </P
 
313
></DD
 
314
><DT
 
315
><TT
 
316
CLASS="REPLACEABLE"
 
317
><I
 
318
>role_name</I
 
319
></TT
 
320
></DT
 
321
><DD
 
322
><P
 
323
>      The name of an existing role to grant or revoke privileges for.
 
324
      This parameter, and all the other parameters in
 
325
      <TT
 
326
CLASS="REPLACEABLE"
 
327
><I
 
328
>abbreviated_grant_or_revoke</I
 
329
></TT
 
330
>,
 
331
      act as described under
 
332
      <A
 
333
HREF="sql-grant.html"
 
334
>GRANT</A
 
335
> or
 
336
      <A
 
337
HREF="sql-revoke.html"
 
338
>REVOKE</A
 
339
>,
 
340
      except that one is setting permissions for a whole class of objects
 
341
      rather than specific named objects.
 
342
     </P
 
343
></DD
 
344
></DL
 
345
></DIV
 
346
></DIV
 
347
></DIV
 
348
><DIV
 
349
CLASS="REFSECT1"
 
350
><A
 
351
NAME="SQL-ALTERDEFAULTPRIVILEGES-NOTES"
 
352
></A
 
353
><H2
 
354
>Notes</H2
 
355
><P
 
356
>   Use <A
 
357
HREF="app-psql.html"
 
358
><SPAN
 
359
CLASS="APPLICATION"
 
360
>psql</SPAN
 
361
></A
 
362
>'s <TT
 
363
CLASS="COMMAND"
 
364
>\ddp</TT
 
365
> command
 
366
   to obtain information about existing assignments of default privileges.
 
367
   The meaning of the privilege values is the same as explained for
 
368
   <TT
 
369
CLASS="COMMAND"
 
370
>\dp</TT
 
371
> under
 
372
   <A
 
373
HREF="sql-grant.html"
 
374
>GRANT</A
 
375
>.
 
376
  </P
 
377
><P
 
378
>   If you wish to drop a role for which the default privileges have been
 
379
   altered, it is necessary to reverse the changes in its default privileges
 
380
   or use <TT
 
381
CLASS="COMMAND"
 
382
>DROP OWNED BY</TT
 
383
> to get rid of the default privileges entry
 
384
   for the role.
 
385
  </P
 
386
></DIV
 
387
><DIV
 
388
CLASS="REFSECT1"
 
389
><A
 
390
NAME="SQL-ALTERDEFAULTPRIVILEGES-EXAMPLES"
 
391
></A
 
392
><H2
 
393
>Examples</H2
 
394
><P
 
395
>   Grant SELECT privilege to everyone for all tables (and views) you
 
396
   subsequently create in schema <TT
 
397
CLASS="LITERAL"
 
398
>myschema</TT
 
399
>, and allow
 
400
   role <TT
 
401
CLASS="LITERAL"
 
402
>webuser</TT
 
403
> to INSERT into them too:
 
404
 
 
405
</P><PRE
 
406
CLASS="PROGRAMLISTING"
 
407
>ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;
 
408
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;</PRE
 
409
><P>
 
410
  </P
 
411
><P
 
412
>   Undo the above, so that subsequently-created tables won't have any
 
413
   more permissions than normal:
 
414
 
 
415
</P><PRE
 
416
CLASS="PROGRAMLISTING"
 
417
>ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC;
 
418
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;</PRE
 
419
><P>
 
420
  </P
 
421
><P
 
422
>   Remove the public EXECUTE permission that is normally granted on functions,
 
423
   for all functions subsequently created by role <TT
 
424
CLASS="LITERAL"
 
425
>admin</TT
 
426
>:
 
427
 
 
428
</P><PRE
 
429
CLASS="PROGRAMLISTING"
 
430
>ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;</PRE
 
431
><P>
 
432
  </P
 
433
></DIV
 
434
><DIV
 
435
CLASS="REFSECT1"
 
436
><A
 
437
NAME="AEN59751"
 
438
></A
 
439
><H2
 
440
>Compatibility</H2
 
441
><P
 
442
>   There is no <TT
 
443
CLASS="COMMAND"
 
444
>ALTER DEFAULT PRIVILEGES</TT
 
445
> statement in the SQL
 
446
   standard.
 
447
  </P
 
448
></DIV
 
449
><DIV
 
450
CLASS="REFSECT1"
 
451
><A
 
452
NAME="AEN59755"
 
453
></A
 
454
><H2
 
455
>See Also</H2
 
456
><A
 
457
HREF="sql-grant.html"
 
458
>GRANT</A
 
459
>, <A
 
460
HREF="sql-revoke.html"
 
461
>REVOKE</A
 
462
></DIV
 
463
><DIV
 
464
CLASS="NAVFOOTER"
 
465
><HR
 
466
ALIGN="LEFT"
 
467
WIDTH="100%"><TABLE
 
468
SUMMARY="Footer navigation table"
 
469
WIDTH="100%"
 
470
BORDER="0"
 
471
CELLPADDING="0"
 
472
CELLSPACING="0"
 
473
><TR
 
474
><TD
 
475
WIDTH="33%"
 
476
ALIGN="left"
 
477
VALIGN="top"
 
478
><A
 
479
HREF="sql-alterdatabase.html"
 
480
ACCESSKEY="P"
 
481
>Prev</A
 
482
></TD
 
483
><TD
 
484
WIDTH="34%"
 
485
ALIGN="center"
 
486
VALIGN="top"
 
487
><A
 
488
HREF="index.html"
 
489
ACCESSKEY="H"
 
490
>Home</A
 
491
></TD
 
492
><TD
 
493
WIDTH="33%"
 
494
ALIGN="right"
 
495
VALIGN="top"
 
496
><A
 
497
HREF="sql-alterdomain.html"
 
498
ACCESSKEY="N"
 
499
>Next</A
 
500
></TD
 
501
></TR
 
502
><TR
 
503
><TD
 
504
WIDTH="33%"
 
505
ALIGN="left"
 
506
VALIGN="top"
 
507
>ALTER DATABASE</TD
 
508
><TD
 
509
WIDTH="34%"
 
510
ALIGN="center"
 
511
VALIGN="top"
 
512
><A
 
513
HREF="sql-commands.html"
 
514
ACCESSKEY="U"
 
515
>Up</A
 
516
></TD
 
517
><TD
 
518
WIDTH="33%"
 
519
ALIGN="right"
 
520
VALIGN="top"
 
521
>ALTER DOMAIN</TD
 
522
></TR
 
523
></TABLE
 
524
></DIV
 
525
></BODY
 
526
></HTML
 
527
>
 
 
b'\\ No newline at end of file'