У меня есть существующая и работающая установка postgres в производственной системе. Мне нужно создать новые таблицы. Я создал таблицы и попытался получить доступ к таблицам с пользователем, который используется PHP.
my_user_1701usr@pg01cid1701db01 ERROR: permission denied for relation lstats_2019
Ok. В этом есть смысл. Я не определил никаких прав по умолчанию, поэтому, возможно, мне придется предоставить права пользователю:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to my_user_1701usr;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public to my_user_1701usr;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to my_user_1701usr;
Итак, давайте попробуем еще раз:
my_user_1701usr@pg01cid1701db01 ERROR: permission denied for relation lstats_2019
Mhhh. До сих пор не работает. Но почему? Пользователь 'theusername' является владельцем базы данных. Кроме того, я предоставил этому пользователю все возможное. Я даже пытался указать таблицы:
grant all on tablename to my_user_1701usr;
Но он все еще не работал, даже если я установил владельца таблиц для существующего пользователя. Вот я и подумала: может, пользователь как-то испортился и создал нового пользователя:
create user my_user_new with password 'test';
Теперь я получаю сообщение об ошибке:
password authentication failed for user "my_user_new"
Я пробовал разные решения:
alter role my_user_new password 'md5herethehash'; -- md5 is configured in pg_hba.conf
alter role my_user_new encrypted password 'md5herethehash';
Но все же я получил ту же ошибку:
password authentication failed for user "my_user_new"
Теперь у меня нет дальнейшей идеи. Старый пользователь может подключиться, но я не могу получить доступ к новым таблицам, хотя пользователь является владельцем базы данных и таблиц, и ему были предоставлены все возможные права. Вновь созданный пользователь не может подключиться к базе данных с помощью любого метода, который мне удалось найти в Google.
Я также сам проверил логи postgres. Но они содержат только ту же информацию, что и журналы процесса PHP. Понятия не имею, как поступить. У тебя есть идеи?
Спасибо, прямо сейчас!
С наилучшими пожеланиями
mschop
Редактировать 1:
По запросу: Postgres-версия: 90514
Редактировать 2:
Вывод "\ dn + public":
Name | Owner | Access privileges | Description
--------+-----------------+------------------------------------+------------------------
public | my_user_1701usr | my_user_1701usr=UC/my_user_1701usr+| standard public schema
| | =UC/my_user_1701usr |
Вывод "\ dp public.lstats_2019":
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+-------------+-------+-----------------------------------------+-------------------+----------
public | lstats_2019 | table | my_user_1701usr=arwdDxt/my_user_1701usr | |
(1 row)
1046 * * Обновление:
Я только что удалил таблицы и воссоздал их под пользователем my_user_1701usr, а не как postgres. Кажется, сейчас работает. Но я не понимаю почему. Поэтому я оставляю этот вопрос открытым.