3.3. 创建 PostgreSQL 用户


PostgreSQL 用户为以下类型:

  • postgres Linux 系统用户:只使用它来运行 PostgreSQL 服务器和客户端应用程序,如 pg_dump。不要将 postgres 系统用户用于 PostgreSQL 管理方面的任何交互式工作,如数据库创建和用户管理。
  • 数据库超级用户:默认的 postgres PostgreSQL 超级用户与 postgres 系统用户无关。您可以在 /var/lib/pgsql/data/pg_hba.conf 文件中限制 postgres 超级用户的访问,否则不存在其他权限限制。您也可以创建其他数据库超级用户。
  • 具有特定数据库访问权限的角色:

    • A database user:具有默认登录的权限。
    • A group of users:启用管理整个组的权限。

角色可以拥有数据库对象(如表和函数),并且可以使用 SQL 命令将对象特权分配给其他角色。

标准数据库管理特权包括 SELECTINSERTUPDATEDELETETRUNCATEREFERENCESTRIGGERCREATECONNECTTEMPORARYEXECUTEUSAGE

角色属性是特殊的特权,如 LOGINSUPERUSERCREATEDBCREATEROLE

重要

以不是超级用户的角色执行大部分任务。常见的做法是创建一个具有 CREATEDBCREATEROLE 特权的角色,并将此角色用于所有数据库和角色的日常管理。

先决条件

  • PostgreSQL 服务器已安装。
  • 数据库集群已初始化。
  • /var/lib/pgsql/data/postgresql.conf 文件中的 password_encryption 参数已设为 scram-sha-256
  • /var/lib/pgsql/data/pg_hba.conf 文件中的条目使用 scram-sha-256 哈希算法作为身份验证方法。

流程

  1. postgres 系统用户身份登录,或切换到这个用户:

    # su - postgres
    Copy to Clipboard Toggle word wrap
  2. 启动 PostgreSQL 交互式终端:

    $ psql
    psql (16.4)
    Type "help" for help.
    
    postgres=#
    Copy to Clipboard Toggle word wrap
  3. 可选:获取有关当前数据库连接的信息:

    postgres=# \conninfo
    You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
    Copy to Clipboard Toggle word wrap
  4. 创建一个名为 mydbuser 的用户,为其设置密码,并向用户分配 CREATEROLECREATEDB 权限:

    postgres=# CREATE USER mydbuser WITH PASSWORD '<password>' CREATEROLE CREATEDB;
    CREATE ROLE
    Copy to Clipboard Toggle word wrap

    mydbuser 用户现在可以执行日常数据库管理操作:创建数据库并管理用户索引。

  5. 使用 \q meta 命令从交互终端退出:

    postgres=# \q
    Copy to Clipboard Toggle word wrap

验证

  1. mydbuser 用户身份登录到 PostgreSQL 终端,指定主机名,并连接到默认的 postgres 数据库,该数据库是在初始化过程中创建的:

    # psql -U mydbuser -h 127.0.0.1 -d postgres
    Password for user mydbuser:
    Type the password.
    psql (16.4)
    Type "help" for help.
    
    postgres=>
    Copy to Clipboard Toggle word wrap
  2. 创建数据库:

    postgres=> CREATE DATABASE <db_name>;
    Copy to Clipboard Toggle word wrap
  3. 退出会话:

    postgres=# \q
    Copy to Clipboard Toggle word wrap
  4. mydbuser 用户身份连接到新数据库:

    # psql -U mydbuser -h 127.0.0.1 -d <db_name>
    Password for user mydbuser:
    psql (16.4)
    Type "help" for help.
    mydatabase=>
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat