首页 > 后端开发 > Python教程 > 如何在 PostgreSQL 中创建数据库并始终连接到它而不需要超级用户访问权限

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

Mary-Kate Olsen
发布: 2024-12-27 04:48:20
原创
709 人浏览过

How to Create a Database and Always Connect to It in PostgreSQL Without Needing Superuser Access

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

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

我们将实现什么:

1.创建一个新数据库(乌龟演示)。
2.向非超级用户角色(testuser)授予创建和访问数据库的权限
3.无缝切换到数据库(tortoise-demo),无需先切换到超级用户。
4.配置 PostgreSQL 在以 testuser 身份登录时始终自动连接到 tortoise-demo

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

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

授予 CREATEDB 权限

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

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

   psql -U postgres
登录后复制
登录后复制

2.授予 CREATEDB 权限给测试用户:

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

   GRANT CREATEDB TO "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:

   psql -U postgres
登录后复制
登录后复制

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

第三步:切换到tortoise-demo数据库

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

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

   GRANT CREATEDB TO "testuser";
登录后复制
登录后复制

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

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

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

选项 1:设置 PGDATABASE 环境变量

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

1.为当前会话设置 PGDATABASE:

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

   \q
登录后复制
登录后复制

这将确保您运行的任何后续 psql 命令默认情况下都会自动连接到 tortoise-demo。

2.使更改永久

要使此更改在终端会话中持续存在,请将导出命令添加到 shell 的配置文件(.bashrc、.zshrc 等)中。

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

psql -U "testuser" -d postgres -W
登录后复制
登录后复制

然后,运行:

CREATE DATABASE "tortoise-demo";
登录后复制
登录后复制

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

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

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

ALTER DATABASE "tortoise-demo" OWNER TO "testuser";
登录后复制

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

关键步骤:

1.授予 CREATEDB 权限:确保 testuser 角色具有创建数据库所需的权限。
2.创建数据库:以test用户身份登录并创建tortoise-demo数据库。
3.切换到数据库:使用c命令切换到tortoise-demo。
4.自动数据库连接:设置PGDATABASE环境变量默认始终连接到tortoise-demo或在psql命令中显式指定数据库名称。

结论:

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

感谢您的阅读...
编码快乐!

以上是如何在 PostgreSQL 中创建数据库并始终连接到它而不需要超级用户访问权限的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板