使用密码连接到 PostgreSQL

Shihab Sikder 2023年1月30日 2022年5月14日
  1. 使用命令行界面 (CLI) 通过密码连接到 PostgreSQL
  2. pgpass.conf 文件中定义密码以登录 PostgreSQL
  3. 使用带密码的连接字符串连接到 PostgreSQL
使用密码连接到 PostgreSQL

本文展示了使用密码连接 PostgreSQL 的各种方法。它可以通过命令行、pgpass 文件、PGPASSWORD 环境变量或连接字符串。

使用命令行界面 (CLI) 通过密码连接到 PostgreSQL

如果你的机器上安装了 PostgreSQL,你可以尝试不同的方法来连接数据库。一种简单的方法是在命令行中输入 psql,它会询问你 admin 用户的密码。

如果你在命令中只输入 psql 而没有提及用户名,系统将询问你 PostgreSQL 的管理员用户密码,如下所示。

C:\Users\Admin>psql
Password for user Admin:

如果你想使用其他帐户登录,则需要使用标志 -U,然后提供用户名,如下所示。

C:\Users\Admin>psql -U postgres
Password for user postgres:
psql (14.2)
WARNING: Console code page (437) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

postgres=#

在这里,CLI 要求输入用户 postgres 的密码。登录需要两个步骤。

首先,在 psql 命令中定义用户名,然后当 CLI 询问时,你输入密码。但是我们可以使用一行命令直接连接到 PostgreSQL。

为此,我们需要设置环境变量 PGPASSWORD

在 Windows 中:

C:\Users\Admin>set PGPASSWORD=root

在 Linux 中:

export PGPASSWORD=root

如果我们想连接到 psql,它将从 PGPASSWORD 获取密码,该密码现在在环境中可用。

C:\Users\Admin>psql -U postgres
psql (14.2)
WARNING: Console code page (437) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

你看,现在它不需要输入密码来连接 psql。从此处了解有关 PostgreSQL 环境变量的更多信息。

pgpass.conf 文件中定义密码以登录 PostgreSQL

在 PostgreSQL 的 APPDATA 文件夹中,有一个名为 pgpass.conf 的文件。你可以在那里定义你的密码。

此外,你可以使用连接参数 passfile 定义你的密码文件。文件格式如下。

hostname:port:database:username:password

这个结构在 PostgreSQL 官方页面这里上提到过。

它知道用户有效的数据库以及该特定用户的密码。

使用带密码的连接字符串连接到 PostgreSQL

当你获得不在 localhost 中的在线数据库或远程数据库时,你需要通过连接字符串进行连接。连接字符串包含一段用户名、密码、数据库名称、端口和主机地址。

连接字符串的格式如下。

postgresql://<username>:<password>@<host><port>/<database_name>?sslmode=require

如果你使用 localhost,你不需要对远程数据库使用 sslmode。在 Python、C++ 或 Java 项目中使用 PostgreSQL 数据库时,此方法最有用。

因此,使用连接字符串连接数据库(本地)的命令如下。

C:\Users\Admin>psql postgresql://postgres:root@localhost:5432/postgres
psql (14.2)
WARNING: Console code page (437) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

postgres=#

这里是可用于客户端身份验证的方法列表。它来自 PostgreSQL 官方文档。

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website