我正在尝试安装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
命令登录,但我仍然得到相同的错误。
8条答案
按热度按时间3zwtqj6y1#
错误代码告诉您不要在
initdb
命令之前使用sudo
。在该步骤中执行
./bin/initdb demo
即可。我建议只在绝对必要的情况下使用
sudo
命令。ebdffaop2#
基本上,如果您在
sudo
前面加上任何Linux命令,它将以提升的权限运行该命令。执行特定的管理任务需要提升的权限。从您的错误消息中可以清楚地看到,initdb不能以root身份运行。此外,它建议您使用无特权用户。所以这里
./bin/initdb <DbName>
将工作。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文档以获取进一步指导。
rks48beu4#
您不需要以特权运行initdb命令,尝试在没有
sudo
的情况下运行此命令确保在运行make install之前已经导出了PATH变量。
nkoocmlb5#
只需执行以下操作,即非特权命令
“./bin/initdb DBNAME”
使用sudo将给予管理员权限
fcy6dtqo6#
您应该以非root用户的身份运行该命令,约定是名为“postgres”的用户。
1dkrff037#
只要在命令前添加
sudo
,就有希望解决您的错误。uxhixvfz8#
此错误消息表示您可能已以ROOT用户身份安装了Postgres版本,因此没有运行它的权限。
根据权限,您应该以用户
postgres
的身份运行该命令在完全卸载后,请尝试从源代码重新生成和安装。在安装过程中,请不要以超级用户身份运行。