今天我在用命令行登陆postgresql的时候,忽然忘记密码了,重试了n次还是不行,然后我就试着上网找解决之道,最后完美的解决了,可是后来我才发现还有个更简单的方法,该篇博客用来记录自己沙雕行为。
工具已登陆
这个就是最简单的方法,你有工具登陆过,完全可以通过工具来修改(可是我当时完全没想到这个。。。),我是通过navicat来连接的,可以直接通过navicat来修改步骤如下:
1、连接数据库
2、点击角色
3、选择角色
4、填入新密码
5、保存之后,关闭连接,编辑连接就ok了。
工具未登录
windows
1、找到postgresql安装目录下的data,打开文件夹,找到pg_hba.conf
ps:如果大家找不到,那我推荐一个文件搜索神器:listary,大家可以去试试,贼好用
2.用记事本格式打开,拉到最下面,找到所有md5,全都改为trust
3.重启数据库,然后连接数据库,不输入密码,直接点连接,此时连接成功
ps:在windows的控制面板中,找到管理工具,然后找到服务:postgresql,点击右键 ,重启就行了。
4.修改密码
在客户端修改
1
|
alter user postgres with password 'your password'
|
5.或者重新打开pgadmin(即数据库),连接服务器,不输入密码,直接点连接,此时连接成功
6.修改密码,右键登陆角色中要修改密码的账户,打开属性,点击定义,输入密码,然后确定,此时修改密码成功。如果重新打开定义会发现密码栏里依旧空白,但此时密码已是新密码。
7,最后将第一二步中的trust改回md5。重新启动数据库,输入密码,成功连接服务器。
linux
如果是linux下的话:
1、找到pg_hba.conf路径
运行
1
|
ps ax | grep postgres | grep -v postgres:
|
得到:
1
2
3
|
25653 pts/0 s+ 0:00 /usr/lib/postgresql/9.3/bin/psql -h 192.168.10.10 -p 5432 -u postgres -w
26679 ? s 0:00 /usr/lib/postgresql/9.3/bin/postgres -d /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf
26924 pts/7 r+ 0:00 grep --color=auto postgres
|
注意结果中有一个config_file,而config_file=/etc/postgresql/9.3/main/就是我们配置所在地
2、无密码postgres登录
修改pg_hba.confg
1
2
3
4
5
6
7
8
|
#原来是
host all all 127.0.0.1/32 md5
# ipv6 local connections:
host all all ::1/128 md5
#改成
host all all 127.0.0.1/32 trust
# ipv6 local connections:
host all all ::1/128 md5
|
ps:如果你重启之后还是登陆不了,也可以将全部md5修改为trust
重启postgresql服务
1
|
sudo service postgresql restart
|
登录
1
|
psql -h 127.0.0.1 -u postgres
|
3、登录修改密码
修改密码
1
|
alter user postgres with password 'your password'
|
最后将pg_hba修改回去就好啦,也就是将所有的trust还原为md5。
补充:centos 8 docker安装postgresql修改密码,远程访问设置
一,修改密码
1,进入容器
1
|
docker exec -it 834f03380346 bash
|
2,修改密码
二,远程访问设置
1,修改配置文件
1)、修改pg_hba.conf文件
配置用户的访问权限(#开头的行是注释内容):
1
2
3
4
5
6
7
8
|
# type database user cidr-address method
# "local" is for unix domain socket connections only
local all all trust
# ipv4 local connections:
host all all 127.0.0.1/32 trust
host all all 0.0.0.1/0 md5
# ipv6 local connections:
host all all ::1/128 trust
|
2)、修改postgresql.conf文件,将数据库服务器的监听模式修改为监听所有主机发出的连接请求。
定位到#listen_addresses = 'localhost'。postgresql安装完成后,默认只接受来自本机localhost的连接请求。
将行开头都#去掉,将行内容修改为listen_addresses = '*'来允许数据库服务器监听来自任何主机的连接请求!
2,修改入站规则
1),firewall-cmd --zone=public --add-port=5432/tcp --permanent
2),firewall-cmd --reload
3,关闭防火墙
1
|
systemctl stop firewalld.service
|
4,重启docker
1
|
systemctl restart docker.service
|
5,开启防火墙
1
|
systemctl start firewalld.service
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/qq_36196879/article/details/96288907