1

У меня есть Postgresql 9.2 с базой данных и теперь попробуйте создать пользователя только для чтения. Я последовал за эти описания:postgres read only user not working

ERROR: permission denied for relation tablename on Postgres while trying a SELECT as a readonly user

How do you create a read-only user in PostgreSQL?

BasicallyI сделали следующее:

jbossmanager=# CREATE USER jbcust WITH ENCRYPTED PASSWORD '#######'; 
CREATE ROLE 
jbossmanager=# GRANT USAGE ON SCHEMA jbossmanager to jbcust; 
GRANT 
jbossmanager=# ALTER DEFAULT PRIVILEGES IN SCHEMA jbossmanager GRANT SELECT ON TABLES TO jbcust; 
ALTER DEFAULT PRIVILEGES 
jbossmanager=# GRANT CONNECT ON DATABASE jbossmanager to jbcust; 
GRANT 
jbossmanager=# GRANT SELECT ON ALL SEQUENCES IN SCHEMA jbossmanager TO jbcust; 
GRANT 
jbossmanager=# GRANT SELECT ON ALL TABLES IN SCHEMA jbossmanager TO jbcust; 
GRANT 

После это "\ л" показывает следующее:

jbossmanager=# \l 
            List of databases 
Name  | Owner  | Encoding | Collate | Ctype |  Access privileges 
--------------+--------------+----------+-------------+-------------+------------------------------- 
jbossmanager | jbossmanager | UTF8  | en_US.UTF-8 | en_US.UTF-8 | =Tc/jbossmanager    + 
      |    |   |    |    | jbossmanager=CTc/jbossmanager+ 
      |    |   |    |    | jbcust=c/jbossmanager 

который выглядит хорошо для меня, также список o е таблицы в этой БД/схеме lokks штраф:

jbossmanager=# \dp+ 
                Access privileges 
    Schema |    Name    | Type |   Access privileges   | Column access privileges 
--------------+-------------------------------+----------+-----------------------------------+-------------------------- 
jbossmanager | env_server_standalone_info | table | jbossmanager=arwdDxt/jbossmanager+| 
       |        |   | jbcust=r/jbossmanager    | 

Но теперь, когда я подключаю как это jbcust пользователя к базе данных и попробовать:

#psql -d jbossmanager -U jbcust -h 127.0.0.1 
Password for user jbcust: 
psql (9.2.4) 
Type "help" for help. 

jbossmanager=> \dp+ 
          Access privileges 
Schema | Name | Type | Access privileges | Column access privileges 
--------+------+------+-------------------+-------------------------- 
(0 rows) 

Я понятия не имею, что это неправильно или что отсутствует.

Большое спасибо за помощь!

+0

Используя те же настройки соединения, я не смог воспроизвести ошибку. Вы подключаетесь к 'psql' таким же образом в первом примере? –

+0

Вы на 100% уверены, что подключаетесь к той же БД на том же хосте? –

+0

В первом примере я подключил как: # PSQL -d jbossmanager -U jbossmanager -h 127.0.0.1 во втором случае, как это: # PSQL -d jbossmanager -U jbcust -h 127.0.0.1 Да, Я уверен, что это тот же db на том же хосте. – Sebi

ответ

0

Причина, по которой я не видел никакой схемы при соединении с пользователем только для чтения, заключается в том, что схема по умолчанию для этого пользователя не была установлена.

После этого:

ALTER USER jbcust SET search_path = jbossmanager; 

он отлично работает.

+0

Мое решение оказалось немного отличным от твоего, но я все же хотел упомянуть, что нашел этот вопрос полезным. У меня были настройки только для пользователей из нескольких справочников в Интернете, но не было 'GRANT USAGE ON SCHEMA jbossmanager to jbcust;' после этого GRANT мой пользователь только для чтения работал отлично. Спасибо! –