我正在尝试安装 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
命令登录,但我仍然遇到同样的错误。
错误代码告诉你不要在
sudo
命令之前使用initdb
。
就在那一步做
./bin/initdb demo
。
我建议仅在绝对必要时才使用带有
sudo
的命令。
如果您在创建新用户并将其添加到 sudoers 列表后仍然遇到相同的错误,则可能是您在运行 initdb 命令时无意中使用了 sudo。 确保在执行命令时没有使用 sudo。
按照以下步骤确保您以正确的用户身份运行命令:
这应该返回用户名“myuser”
将 /path/to/your/data/directory 替换为您要存储 PostgreSQL 数据文件的实际路径。
如果您仍然遇到错误,则可能是您的 PostgreSQL 安装或用户权限有问题。在这种情况下,请尝试重新安装 PostgreSQL 或查阅 PostgreSQL 文档以获得进一步的指导。
基本上,如果您在任何 Linux 命令前加上
sudo
,它将以提升的权限运行该命令。执行特定的管理任务需要提升的权限。从您的错误消息中可以清楚地看出 initdb 不能以 root 身份运行。此外,它建议您使用非特权用户。
所以在这里
./bin/initdb <DbName>
将继续工作。
您不需要以特权运行 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
只需执行此操作,非特权命令
"./bin/initdb 数据库名称"
使用 sudo 将授予管理员权限
您应该以非 root 用户身份运行命令,约定是名为“postgres”的用户。