Ayrıcalıklar ne zaman \ l'de listelenir ve ne zaman listelenmez?


11

Erişim ayrıcalıkları \ l tarafından ne zaman listeleniyor ve ne zaman listelenmiyor? \ L tarafından listelenen erişim ayrıcalıkları bir hibe sonrasında iptal edilebilir ve iptal edilebilir:

$ createuser -EP my_readonly
$ psql development
development=# \l
                                           List of databases
            Name             |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------------------------+----------+----------+-------------+-------------+-----------------------
 development                 | vagrant  | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | 
...
development=# grant usage on schema public to my_readonly;
development=# grant connect on database development to my_readonly;
development=# \l
                                             List of databases
            Name             |  Owner   | Encoding |   Collate   |    Ctype    |     Access privileges      
-----------------------------+----------+----------+-------------+-------------+----------------------------
 development                 | vagrant  | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =Tc/vagrant               +
                             |          |          |             |             | vagrant=CTc/vagrant       +
                             |          |          |             |             | my_readonly=c/vagrant
...
development=# revoke connect on database development from my_readonly;
REVOKE
development=# revoke usage on schema public from my_readonly;
REVOKE
development=# \l
                                           List of databases
            Name             |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------------------------+----------+----------+-------------+-------------+-----------------------
 development                 | vagrant  | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =Tc/vagrant          +
                             |          |          |             |             | vagrant=CTc/vagrant

Neden? Hangi devlet değişti? Ben my_readonly kullanıcının bağlantı yeteneği tüm psql oturumu değişmedi inanıyorum (çünkü KAMU rolü bağlantı ayrıcalıkları olduğunu tahmin ediyorum), ama açıkça bir şey değişti: bu şey nedir?

Yan soru: nasıl açıkça postgres sorabilir KAMU aslında olmadığını gelmez bağlantı ayrıcalıkları (bunlar iptal edilmiş olabileceğini - bkz Neden yeni bir kullanıcı herhangi bir tablodan seçebilir? )?

Yanıtlar:


5

Psql'deki ters eğik çizgi komutları, sistem kataloglarına bakan bir sorgu veya sorgular için kısayollardır. \lKomut bilgilere bakar pg_catalog.pg_database, özellikle bu sorgu:

SELECT d.datname as "Name",
   pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
   pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
   d.datcollate as "Collate",
   d.datctype as "Ctype",
   pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;

Sen yapabilir psqlgeçirerek ters bölü komutlar için hangisini kullandığına gösterisi -Ekomut satırında kendisine çağırmak ona zaman sizi bayrağı.

Bir veritabanındaki veya başka bir nesnedeki izinler PostgreSQL'in oluşturduğu varsayılan değerler ise, *aclsütun olacaktır NULL. Varsayılanları değiştirdiğiniz gibi, ACL sütununda çalıştırdığınız GRANTve / veya REVOKEifadelerle ilgili bilgiler bulunur .

İzinleri / EKL'leri özellikle \zveya\dp

Burada daha fazla okursanız:

http://www.postgresql.org/docs/9.4/static/sql-grant.html

Aşağı kaydırırsanız (veya kelimeyi ararsanız psql), \lbir EKL sütununda veya bir EKL sütununda gördüğünüz EKL'lerin nasıl yorumlanacağını gösteren tabloya bakabilirsiniz .

Örneğin:

=Tc/vagrant

ACL satırı , PUBLIC'e uygulanan izinleri belirtirken , belirli bir rol için geçerli olduğu için , PUBLIC'in (tüm rolleri içeren örtük rol) geçici tablolar oluşturma Tve bağlanma izinlerine sahip olduğu anlamına gelir .c=xxxxxrolname=xxxx

Dalibo'nun bu sunumu ayrıca bunu daha da netleştirmeye yardımcı olmalıdır: PostgreSQL'de Hakları Yönetme

Umarım yardımcı olur. =)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.