我忘记了在 PostgreSQL 安装期间输入的密码。
我忘记了在 PostgreSQL 安装期间输入的密码。
我不记得或在安装过程中输错了PostgreSQL默认用户的密码。我好像不能运行它,我得到了以下错误:
psql: FATAL: password authentication failed for user "hisham" hisham-agil: hisham$ psql
是否有重置密码的方法,或者如何创建一个具有超级用户权限的新用户?
我是PostgreSQL的新手,第一次安装它。我正在尝试将其与Ruby on Rails一起使用,我正在运行Mac OS X v10.7(Lion)。
在命令行连接到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=#
-
找到文件pg_hba.conf。例如,它可能位于/etc/postgresql-9.1/pg_hba.conf。
cd /etc/postgresql-9.1/
-
备份它
cp pg_hba.conf pg_hba.conf-backup
-
放置以下行(作为第一个未注释行,或作为唯一的行):
对于下面的所有(本地和主机),除非复制,否则所有出现都必须改为以下方式,不应有MD5或同行身份验证。
local all all trust
-
重新启动您的PostgreSQL服务器(例如,在Linux上:)
sudo /etc/init.d/postgresql restart
如果服务(守护程序)无法启动并在日志文件中报告:
本地连接不受此版本支持
您应该更改
local all all trust
至
host all all 127.0.0.1/32 trust
-
现在您可以连接为任何用户。作为超级用户postgres连接(请注意,超级用户名称可能在您的安装中不同。例如,在某些系统中它称为pgsql。)
psql -U postgres
或
psql -h 127.0.0.1 -U postgres
(请注意,使用第一个命令,您将不总是连接到本地主机)
-
重置密码(“将my_user_name替换为 postgres strong>,因为您正在重置 postgres strong>用户”)
ALTER USER my_user_name with password 'my_secure_password';
-
将旧的pg_hba.conf文件恢复为原样非常危险
cp pg_hba.conf-backup pg_hba.conf
-
重新启动服务器,以使用安全的pg_hba.conf文件运行
sudo /etc/init.d/postgresql restart
关于pg_hba文件的更多阅读:19.1.pghba.conf文件(官方文档)