#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
是您的数据库名称。
评论
可能非常相关-“我正在安装PostgreSQL,但不知道postgres用户的密码”。