我刚刚在 Ubuntu 9.10 上安装了 postgres 8.4,它从未要求我创建超级用户。是否有默认超级用户及其密码?如果没有,我该如何创建一个新的?
答案1
警告关于通过“$ sudo passwd postgres”更改“postgres”的 UNIX 密码的答案并不受欢迎,甚至可以危险的!
原因如下:默认情况下,UNIX 帐户“postgres”是锁定的,这意味着无法使用密码登录。如果您使用“sudo passwd postgres”,该帐户将立即解锁。更糟糕的是,如果您将密码设置为较弱的密码,例如“postgres”,那么您将面临巨大的安全隐患。例如,有许多机器人尝试使用用户名/密码组合“postgres/postgres”登录您的 UNIX 系统。
你应该做的是克里斯·詹姆斯的回答:
sudo -u postgres psql postgres
# \password postgres
Enter new password:
稍微解释一下。通常有两种默认方式登录 PostgreSQL 服务器:
通过以 UNIX 用户身份运行“psql”命令(所谓的 IDENT/PEER 身份验证),例如:
sudo -u postgres psql
。请注意,sudo -u
不会解锁 UNIX 用户。通过 TCP/IP 连接,使用 PostgreSQL 自己管理的用户名/密码(所谓的 TCP 身份验证)(即不是UNIX 密码)。
那么你绝不想要设置 UNIX 帐户“postgres”的密码。保留默认锁定状态。
当然,如果您将其配置为与默认设置不同,情况可能会发生变化。例如,可以将 PostgreSQL 密码与 UNIX 密码同步,并且仅允许本地登录。这超出了这个问题的范围。
答案2
在命令行中输入:
$ sudo -u postgres psql postgres
postgres=# \password postgres
你会看到的:
Enter new password:
Enter it again:
答案3
你可以通过用户来操作postgres postgres
,就像这样:
# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;
答案4
如果您尝试访问 PostgreSQL shell,您可以输入:
psql -U postgres my_database
my_database
您的数据库名称在哪里。