我刚刚在Ubuntu 9.10上安装了postgres 8.4,它从来没有要求我创build一个超级用户。 有没有默认的超级用户及其密码? 如果不是,我该如何创build一个新的?
小心通过“$ sudo passwd postgres”更改“postgres”的UNIX密码的答案不是首选,甚至可能是危险的 !
这是为什么:默认情况下,UNIX帐户“postgres”被locking,这意味着它不能使用密码login。 如果你使用“sudo passwd postgres”,这个账户立即解锁。 更糟糕的是,如果你把密码设置得很弱,比如“postgres”,那么你将面临很大的安全隐患。 例如,有很多机器人尝试用户名/密码组合“postgres / postgres”login到您的UNIX系统。
你应该做的是按照詹姆斯的回答:
sudo -u postgres psql postgres # \password postgres Enter new password:
稍微解释一下。 通常有两种默认的方式loginPostgreSQL服务器:
通过作为UNIX用户运行“psql”命令(所谓的IDENT / PEERauthentication),例如: sudo -u postgres psql
。 请注意, sudo -u
不能解锁UNIX用户。
通过TCP / IP连接使用PostgreSQL自己的pipe理用户名/密码(所谓的TCPauthentication)(即不是 UNIX密码)。
所以你永远不想为UNIX帐户“postgres”设置密码。 保持原样locking状态。
当然,如果将其configuration为与默认设置不同,事情可能会改变。 例如,可以将PostgreSQL密码与UNIX密码同步,只允许本地login。 这超出了这个问题的范围。
在命令行中input:
$ sudo -u postgres psql postgres postgres=# \password postgres
你会看到的:
Enter new password: Enter it again:
你通过用户postgres
操纵postgres,如下所示:
# su - postgres $ createdb mydb $ psql -s mydb # create user someuser password 'somepassword'; # GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;
在Windows中,执行以下操作(重要:使用Windows pipe理员帐户):
安装后,打开<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
login到PostgreSQL。 非密码将需要(注意大写-U参数):
psql -U postgres
(可选,build议出于安全原因)更改postgres
用户的密码:
\password postgres
并在pg_hba.conf
中将“信任”更改回“md5”。
可能非常相关 – “我正在安装PostgreSQL,不知道postgres用户的密码” 。
如果你想访问PostgreSQL shell,你可以input:
psql -U postgres my_database
其中my_database
是您的数据库名称。