Getting error initdb: error: cannot be run as root when initializing db on postgresSQL

问题描述 投票:0回答:6

我正在尝试安装 ApacheAGE,为此我按照以下 article 中的说明进行操作,但我安装了 postgres 12 而不是 11。安装成功但是当我尝试使用命令初始化数据库时

sudo ./bin/initdb demo
我是出现以下错误。

initdb: error: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

我该如何解决这个问题?我需要为此创建另一个 Linux 用户吗? 我正在使用 Ubuntu 22.04。 Postgresql版本为12,安装在以下目录

/usr/lib/postgresql/12/bin
.

我创建了另一个 Linux 用户,将其添加到 sudoers 列表,使用

su
命令登录,但我仍然遇到同样的错误。

postgresql database-administration superuser apache-age
6个回答
1
投票

错误代码告诉你不要在

sudo
命令之前使用
initdb

就在那一步做

./bin/initdb demo

我建议仅在绝对必要时才使用带有

sudo
的命令。


1
投票

如果您在创建新用户并将其添加到 sudoers 列表后仍然遇到相同的错误,则可能是您在运行 initdb 命令时无意中使用了 sudo。 确保在执行命令时没有使用 sudo。

按照以下步骤确保您以正确的用户身份运行命令:

  1. 以您创建的新用户身份登录(假设用户名是 我的用户): sudo su - 我的用户
  2. 通过运行以下命令确认您以正确的用户身份登录 whoami 命令:whoami

这应该返回用户名“myuser”

  1. 不使用 sudo 运行 initdb 命令:/usr/lib/postgresql/12/bin/initdb /path/to/your/data/directory

/path/to/your/data/directory 替换为您要存储 PostgreSQL 数据文件的实际路径。

如果您仍然遇到错误,则可能是您的 PostgreSQL 安装或用户权限有问题。在这种情况下,请尝试重新安装 PostgreSQL 或查阅 PostgreSQL 文档以获得进一步的指导。


0
投票

基本上,如果您在任何 Linux 命令前加上

sudo
,它将以提升的权限运行该命令。执行特定的管理任务需要提升的权限。从您的错误消息中可以清楚地看出 initdb 不能以 root 身份运行。此外,它建议您使用非特权用户。

所以在这里

./bin/initdb <DbName>
将继续工作。


0
投票

您不需要以特权运行 initdb 命令,请尝试在没有特权的情况下运行它

sudo

确保在运行 make install 之前已导出 PATH 变量。

./configure --prefix=/usr/local/pgsql-12
sudo mkdir /usr/local/pgsql-12
sudo chown [user] /usr/local/pgsql-12
make install 

0
投票

只需执行此操作,非特权命令

"./bin/initdb 数据库名称"

使用 sudo 将授予管理员权限


0
投票

您应该以非 root 用户身份运行命令,约定是名为“postgres”的用户。

© www.soinside.com 2019 - 2024. All rights reserved.