У меня есть PostgreSQL (9.3.5) кластер со следующими ролями: (. Первые две записи были созданы динамически, когда новые пользователи были добавлены в приложение)PostgreSQL 9.3.5 цифровое название роли
dochazka-test=> \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+------------
1 | | {admin}
2 | | {passerby}
active | Cannot login | {everyone}
admin | Cannot login | {everyone}
dochazka | | {admin}
everyone | Cannot login | {}
inactive | Cannot login | {everyone}
passerby | Cannot login | {everyone}
postgres | Superuser, Create role, Create DB, Replication | {}
Как вы можете видеть, обе роли «дочазка» и «1» находятся в роли «admin», которая находится в роли «каждого». Для всех ролей установлено значение INHERIT.
Роль «всех» имеет все привилегии для всех таблиц, функций и последовательностей в схеме «public».
Как и ожидалось, я могу запускать SELECT на таблицах в базе данных, когда я подключаюсь как пользователь «дочазка». Тем не менее, я не могу запустить те же ВЫБИРАЕТ при подключении к той же базе данных, как пользователь «1»:
$ psql -U 1 dochazka-test
Password for user 1:
psql (9.3.5)
Type "help" for help.
dochazka-test=> select * from employees;
ERROR: permission denied for relation employees
Может быть, что PostgreSQL имеет фундаментальную проблему с числовыми именами ролей?
держать пресса - я вижу, что роль «дочазки» получает то же разрешение, что и ошибка! извините, может быть, это красная селедка. – smithfarm
Также включайте результат 'select current_user;' - вы можете войти в систему как гость. –