hil*_*arl 185 postgresql forgot-password postgresql-9.1
我忘了或错误输入(在安装过程中)密码给Postgres的默认用户.我似乎无法运行它,我收到以下错误:
psql: FATAL: password authentication failed for user "hisham"
hisham-agil: hisham$ psql
Run Code Online (Sandbox Code Playgroud)
是否有重置密码或如何创建具有超级用户权限的新用户?
我是Postgres的新手,刚刚第一次安装它.我正在尝试使用它与Rails,我正在运行Mac OS X Lion.
Ars*_*en7 335
找到文件pg_hba.conf- 它可能位于,例如在/etc/postgresql-9.1/pg_hba.conf.
cd /etc/postgresql-9.1/
把它备份
cp pg_hba.conf pg_hba.conf-backup
放置以下行(作为第一个未注释的行,或作为唯一的行):
sudo /etc/init.d/postgresql restart
重启你的PostgreSQL服务器(例如,在Linux上:)
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
要么
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.conf
进一步阅读 pg_hba文件:http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html
Sae*_*aeX 91
从命令行连接到postgres时,不要忘记添加-h localhost为命令行参数.如果没有,postgres将尝试使用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
Run Code Online (Sandbox Code Playgroud)
失败:
# psql -U postgres -W
Password for user postgres:
psql: FATAL: Peer authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)
使用-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=#
Run Code Online (Sandbox Code Playgroud)
Sai*_*irl 70
在pg_hba.conf(C:\Program Files\PostgreSQL\9.3\data)文件发生了变化,因为这些答案中给出.在Windows中,对我来说有用的是打开文件并将METHODfrom 更改md5为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
Run Code Online (Sandbox Code Playgroud)
然后,使用pgAdmin III,我使用无密码登录并postgres'通过转到更改用户密码File -> Change Password
小智 28
这是我参考的文档:How can I Reset a PostgreSQL password?
\n打开 cmd 并转到C:\\Program Files\\PostgreSQL\\12\\data。\n这通常是正确的路径。您可能将其存储在其他地方。请注意,如果您有不同的 PostgreSQL 版本,则会有不同的数字。那没关系。
找到一个pg_hba.conf文件并将其复制到其他地方(这样您将拥有该文件的未修改版本,因此您可以在我们进行一些更改后查看它)
\n打开pg_hba.conf文件(不是备份,而是原始的)
\n找到文件底部附近以 host 开头的多行:
\nhost all all 127.0.0.1/32 md5\n\nhost all all ::1/128 md5\n\nhost replication all 127.0.0.1/32 md5\n\nhost replication all ::1/128 md5\nRun Code Online (Sandbox Code Playgroud)\n将md5替换为trust:
\nhost all all 127.0.0.1/32 trust\n\nhost all all ::1/128 trust\n\nhost replication all 127.0.0.1/32 trust\n\nhost replication all ::1/128 trust\nRun Code Online (Sandbox Code Playgroud)\n关闭该文件
\n转到 Windows 上的搜索栏并打开服务应用程序。找到postgres并重新启动它。
\n\n在cmd中写入cd..,然后写入cd bin。你的路径应该是C:\\Program Files\\PostgreSQL\\12\\bin
进入:psql -U postgres -h localhost
输入:ALTER USER postgres with password \'<your new password>\';确保包含 ; 最后应显示 \n\xe2\x80\x9cALTER ROLE\xe2\x80\x9d 以指示上一行已成功执行
打开原来的pg_hba.conf文件并从trust改回md5
\n像以前一样使用服务应用程序重新启动服务器
\nDan*_*iel 12
只需注意,在Linux上你可以简单地运行sudo su - postgres成为postgres用户,并从那里改变使用psql所需的内容.
为最新的 postgres 版本 (>10) 添加 Windows 用户的答案,
去你的postgres安装位置,搜索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
#..
Run Code Online (Sandbox Code Playgroud)
将方法从 md5 更改为信任,
# 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
# ...
Run Code Online (Sandbox Code Playgroud)
现在转到您的 SQL Shell(PSQL) 并将所有内容留空,
Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]:
Run Code Online (Sandbox Code Playgroud)
这次不会要求输入密码,你就登录了,
现在运行这条线,
ALTER USER yourusername WITH SUPERUSER
现在你可以用 \q 离开 shell
再次转到文件 pg_hba.conf 并再次将 METHOD 从 trust 更改为 md5,并保存它。
现在使用您的新用户和密码登录,您可以检查 \du 的属性。
编辑文件/etc/postgresql/<version>/main/pg_hba.conf并找到以下行:
local all postgres md5
Run Code Online (Sandbox Code Playgroud)编辑线和变化md5在年底trust和保存文件
重新加载PostgreSQL服务
$ sudo service postgresql reload
Run Code Online (Sandbox Code Playgroud)这将加载配置文件。现在,您可以postgres通过登录psql外壳来修改用户
$ psql -U postgres
Run Code Online (Sandbox Code Playgroud)更新postgres用户密码
alter user postgres with password 'secure-passwd-here';
Run Code Online (Sandbox Code Playgroud)编辑文件,/etc/postgresql/<version>/main/pg_hba.conf然后更改trust回md5并保存文件
重新加载PostgreSQL服务
$ sudo service postgresql reload
Run Code Online (Sandbox Code Playgroud)验证密码更改是否有效
$ psql -U postgres -W
Run Code Online (Sandbox Code Playgroud)我在Windows 10上遇到了这个问题,而我的问题是我正在运行psql,并且默认情况下尝试使用Windows用户名(“ Nathan”)登录,但是没有该名称的PostgreSQL用户,并没有告诉我。
因此解决方案是运行,psql -U postgres而不只是运行psql,然后我在安装时输入的密码起作用。
| 归档时间: |
|
| 查看次数: |
355370 次 |
| 最近记录: |