postgresql 获取错误initdb:错误:在postgresSQL上初始化数据库时无法以root身份运行

zujrkrfu  于 2023-03-29  发布在  PostgreSQL
关注(0)|答案(8)|浏览(1176)

我正在尝试安装ApacheAGE,为此我遵循了以下article中的说明,但我安装了postgres 12而不是11。安装成功,但当我尝试使用命令sudo ./bin/initdb demo初始化DB时,我收到以下错误。

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命令登录,但我仍然得到相同的错误。

3zwtqj6y

3zwtqj6y1#

错误代码告诉您不要在initdb命令之前使用sudo
在该步骤中执行./bin/initdb demo即可。
我建议只在绝对必要的情况下使用sudo命令。

ebdffaop

ebdffaop2#

基本上,如果您在sudo前面加上任何Linux命令,它将以提升的权限运行该命令。执行特定的管理任务需要提升的权限。从您的错误消息中可以清楚地看到,initdb不能以root身份运行。此外,它建议您使用无特权用户。
所以这里./bin/initdb <DbName>将工作。

vh0rcniy

vh0rcniy3#

如果在创建新用户并将其添加到sudoers列表后仍然遇到相同的错误,则可能是在运行initdb命令时无意中使用了sudo。请确保在执行命令时未使用sudo。
请按照以下步骤操作,以确保以正确的用户身份运行命令:
1.以您创建的新用户身份登录(假设用户名为myuser):sudo su - myuser**
1.通过运行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文档以获取进一步指导。

rks48beu

rks48beu4#

您不需要以特权运行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
nkoocmlb

nkoocmlb5#

只需执行以下操作,即非特权命令
“./bin/initdb DBNAME”
使用sudo将给予管理员权限

fcy6dtqo

fcy6dtqo6#

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

1dkrff03

1dkrff037#

只要在命令前添加sudo,就有希望解决您的错误。

uxhixvfz

uxhixvfz8#

此错误消息表示您可能已以ROOT用户身份安装了Postgres版本,因此没有运行它的权限。
根据权限,您应该以用户postgres的身份运行该命令
在完全卸载后,请尝试从源代码重新生成和安装。在安装过程中,请不要以超级用户身份运行。

相关问题