无法从 postgres 返回 root:强制输入发现无效的 postgres 密码

par*_*cer 5 postgresql ubuntu sql database

我已经在 Ubuntu 上安装了 postgres 并将我切换到 postgres 用户。我已经打开psql创建了一个数据库,然后决定切换回root。但是,它不允许我:

sudo su - 
Run Code Online (Sandbox Code Playgroud)

结果它问我

[sudo] password for postgres:
Run Code Online (Sandbox Code Playgroud)

我尝试输入只是为了得到

Sorry, try again
Run Code Online (Sandbox Code Playgroud)

然后我决定尝试使用以下答案更改 postgres 密码:

ALTER USER postgres WITH PASSWORD 'postgres';
Run Code Online (Sandbox Code Playgroud)

它看起来有效,但是在尝试再次切换到 root 后,它仍然不允许我。

A.B*_*A.B 5

看来您混淆了两件事:

  • postgres系统用户
  • postgresSQL 数据库用户

两者之间的唯一关系是,在 PostgreSQL 安装时,数据库用户postgres使用对等身份验证方法进行身份验证:数据库服务器检查请求访问数据库的系统postgres用户是否也称为数据库用户postgres。此外,数据库服务器本身以系统用户身份运行postgres

不可能从数据库改变系统。为数据库帐户提供密码不会改变系统用户postgres没有sudo的事实,而且最肯定的是禁用密码,因此默认情况下只允许 root 使用它(但反之则不然)。

因此,如果您想成为root,则无法从postgres系统帐户执行此操作,这是一件好事:如果数据库服务器(其进程也以系统用户身份运行postgres)受到损害,将无法升级到root从系统帐户进行​​访问它。

只需再次登录您用于安装 postgreSQL 的帐户即可:直接登录该root帐户(通常在 Ubuntu 上不这样做)或(通常在 Ubuntu 上这样做)在安装系统时配置的用户,uid 1000,在 Ubuntu 上默认允许去做sudo su -