如何在 PostgreSQL 中创建数据库并始终连接到该数据库而无需超级用户访问权限

在本指南中,我们将介绍以非超级用户身份在 PostgreSQL 中**创建数据库**的步骤,分配必要的权限,并确保您始终可以连接到新创建的数据库,而无需以超级用户身份登录。

这对于想要在 PostgreSQL 中管理自己的数据库而不需要每个操作的管理权限的开发人员或用户非常有用。

我们将实现的目标:

1.**创建一个新的数据库**(`tortoise-demo`)。

2. 向非超级用户角色(`testuser`)授予创建和访问数据库的权限。

3.**无缝切换到数据库**(`tortoise-demo`),无需先切换到超级用户。

4.**配置 PostgreSQL 在以 `testuser` 身份登录时始终自动连接到 tortoise-demo**。

步骤 1:向 testuser 授予必要的权限

在以非超级用户身份创建数据库之前,您需要确保您的角色(在本例中为“testuser”)具有创建数据库的适当权限。

授予 CREATEDB 权限

默认情况下,新创建的 PostgreSQL 角色没有创建数据库的权限。如果您以 **超级用户**(如 `postgres`)身份登录,则可以向 `testuser` 角色授予必要的权限。

1.**以超级用户身份登录**(例如`postgres`):

psql -U postgres

2. 授予 `testuser` **CREATEDB 权限**:

运行以下 SQL 查询以允许“testuser”创建新数据库:

GRANT CREATEDB TO "testuser";

这将使“testuser”能够创建数据库而不需要超级用户权限。

3.**退出超级用户会话**:

\q

第 2 步:以 testuser 身份登录并创建数据库

现在“testuser”角色具有“CREATEDB”权限,您可以以“testuser”身份登录并创建一个新的数据库。

以测试用户身份登录:

要以“testuser”角色登录,请运行以下命令:

psql -U "testuser" -d postgres -W
  • -U“testuser”选项指定用户。
  • -d postgres 选项将您连接到 postgres 数据库(默认管理数据库)。
  • -W 选项提示您为 testuser 设置的密码(例如,1234567890)。
  • 创建 tortoise-demo 数据库:

    登录后,创建新的数据库“tortoise-demo”:

    CREATE DATABASE "tortoise-demo";

    此命令创建一个名为“tortoise-demo”的新数据库。

    设置所有权(可选):

    如果要确保“testuser”对数据库有完全控制权,可以将数据库的所有权分配给“testuser”:

    ALTER DATABASE "tortoise-demo" OWNER TO "testuser";

    此步骤是可选的,但它确保“testuser”角色对“tortoise-demo”数据库具有完全的管理控制权。

    步骤 3:切换到 tortoise-demo 数据库

    创建数据库后,您可能想要**切换到新创建的数据库**(`tortoise-demo`)并开始使用它。

    要连接到“tortoise-demo”,请运行:

    \c "tortoise-demo"

    `\c` 命令将当前会话切换到 `tortoise-demo` 数据库。从此时起,您可以执行 SQL 查询并管理数据库。

    步骤 4:自动连接到 tortoise-demo,无需每次切换

    现在您已成功创建并切换到“tortoise-demo”数据库,下一步是**自动执行此过程**。具体来说,我们希望配置 PostgreSQL,以便每次您以“folasayoolayemi”身份登录时,它都会自动将您连接到“tortoise-demo”数据库,而无需明确切换。

    选项 1:设置 PGDATABASE 环境变量

    确保始终连接到“tortoise-demo”数据库的一种简单方法是设置“PGDATABASE”环境变量。此变量告诉 PostgreSQL 连接时默认使用哪个数据库。

    1.**为当前会话设置PGDATABASE**:

    您可以在当前终端会话中设置环境变量,如下所示:

    export PGDATABASE="tortoise-demo"

    这将确保您运行的任何后续“psql”命令将默认自动连接到“tortoise-demo”。

    2.**使更改永久生效**:

    为了使此更改在终端会话中持久化,请将“export”命令添加到shell的配置文件(“.bashrc”、“.zshrc”等)中。

    例如,如果您使用 **bash**,请将以下行添加到您的 `~/.bashrc` 文件中:

    echo 'export PGDATABASE="tortoise-demo"' >> ~/.bashrc

    然后运行:

    source ~/.bashrc

    这将确保每次打开新的终端会话时,PostgreSQL 都会自动连接到“tortoise-demo”,而无需指定数据库。

    选项 2:始终在连接命令中指定数据库

    如果您不想使用“PGDATABASE”环境变量,您可以随时在“psql”连接命令中指定数据库名称:

    psql -U "testuser" -d "tortoise-demo" -W

    这样,每次连接时您都可以直接指定“tortoise-demo”数据库,从而无需进行任何配置更改。

    关键步骤:

    1.**授予 CREATEDB 权限**:确保“testuser”角色具有创建数据库所需的权限。

    2.**创建数据库**:以`testuser`身份登录并创建`tortoise-demo`数据库。

    3.**切换到数据库**:使用`\c`命令切换到`tortoise-demo`。

    4.**自动化数据库连接**:设置`PGDATABASE`环境变量默认始终连接到`tortoise-demo`或者在`psql`命令中明确指定数据库名称。

    结论:

    通过执行这些步骤,您可以以非超级用户身份在 PostgreSQL 中创建和管理自己的数据库,而无需每次创建新数据库时都具有超级用户权限。自动连接到特定数据库的功能将使您的工作流程更加高效,尤其是对于使用特定项目或应用程序的开发人员而言。

    感谢阅读...

    **编码愉快!**