Thi*_*Lam 451 postgresql user-management
我刚刚在 Ubuntu 9.10 上安装了 postgres 8.4,它从未要求我创建超级用户。是否有默认的超级用户及其密码?如果没有,我如何创建一个新的?
use*_*468 602
注意通过“$ sudo passwd postgres”更改“postgres”的 UNIX 密码的答案不是首选,甚至可能是危险的!
这就是为什么:默认情况下,UNIX 帐户“postgres”是锁定的,这意味着它不能使用密码登录。如果您使用“sudo passwd postgres”,该帐户将立即解锁。更糟糕的是,如果您将密码设置为弱密码,例如“postgres”,那么您将面临极大的安全隐患。例如,有许多机器人尝试使用用户名/密码组合“postgres/postgres”来登录您的 UNIX 系统。
您应该做的是遵循Chris James的回答:
sudo -u postgres psql postgres
# \password postgres
Enter new password:
Run Code Online (Sandbox Code Playgroud)
稍微解释一下。登录PostgreSQL服务器通常有两种默认方式:
通过以 UNIX 用户身份运行“psql”命令(所谓的 IDENT/PEER 身份验证),例如: sudo -u postgres psql。请注意,sudo -u这不会解锁 UNIX 用户。
通过 TCP/IP 连接使用 PostgreSQL 自己管理的用户名/密码(所谓的 TCP 身份验证)(即,不是UNIX 密码)。
因此,您永远不想为 UNIX 帐户“postgres”设置密码。默认情况下保持锁定状态。
当然,如果您将其配置为与默认设置不同,则情况可能会发生变化。例如,可以将 PostgreSQL 密码与 UNIX 密码同步,并且只允许本地登录。这超出了这个问题的范围。
小智 183
在命令行输入:
$ sudo -u postgres psql postgres
postgres=# \password postgres
Run Code Online (Sandbox Code Playgroud)
你会看到的:
Enter new password:
Enter it again:
Run Code Online (Sandbox Code Playgroud)
Dav*_*osh 68
您可以通过 user 操作 postgres postgres,如下所示:
# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;
Run Code Online (Sandbox Code Playgroud)
M.S*_*sti 24
在 Windows 中,执行以下操作(重要:使用 Windows管理员帐户):
安装后打开<PostgreSQL PATH>\data\pg_hba.conf。
修改这两行,将“md5”改为“trust”:
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
重新启动 PostgreSQL 服务(可能没有必要)。
(可选)打开命令提示符,并将代码页更改为 1252:
cmd.exe /c chcp 1252
登录到 PostgreSQL。将需要非密码(注意大写的 -U 参数):
psql -U postgres
(可选,出于安全原因推荐)更改postgres用户密码:
\password postgres
并将“信任”更改回“md5” pg_hba.conf。