我忘记或者在安装过程中输入了PostgreSQL默认用户的密码。我似乎不能运行它,我得到以下错误:

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql

是否有方法重置密码或如何创建具有超级用户权限的新用户?

我是PostgreSQL的新手,只是第一次安装它。我正在尝试使用Ruby on Rails,我正在运行Mac OS X v10.7 (Lion)。


当前回答

Windows用户PostgreSQL最新版本(大于10):

到PostgreSQL安装位置,搜索pg_hba.conf,你会在..\postgres\data\pg_hba.conf中找到它。

用记事本打开这个文件,找到这行:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#..

Change the method from *md5* to *trust*:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# ...

现在转到你的SQL shell (PSQL),让一切都为空,

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]:

这次它不会要求你输入密码,你就可以登录了,

现在运行这一行:

  `ALTER USER yourusername WITH SUPERUSER`

现在您可以将\q留在外壳中。

再次进入“pg_hba.conf”文件,将“METHOD”从“trust”修改为“md5”并保存。

现在使用新用户和密码登录,可以检查\du的属性。

其他回答

当从命令行连接到PostgreSQL时,不要忘记添加-h localhost作为命令行参数。如果不是,PostgreSQL将尝试使用PEER认证模式进行连接。

下面显示了密码重置、使用PEER身份验证登录失败和使用TCP连接登录成功。

# sudo -u postgres psql

could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

失败:

# psql -U postgres -W

Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

使用-h localhost:

# psql -U postgres -W  -h localhost

Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#

如果你在Windows上,你可以直接运行

net user postgres postgres

并以postgres/postgres用户/密码登录PostgreSQL。

Find the file pg_hba.conf. It may be located, for example, in /etc/postgresql-9.1/pg_hba.conf. cd /etc/postgresql-9.1/ Back it up cp pg_hba.conf pg_hba.conf-backup Place the following line (as either the first uncommented line, or as the only one): For all occurrence of below (local and host) , except replication section if you don't have any it has to be changed as follow ,no MD5 or Peer authentication should be present. local all all trust Restart your PostgreSQL server (e.g., on Linux:) sudo /etc/init.d/postgresql restart If the service (daemon) doesn't start reporting in log file: local connections are not supported by this build you should change local all all trust to host all all 127.0.0.1/32 trust You can now connect as any user. Connect as the superuser postgres (note, the superuser name may be different in your installation. In some systems it is called pgsql, for example.) psql -U postgres or psql -h 127.0.0.1 -U postgres (note that with the first command you will not always be connected with local host) Reset the password ('replace my_user_name with postgres since you are resetting the postgres user) ALTER USER my_user_name with password 'my_secure_password'; Restore the old pg_hba.conf file as it is very dangerous to keep around cp pg_hba.conf-backup pg_hba.conf Restart the server, in order to run with the safe pg_hba.conf file sudo /etc/init.d/postgresql restart

关于pg_hba文件的进一步阅读:19.1。pg_hba.conf文件(正式文档)

将下面的代码添加到pg_hba.conf文件中。PostgreSQL的安装目录中会出现哪个

hostnossl    all          all            0.0.0.0/0  trust

它将开始工作。

Windows用户PostgreSQL最新版本(大于10):

到PostgreSQL安装位置,搜索pg_hba.conf,你会在..\postgres\data\pg_hba.conf中找到它。

用记事本打开这个文件,找到这行:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#..

Change the method from *md5* to *trust*:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# ...

现在转到你的SQL shell (PSQL),让一切都为空,

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]:

这次它不会要求你输入密码,你就可以登录了,

现在运行这一行:

  `ALTER USER yourusername WITH SUPERUSER`

现在您可以将\q留在外壳中。

再次进入“pg_hba.conf”文件,将“METHOD”从“trust”修改为“md5”并保存。

现在使用新用户和密码登录,可以检查\du的属性。