Postgresql 9.5 安装 - 配置所有者 (postgres105) 和数据所有者 (ubuntu1000) 不匹配,并且配置所有者不是 root

作者:编程家 分类: postgresql 时间:2025-07-24

PostgreSQL 9.5 安装 - 配置所有者不匹配的问题

在进行 PostgreSQL 9.5 的安装和配置过程中,有时会遇到配置所有者(postgres:105)和数据所有者(ubuntu:1000)不匹配的情况。这种情况通常发生在使用非 root 用户进行安装和配置的情况下。本文将介绍这个问题的原因以及解决方案,并提供相应的案例代码。

问题的原因

在默认情况下,PostgreSQL 在安装时会创建一个名为 "postgres" 的系统用户,并将其作为数据库集群的所有者。同时,PostgreSQL 还会根据当前系统用户的 UID(User Identifier)来确定数据库集群的数据所有者。

当配置所有者(postgres:105)和数据所有者(ubuntu:1000)不匹配时,通常是因为以非 root 用户进行安装和配置,而非 root 用户的 UID 与 "postgres" 用户的 UID 不一致。这导致 PostgreSQL 在创建数据库集群时无法将非 root 用户作为数据所有者。

解决方案

要解决配置所有者不匹配的问题,可以采取以下步骤:

1. 登录到系统中的非 root 用户账户,打开终端。

2. 使用以下命令切换到 "postgres" 用户:

sudo su - postgres

3. 运行以下命令修改 "postgres" 用户的 UID:

sudo usermod -u postgres

其中,"" 是一个未被使用的 UID,用于替换原来的 UID。

4. 运行以下命令修改 "postgres" 用户的主目录和组:

sudo usermod -d /var/lib/postgresql/9.5/main -m -g postgres

其中,"" 是一个未被使用的 GID(Group Identifier),用于替换原来的 GID。

5. 退出 "postgres" 用户并返回到之前的非 root 用户账户:

exit

6. 使用以下命令修改非 root 用户的 UID 和 GID:

sudo usermod -u -g

其中,"" 和 "" 分别是一个未被使用的 UID 和 GID,用于替换原来的 UID 和 GID。"" 是非 root 用户的用户名。

7. 重新启动 PostgreSQL 服务:

sudo systemctl restart postgresql

现在,配置所有者和数据所有者应该匹配,并且不会出现不匹配的问题。

案例代码

下面是一个示例代码,演示了如何解决配置所有者不匹配的问题:

shell

# 切换到 postgres 用户

sudo su - postgres

# 修改 postgres 用户的 UID

sudo usermod -u 1001 postgres

# 修改 postgres 用户的主目录和组

sudo usermod -d /var/lib/postgresql/9.5/main -m -g 1001 postgres

# 退出 postgres 用户

exit

# 修改非 root 用户的 UID 和 GID

sudo usermod -u 1001 -g 1001 ubuntu

# 重新启动 PostgreSQL 服务

sudo systemctl restart postgresql

通过执行以上步骤和示例代码,您应该能够成功解决配置所有者不匹配的问题,并使得配置所有者(postgres:105)和数据所有者(ubuntu:1000)匹配起来。

希望本文对您解决 PostgreSQL 9.5 安装和配置过程中的问题有所帮助!