Денис -> [email protected] @ Thu, 3 Sep 2009 17:47:27 +0800:
Д> Не могу понять сабж. Д> Есть у меня пользователь системный dhcs-control. у него нет своей Д> домашней директории. Д> Однажды я зашел под пользователем postgres (полное его имя значится Д> "PostgreSQL administrator"), и дал команду создать пользователя Д> dhcs-control безо всяких привелегий. Д> Потом я пытался воспользоваться им: Д> deni...@laptop:~/dhcs$ psql -U dhcs-control dhcs Д> psql: FATAL: Ident authentication failed for user "dhcs-control" Д> Зато: Д> deni...@laptop:~/dhcs$ su Д> Пароль: Д> r...@laptop:/home/denizzz/dhcs# su -p dhcs-control Д> dhcs-cont...@laptop:/home/denizzz/dhcs$ psql dhcs Д> Welcome to psql 8.3.7, the PostgreSQL interactive terminal. Д> Вопрос: почему из системного пользователя меня пускает в базу а если Д> указать пользователя в комстроке то нет? почему вообще sql-сервер знает Д> о пользователях системы? разве у него не свои пользователи унутре, Д> разве он не общается с миром через сокет? Что будет если сервер Д> удалённый и доступен по tcp/ip? У сервера есть несколько разных способов аутентификации. Они там где-то в конфиге написаны. У тебя включен способ ident, он им попытался воспользоваться, и по вполне понятной причине (юзер не тот) обломался. А когда ты зашел из-под самого этого юзера, способ сработал, потому что юзер уже был тот. Собственно, данный конкретный способ обычно разрешается только для локальной системы, и состоит в том, что о пришедшем запрашивается сервис ident. (Или, подозреваю, в случае похода по UNIX socket'у, а не по TCP, тем же словом называется штатная проверка credentials, которую предоставляет оный UNIX socket.) Удобно, если у тебя системные пользователи называются в базе так же - пароль вводить не надо. А если сервер удаленный, то, вероятно, на этот способ аутентификации он не согласится, и надо будет использовать какой-то другой. -- hands-free BSD -- (С)энта -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

