postgresql 如何以其他用户的身份连接到数据库?

mmvthczy  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(3)|浏览(147)

我目前正在为一个学校项目创建一个API,一切都很好。我的设置是:Node v10,Postgres,Koa等等...
我现在有这个:

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

当init脚本在docker机器中运行时,我得到的输出是这样的:

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”及其所有者,即.sql文件中的“sa”?

uemypmqf

uemypmqf1#

你可以在psql中使用这个命令:

\c db_name usr_name
jdgnovmf

jdgnovmf2#

你可以在终端中通过这个命令来实现

psql -d database -U username
k5hmc34c

k5hmc34c3#

这里我的假设是你有一个名为“a.sql”的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".

现在,需要注意的是,你已经连接到数据库“主”,因为“\c主”与用户“postgres”,因为你通过了“postgres”用户的凭据。是我就在这里然后,如果是的,那么你必须通过用户和密码为不同的用户,即.“sa”如下。

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

现在,它将提示输入“sa”用户的密码,最后,您的脚本将运行,您将连接到“sa”用户。

相关问题