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

时间:2018-05-04 17:57:56

标签: postgresql

我目前正在为学校项目创建一个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"

我无法在docs中找到任何地方(或者看起来非常好)如何从.sql文件连接到具有特定用户的数据库。

我如何连接到' master'与它的主人,这是' sa'来自.sql文件?

2 个答案:

答案 0 :(得分:2)

您可以通过psql中的以下命令执行此操作:

\c db_name usr_name

答案 1 :(得分:1)

我的假设是你有一个名为" 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".

现在,需要注意的是你已连接到数据库" master"因为" \ c master"与用户" postgres"因为你通过了" postgres"用户。我是不是就在这里,如果是,那么你必须为不同的用户传递用户和密码,即" sa"如下。

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

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