我在 Ubuntu 18.04 上运行 postgresql 10.12。
我想尝试一个使用 postgres 的软件包。这意味着我应该弄清楚如何在 postgres 下设置用户、密码和数据库。
Postgres 正在运行,但无法登录。
我很确定有一个名为“postgres”的用户。
在不提供密码的情况下以该用户身份登录会失败。此外,尝试使用密码“postgres”或“root”也会失败。
如何在无法访问数据库的情况下更改用户“postgres”的密码?
fil*_*rem 23
这是重置超级用户密码的新手级秘诀,适用于 Linux 上所有全新安装的 PostgreSQL。
转到 shell 并将用户切换到postgres
(in user shell) sudo su - postgres
Run Code Online (Sandbox Code Playgroud)
postgres以postgres用户身份连接到数据库
(in postgres shell) psql postgres postgres
Run Code Online (Sandbox Code Playgroud)
现在您可以重置postgres用户密码
(in postgres psql) ALTER USER postgres PASSWORD 'newsecret';
Run Code Online (Sandbox Code Playgroud)
退出 psql
(in postgres psql) \q
Run Code Online (Sandbox Code Playgroud)
退出 postgres shell
(in postgres shell) exit
Run Code Online (Sandbox Code Playgroud)
使用新密码测试连接
(in user shell) psql -h localhost postgres postgres
Run Code Online (Sandbox Code Playgroud)
关于远程 postgres 服务器的注意事项
在上面的步骤 1 中,您可以使用ssh, kubectl exec,aws ssm在上面的步骤 1 中,如果您具有此类 shell 访问权限,则
上面的食谱(尽管它回答了OP问题)并不是一个好的做法。最好的方法是:
阅读并理解客户端身份验证 -> https://www.postgresql.org/docs/current/client-authentication.html
不要使用postgres数据库用户(或任何其他超级用户!)进行应用程序/开发。相反,创建您自己的用户。对于最简单的设置,请使用以下命令:
(in psql shell)
CREATE USER myapp PASSWORD 'secret';
CREATE DATABASE myapp;
ALTER DATABASE myapp OWNER TO myapp;
-- alternative if you want to keep default ownership:
-- GRANT ALL ON DATABASE myapp TO myapp;
Run Code Online (Sandbox Code Playgroud)
应该这样做而不是修改postgres用户和/或postgres数据库。
关于托管 postgres 解决方案的说明
这个答案仅适用于自我管理的 PostgreSQL,您可以在其中拥有超级用户 shell 访问权限。它不适用于 Aurora、CloudSQL 等托管解决方案 - 在这种情况下,请使用云提供商工具重置数据库密码。
| 归档时间: |
|
| 查看次数: |
28797 次 |
| 最近记录: |