Как я могу подключиться к базе данных как другой пользователь? - PullRequest
0 голосов
/ 04 мая 2018

Я сейчас создаю API для школьного проекта, и все работает хорошо. Моя установка: Node v10, Postgres, Koa и так далее ...

У меня сейчас есть это:

CREATE ROLE sa WITH LOGIN PASSWORD 'some-password.';
CREATE DATABASE master WITH OWNER sa;
\c master;

Когда сценарий инициализации запускается в докере, я получаю следующий вывод:

CREATE ROLE
CREATE DATABASE
You are now connected to database "master" as user "postgres".

Итак, я изменил файл на что-то вроде этого:

CREATE ROLE sa WITH LOGIN PASSWORD 'some-password.';
CREATE DATABASE master WITH OWNER sa;
CONNECT TO master AS main USER sa;

И я получаю синтаксическую ошибку:

STATEMENT:  CONNECT TO master AS sa USER sa;
psql:/docker-entrypoint-initdb.d/init.sql:4: ERROR:  syntax error at or near "CONNECT"

Я не могу найти где-нибудь в документации (или не очень хорошо выглядел), как подключиться из файла .sql к базе данных с конкретным пользователем.

Как бы я подключился к 'master' с его владельцем, который является 'sa' из файла .sql?

1 Ответ

0 голосов
/ 04 мая 2018

Здесь я предполагаю, что у вас есть файл SQL с именем "a.sql" и содержит строки кода в файле.

CREATE ROLE sa WITH LOGIN PASSWORD 'some-password.';
CREATE DATABASE master WITH OWNER sa;
\c master;

Теперь вы запускаете этот скрипт, используя интерфейс командной строки "psql" (CLI), поэтому вы получите сообщение, как показано ниже ...

CREATE ROLE
CREATE DATABASE
You are now connected to database "master" as user "postgres".

Теперь следует отметить, что вы подключились к базе данных "master" из-за "\ c master" с пользователем "postgres" из-за того, что вы передали учетные данные пользователя "postgres". Если я прав, тогда, если да, тогда вы должны передать имя пользователя и пароль для другого пользователя, то есть "sa", как показано ниже.

psql -h localhost -p 5432 -U sa -f a.sql master

Теперь он запросит пароль пользователя "sa", наконец, ваш скрипт запустится и вы подключитесь к пользователю "sa".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...