我刚刚在Ubuntu 9.10上安装了postgres 8.4,它从未要求我创建超级用户。是否有默认的超级用户及其密码?如果没有,如何创建一个新的?
我刚刚在Ubuntu 9.10上安装了postgres 8.4,它从未要求我创建超级用户。是否有默认的超级用户及其密码?如果没有,如何创建一个新的?
Answers:
注意关于通过“ $ 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:
解释一下。通常有两种默认的登录PostgreSQL服务器的方式:
通过以UNIX用户身份运行“ psql”命令(所谓的IDENT / PEER身份验证),例如: sudo -u postgres psql
。请注意,sudo -u
这不会解锁UNIX用户。
通过使用PostgreSQL自己的托管用户名/密码(即TCP身份验证)(即,不是 UNIX密码)的TCP / IP连接。
因此,您永远都不想为UNIX帐户“ postgres”设置密码。使其默认保持锁定状态。
当然,如果您将其配置与默认设置不同,则情况可能会发生变化。例如,可以将PostgreSQL密码与UNIX密码同步,而只允许本地登录。那将超出这个问题的范围。
/etc/shadow
密码保存在@lzap的位置。
在命令行中输入:
$ sudo -u postgres psql postgres
postgres=# \password postgres
你会看到的:
Enter new password:
Enter it again:
您可以通过user操作postgres postgres
,如下所示:
# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;
su
用户,而无需输入密码。在大多数系统上,Postgres Unix帐户是锁定的(没有密码可用),这意味着该帐户只能是 root用户su
。
sudo
代替su
。
sudo su - postgres
:\
sudo -u postgres
。
在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
。
如果您尝试访问PostgreSQL Shell,则可以输入:
psql -U postgres my_database
my_database
您的数据库名称在哪里。