Bas*_*que 4 postgresql permissions users
EnterpriseDB.com 向社区提供的Postgres 安装程序通常会在macOSpostgres
上创建一个用户帐户。
在Terminal.app的控制台会话中,我需要切换到该用户。我的目标是使用该 user\xe2\x80\x99s 权限运行文本编辑器,以便我可以编辑pg_hba.conf
控制 Postgres 用户身份验证规则的文件。
当我尝试时:
\n\nsu - postgres\n
Run Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6 系统提示我输入用户密码,我输入成功,但收到错误消息:
\n\n\n\n\n苏:对不起
\n
我确信密码是正确的。我可以做什么来访问该postgres
用户?
EBD 安装程序在安装过程中要求输入密码,但这适用于数据库用户,而不是postgres
没有密码的 Unix 用户。
EDB 站点上的Postgres、密码和安装程序中提到了这一点。引用:
在 Linux 和 Mac OS X 等类 Unix 操作系统上,帐户的设置无需密码,用户通常无需再担心。
对您来说,无法工作的最合理的解释su - postgres
是您将数据库密码与操作系统密码混淆了。
为了使其su - postgres
可用,需要首先设置操作系统密码,可以通过以下方式完成:
$ sudo passwd postgres
Run Code Online (Sandbox Code Playgroud)
对于 Linux 发行版中打包的 PostgreSQL 来说也是如此。事实上,Linux 的 PostgreSQL 软件包甚至更进一步,不询问数据库超级用户的密码,这允许完全自动化的安装。就像如果始终使用操作系统密码则不需要一样,如果用户仅使用sudo
默认身份验证方法则不需要数据库密码。peer
postgres
sudo su postgres
在 Stack Overflow 上找到这个已关闭的问题及其重复项后,我将在这里发布在那里找到的解决方案。
\n\n\xe2\x9e\xa5 必须将sudo
命令与命令结合su
使用。
sudo su postgres\n
Run Code Online (Sandbox Code Playgroud)\n\n出现提示时,输入macOS 管理员用户密码,而不是postgres
user\xe2\x80\x99s 密码。此时,您的 Mac 管理员用户是执行该sudo
命令的用户,而不是postgres
用户。
虽然我不明白为什么我们必须将 与 结合起来sudo
,su
但它确实在macOS Mojave中对我有用。我在各种与 BSD 和 Linux 相关的搜索工作中没有找到这个提示,所以这也许是 Mac 专用的 Apple 的东西,也许是一个额外的安全措施。或者也许在 Unix 风格的操作系统中,该su
命令必须由用户运行root
,并且在 macOS 中,root
出于安全目的,默认情况下禁用该帐户 \xe2\x80\x93\xc2\xa0our Mac 管理员用户帐户的功能不如root
,并且可能默认没有授权运行su
?不知道,不在乎,解决方法有效。
sudo -u
根据Craig Ringer和Erwin Brandstetter 的说法,更现代的形式是:
\n\nsudo -u postgres -i\n
Run Code Online (Sandbox Code Playgroud)\n\n根据此页面:
\n\n-u
表示 \xe2\x80\x9c 作为指定用户 \xe2\x80\x9d 运行指定命令。postgres
指定我们要运行命令的用户名。-i
模拟初始登录,这意味着将运行该 user\xe2\x80\x99s 启动脚本来初始化 shell。有关旧方法和新方法的更多讨论,请参阅姊妹网站上的问题,sudo su - postgres 和 sudo -u postgres 之间有什么区别?。克雷格·林格(Craig Ringer)的答案建议:(a)忘记sudo su
,(b)改用sudo -u
。
postgres
以用户身份运行应用程序psql
以用户身份运行会话postgres
:
sudo -u postgres psql\n
Run Code Online (Sandbox Code Playgroud)\n\n要以用户身份运行文本编辑器应用程序:nano
postgres
sudo -u postgres nano\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
20417 次 |
最近记录: |