Error ошибка сопоставление пользователя для postgres не найдено

Я подключен к схеме apm. Попытка выполнить функцию и получить ошибку ниже: ERROR: user mapping not found for "postgres" Информация о подключении к базе данных говорит: apm on postgres@PostgreSQL 9.6 psql version: PostgreSQL 9.6.3, compiled by Visual C++ build 1800, 64-bit Как можно устранить эту...

Я подключен к схеме apm.

Попытка выполнить функцию и получить ошибку ниже:

ERROR:  user mapping not found for "postgres"

Информация о подключении к базе данных говорит:

apm on postgres@PostgreSQL 9.6

psql version: PostgreSQL 9.6.3, compiled by Visual C++ build 1800, 64-bit

Как можно устранить эту ошибку?

3 ответа

Это означает, что вы пытаетесь использовать стороннюю таблицу, а ваша роль (в данном случае postgres) не имеет определенного пользователя и пароля для удаленного сервера.

Вы можете добавить это, выполнив такой запрос:

 CREATE USER MAPPING
    FOR postgres
 SERVER remote_server_name
OPTIONS (user 'bob', password 'secret');

Вы можете получить имя сервера для такой таблицы:

SELECT srvname
  FROM pg_foreign_table t
  JOIN pg_foreign_server s ON s.oid = t.ftserver
 WHERE ftrelid = 'schemaname.tablename'::regclass


19

Łukasz Kamiński
30 Ноя 2017 в 17:09

Если вы хотите создать сопоставление пользователей для всех пользователей, вы можете сделать это следующим образом

CREATE USER MAPPING
FOR PUBLIC
SERVER remote_server_name
OPTIONS (user 'bob', password 'secret');


5

Logovskii Dmitrii
17 Май 2019 в 13:18

https://www.postgresql.org/docs/current/static/sql-createusermapping.html

CREATE USER MAPPING — определить новое отображение пользователя на сторонний сервер

Ваша функция запрашивает сторонние таблицы, используя некоторый сервер, для которого вам нужно отображение пользователя. Судя по всему, он существует для пользователя-владельца, а не для вас. Или просто запустите функцию с пользователем, которому создано сопоставление пользователей.

Вы можете просмотреть их с помощью:

SELECT um.*,rolname
  FROM pg_user_mapping um
  JOIN pg_roles r ON r.oid = umuser
  JOIN pg_foreign_server fs ON fs.oid = umserver;


4

John Powell
5 Дек 2018 в 11:44

Я подключен к схеме «apm»

Попытка выполнить функцию и получить ниже ошибки:

ERROR: user mapping not found for "postgres"

Информация о подключении к базе данных говорит: apm on postgres @PostgreSQL 9.6

Версия psql: PostgreSQL 9.6.3, скомпилированный Visual C++ build 1800, 64-разрядный

Как можно устранить эту ошибку. Благодарю.

Это означает, что вы пытаетесь использовать внешнюю таблицу, а ваша роль (в данном случае postgres) не определяет пользователя и пароль для удаленного сервера.

Вы можете добавить это, выполнив такой запрос:

 CREATE USER MAPPING
FOR postgres
SERVER remote_server_name
OPTIONS (user 'bob', password 'secret');

Вы можете получить имя сервера для таблицы следующим образом:

SELECT srvname
FROM pg_foreign_table t
JOIN pg_foreign_server s ON s.oid = t.ftserver
WHERE ftrelid = 'schemaname.tablename'::regclass

https://www.postgresql.org/docs/current/static/sql-createusermapping.html

CREATE USER MAPPING — определение нового сопоставления пользователя на чужом сервере

Ваша функция запрашивает внешние таблицы, используя какой-то сервер, для которого требуется сопоставление пользователей. По-видимому, он существует для пользователя, а не для вас. Или просто запустите функцию с пользователем, создающим сопоставление пользователя.

вы можете просмотреть их с помощью:

SELECT um.*,rolname
FROM pg_user_mapping um
JOIN pg_roles r ON r.oid = umuser
JOIN pg_foreign_server fs ON fs.oid = umserver;

Если вы хотите создать сопоставление пользователей для всех пользователей, вы можете сделать это следующим образом

CREATE USER MAPPING
FOR PUBLIC
SERVER remote_server_name
OPTIONS (user 'bob', password 'secret');

Введите минимум 50 символов

В этот FAQ я собираю вопросы, которые мне показались интересными и заслуживающими внимания. Здесь не будет тех же вопросов что в переводе англоязычного FAQ. Вопросы не ограничиваются какой-то конкретной областью применения или настройки PostgreSQL.

Авторские права и условия распространения


По идейным соображениям, вся информация в этом FAQ предоставляется на условиях лицензии Creative Commons CC-BY-SA. Если вы не согласны с условиями этой лицензии — откажитесь от использования данного FAQ, если вы автор одного из ответов и против использования вашего материала под этой лицензией, напишите на admin@postgresql.ru.net и ваш материал будет удалён из данного FAQ.

Присылайте свои вопросы на адрес: admin@postgresql.ru.net

Общие вопросы


Q001: При изменение структуры БД иногда требуется на время отключить FOREIGN KEY. Как это сделать?
Q002: Как скачать самые последние исходные тексты (исходники) PostgreSQL из CVS?
Q003: Почему выдаёт ошибку при создании функции, где в качестве параметра я использую имя таблицы?
Q004: Как мне написать запрос, делающий SELECT на таблицу, имя которой получено в подзапросе?

Проблемы при установке


Q100: Я хочу установить Holdem Manager, но у меня не получается. Почему вы не хотите помочь мне установить PostgreSQL, который входит в его состав?
Q101: Не знаю как поставить PostgreSQL на Windows. Что делать?
Q102: Во время установки PostgreSQL на Windows получаю сообщение об ошибке «Invalid user specified: Logon Failure: Unknown user name or bad password». Что делать?
Q103: Во время установки PostgreSQL на Windows получаю сообщение об ошибке «Invalid User specified: Logon Failure: The user has not been granted the requested logon type at this computer». Что делать?
Q104: Во время установки PostgreSQL на Windows получаю сообщение об ошибке «Failed to create process for initdb: 1385!». Что делать?
Q105: Регистрирую сервис так: pg_ctl register -N postgres_svc -w -D %windir%PostgreSQLdata и вылазит ошибка номер 1057. Что это за ошибка и по какой причине сервис не может быть зарегистрирован?
Q106: Во время установки выдает ошибку: Сервис ‘Secondary Logon’ не запущен. Этот сервис необходим для инициализации кластера базы данных. Пожалуйста, запустите сервис и попобуйте еще раз. Что делать?
Q107: Во время установки, на этапе Loading additional SQL modules выскочило сообщение: «problem runing post instal step/instalation mya not complete corecltly.error reading file c:/postgresql/8.4/data/postgresql.cfg». Что делать?
Q108: Не запускается сервис. Выдаёт: «More help is available by typing NET HELPMSG 3534». Что делать?
Q109: Во время установки выдаёт: «Внутренняя ошибка поиска учётной записи: Сопоставление между именами пользователей и идентификаторами безопасности не было произведено». Что делать?
Q110: Во время установки выдаёт: «Failed to establish a connection to ‘127.0.0.1’». Что делать?
Q111: При старте в логе вот такое сообщение: «MSD FATAL: the database system is starting up». Как исправить эту ошибку?
Q112: Устанавливаю PostgreSQL повторно и у меня спрашивает пароль: «Please provide a password for the database superuser and service account (postgres)…». Не понимаю где его взять?
Q113: Во время установки, на этапе инициализации кластера БД выскочило сообщение: «Problem running post-install step. Installation may not complete correctly. The database cluster initialization failed.» Что делать?

PostgreSQL и 1C


Q201: Будет ли работать PostgreSQL из дистрибутива или скаченный с оригинального сайта PostgreSQL с 1C?


Общие вопросы


Q001: При изменение структуры БД иногда требуется на время отключить FOREIGN KEY. В oracle это делается так

ALTER TABLE TABLE MODIFY CONSTRAINT constraint ENABLE/DISABLE


А как это делается на postgresql?

A001: Сделайте все FOREIGN KEYS, которые хотите отключить на время, DEFERRED (см. man по FOREIGN KEY). Потом в DDL-транзакции в начале просто указывайте SET CONSTRAINTS ALL DEFERRED; и целостность базы будет проверяться только в самом конце при операции COMMIT (Автор совета: Иван Золотухин).

Q002: Как скачать самые последние исходные тексты (исходники) PostgreSQL из CVS?

A002: Создайте какой-либо каталог или перейдите в каталог, в котором у вас есть права на запись. Выполните последовательно:

Подробности смотрите на странице: http://www.postgresql.org/docs/current/static/anoncvs.html

Q003: Почему выдаёт ошибку при создании функции, где в качестве параметра я использую имя таблицы?

A003: Потому что любая функция (хранимая процедура) должна быть скомпилирована до начала её использования. А при компиляции PostgreSQL не знает не только типов полей той таблицы, которую вы планируете использовать в функции, но и даже вообще существует ли она. Поэтому проверка на соответствие типов и на имена полей становится невозможным, вследствие чего вы и получаете ошибку. Таким образом, использование имён таблиц в качестве аргументов в функциях НЕВОЗМОЖНО. Вы должны явно указывать имя таблицы, если хотите использовать её в запросе.

Q004: Как мне написать запрос, делающий SELECT на таблицу, имя которой получено в подзапросе?

A004: Любой запрос перед началом выполнения должен быть скомпилирован. Но в момент компиляции PostgreSQL не знает какое имя таблицы вернёт подзапрос и вернёт ли он вообще какое-либо имя таблицы, а также будет ли существовать такая таблица. Таким образом, проверка на соответствие типов полей и вообще на наличие таких полей в дальнейшем становится нереальным, план запроса построить невозможным и как следствие вы получите ошибку на любые такие попытки. Поэтому, подстановка имени нужной таблицы во время запроса НЕВОЗМОЖНА. Вы должны явно указывать имя таблицы, если хотите использовать её в запросе.


Проблемы при установке


Q100: Я хочу установить Holdem Manager, но у меня не получается. Почему вы не хотите помочь мне установить PostgreSQL, который входит в его состав?

A100: Потому что Holdem Manager — это игра в покер и поставить вы его можете только с двумя целями: развлечение или заработок денег. Если вы зарабатываете на покере — наймите специалиста, который установит и настроит вам всё, что нужно. Если вы развлекаетесь, то мы не хотим тратить свои силы и время, чтобы вы могли развлекаться. И в любом случае, дальнейшая польза сообществу PostgreSQL от вас — нулевая, зачем нам тратить на вас время? Исключения могут быть сделаны лишь для пользователей, имеющих уровень компетенции «администратор Windows», которым не надо объяснять, что означает «посмотреть логи», «вручную удалить службу», «почистить реестр» и т.д., если вопросы этих пользователей касаются чётко PostgreSQL.

Q101: Не знаю как поставить PostgreSQL на Windows. Что делать?

A101: Для начала прочитать статью: Установка PostgreSQL 8.3 на Windows XP или Установка PostgreSQL 9.0.1 на Windows 7. Возможно вам больше ничего и не понадобится.

Q102: Во время установки PostgreSQL на Windows получаю сообщение об ошибке «Invalid user specified: Logon Failure: Unknown user name or bad password». Что делать?

A102: (Автор совета Bruce Modick). Зайдите в Панель Управления Windows, в управление пользователями и сделайте пользователя postgres членом группы Пользователи.

Q103: Во время установки PostgreSQL на Windows получаю сообщение об ошибке «Invalid User specified: Logon Failure: The user has not been granted the requested logon type at this computer». Что делать?

A103: (Автор совета Bruce Modick). Зайдите администратором в настройки Локальных Политик Безопасности и для учётной записи postgres предоставьте права «Access this computer from the network» (Доступ к данному компьютеру из сети).

Q104: Во время установки PostgreSQL на Windows получаю сообщение об ошибке «Failed to create process for initdb: 1385!». Что делать?

A104: (Автор совета Bruce Modick). Зайдите администратором в настройки Локальных Политик Безопасности и для учётной записи postgres предоставьте права «Log on Locally».

Q105: Регистрирую сервис так: pg_ctl register -N postgres_svc -w -D %windir%PostgreSQLdata и вылазит ошибка номер 1057. Что это за ошибка и по какой причине сервис не может быть зарегистрирован?

A105: (Автор ответа msr). Service «service_name» faild with error: «System error. Code 1057. Имя учетной записи задано не верно или не существует, или же неверен указаный пароль».

Q106: Во время установки выдает ошибку: Сервис ‘Secondary Logon’ не запущен. Этот сервис необходим для инициализации кластера базы данных. Пожалуйста, запустите сервис и попобуйте еще раз. Что делать?

A106: Зайдите администратором. Найдите диспетчер служб (Службы или Services). Найдите в списке службу с названием ‘Secondary Logon’ и запустите её, щёлкнул правой кнопкой мыши.

Q107: Во время установки, на этапе Loading additional SQL modules выскочило сообщение: «problem runing post instal step/instalation mya not complete corecltly.error reading file c:/postgresql/8.4/data/postgresql.cfg». Что делать?

A107: Попробуйте проверить права доступа на каталог «c:/postgresql/8.4/data». Возможно, по какой-то причине для этого каталога установлен флаг read-only (только чтение). Если это так, уберите его и запустите установку заново.

Если это не помогает, то предлагается вот такой рецепт от cx@ukr.net:

  1. В службах запускаем «Вторичный вход в систему» и ставим тип запуска — «Автозапуск»
  2. Создаём нового пользователя в системе с названием латинскими буквами и правами администратора — к примеру «Sexy»
  3. Жмём «Выход из системы» и входим с учётной записью «Sexy»
  4. Запускаем инсталлятор PostgreSQL 9.x x64 от имени администратора и наслаждаемся ЧИСТОЙ установкой!!! Wow!!!
  5. Проверяем работоспособность сервера подключением к template1 из psql — «psql -U postgres -W template1» (на запрос ввести пароль, указанный при инсталляции!)
  6. Выходим из учётной записи «Sexy» и заходим в нашу обычную, грохаем учётную запись «Sexy» со всеми файлами.
  7. Пишем премногую благодарность мне на cx@ukr.net за сэкономленых несколько часов (или больше, кому как) времени!

Q108: Не запускается сервис. Выдаёт: «More help is available by typing NET HELPMSG 3534». Что делать?

A108: Попробуйте сделать следующее:

  1. Зайдите администратором. Найдите диспетчер служб (Службы или Services).
  2. В списке служб найдите PostgreSQL и щёлкните правой кнопкой мыши. Из появившегося меню выберите Свойства (Properties)
  3. В диалоговом окне свойств перейдите на вкладку Start Session (Вход в систему). На этой вкладке есть два варианта выбора «С учётной записью» и «С системной учётной записью». Измените вариант выбора на «С системной учётной записью» (галочку «Разрешить взаимодействие с рабочим столом» не ставить), нажмите «Применить» и «Ок». Должно помочь.

Q109: Во время установки выдаёт: «Внутренняя ошибка поиска учётной записи: Сопоставление между именами пользователей и идентификаторами безопасности не было произведено». Что делать?

A109: Такая ошибка может быть вызвана тем, что «Компьютер и Полное имя» должны быть на английском языке (информацию предоставил: shurickan).

Q110:: Во время установки выдаёт: «Failed to establish a connection to ‘127.0.0.1’». Что делать?

A110:

  1. Открываем в Блокноте файл C:Windowssystem32driversetchosts
  2. Удаляем существующий текст, относящийся к 127.0.0.1 и localhost
  3. Пишем строку: «127.0.0.1 localhost» и сохраняем файл
  4. Перезапускаем службу PostgreSQL.

Должно работать!

Q111: При старте в логе вот такое сообщение: «MSD FATAL: the database system is starting up». Как исправить эту ошибку?

A111: На самом деле — это не ошибка. Просто PostgreSQL ругается, что к нему делаются попытки подключиться, хотя он ещё только запускается.

Q112:Устанавливаю PostgreSQL повторно и у меня спрашивает пароль: «Please provide a password for the database superuser and service account (postgres)…». Не понимаю где его взять?

A112: По идее взять нужно из своей же головы — вспомнить, что вводили ранее. Если на голову надежды мало, то попробуйте так: Пуск -> Все программы -> Стандартные -> Выполнить. Далее введите:

net user postgres postgres

после чего пароль пользователя postgres будет таким же как и имя пользователя, т.е. тоже postgres. (за рецепт спасибо surmaless)

Q113:: Во время установки, на этапе инициализации кластера БД выскочило сообщение: «Problem running post-install step. Installation may not complete correctly. The database cluster initialization failed.» Что делать?

A113: Причин может быть великое множество. Например, установка старой версии PostgreSQL, в которой не учтены сервис паки Windows. Или установка PostgreSQL на машину в домене, где собственные политики безопасности мешают нормальной установке PostgreSQL. Или по какой-то причине работу инсталлятора заблокировал антивирус.

Рекомендации следующие: найдите лог инсталлятора, который обычно находится в WINDOWSTEMP (возможно также для старых версий в самом каталоге установки PostgreSQL) и прочитайте сообщения, которые там написаны. Возможно это поможет понять в чём собственно проблема.

Также советую не забывать совет в вопросе Q107, касающийся установки PostgreSQL с пользователем-администратором, а не пользователем postgres


PostgreSQL и 1C


Q201: Будет ли работать PostgreSQL из дистрибутива или скаченный с оригинального сайта PostgreSQL с 1C?

A201: Нет, не будет. Для своей работы 1C использует специальный тип данных, но есть и другие отличия. Смотрите сюда: http://v8.1c.ru/overview/postgres_patches_notes.htm. Также посетите ещё и эту страницу: http://wiki.etersoft.ru/PostgreSQL.

Понравилась статья? Поделить с друзьями:
  • Error ошибка приложения list index out of bounds 0
  • Error вместо скина css v34
  • Error брайан аут
  • Error блоки victoria
  • Error zero length delimited identifier at or near