我刚刚在Ubuntu 9.10上安装了postgres 8.4,它从未要求我创建超级用户。是否有默认的超级用户及其密码?如果没有,我该如何创建一个新的?

评论

可能非常相关-“我正在安装PostgreSQL,但不知道postgres用户的密码”。

#1 楼

警告关于通过“ $ 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不会使用PostgreSQL自己的托管用户名/密码(所谓的TCP身份验证)(即,不是UNIX密码)通过TCP / IP连接解锁UNIX用户。

因此,您永远都不想为UNIX帐户“ postgres”设置密码。

如果将它的配置与默认设置不同,当然会发生变化。例如,可以将PostgreSQL密码与UNIX密码同步,而只允许本地登录。那将超出此问题的范围。

评论


那么,如何锁定用户postgres?

–ultrajohn
2012年7月4日在4:30

@ultrajohn-取决于您使用的发行版,但是您可以编辑/ etc / passwd并输入*而不是密码

–lzap
2012年9月12日上午9:50

/ etc / shadow是保存密码@lzap的位置。

– Gringo Suave
2012-09-20 18:56

正确,您可以在/ etc / passwd中设置/ sbin / nologin或在/ etc / shadow中输入*而不是密码。

–lzap
2012年9月21日在9:37

passwd --lock postgres

–Stéphane
13年7月25日在18:04

#2 楼

在命令行中输入:

$ sudo -u postgres psql postgres
postgres=# \password postgres


您将看到:

Enter new password: 
Enter it again:


评论


这是在安装Postgres本身后立即使用pgadminIII之类的工具(设置服务器配置文件时)所需要的。谢谢!

–limist
2011年7月10日下午16:55

#3 楼

您可以通过用户postgres来操作postgres,如下所示:

# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;


评论


@ThierryLam您必须是root用户才能su到postgres用户,而无需输入密码。在大多数系统上,Postgres Unix帐户被锁定(没有密码可用),这意味着只有root用户可以使用该帐户。

–voretaq7
13年7月7日在22:59

使用sudo而不是su。

– reinierpost
2014年8月8日13:30

我必须运行sudo su-postgres:\

–吉姆·舒伯特(Jim Schubert)
2014年10月8日14:08

@Jim Schubert:您也可以运行sudo -u postgres。

– reinierpost
2014年11月24日9:28

sudo -u postgres psql-也可以工作,因此您可以一步完成。

– Ominus
17年11月20日在13:35

#4 楼

在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中将“信任”更改回“ md5”。



#5 楼

如果尝试访问PostgreSQL Shell,则可以键入:

psql -U postgres my_database

其中my_database是您的数据库名称。