postgresql 密码修改,忘记密码进行修改重置
- 1、密码修改缘由
- 2、修改密码的方式
- 方式1
- 方式2
- 3、忘记密码重置
1、密码修改缘由
1、客户端认证方式为密码验证,设置初始密码,则会涉及到修改密码
2、忘记了数据库登录密码,则会涉及到修改密码
2、修改密码的方式
方式1
安全地修改密码:
使用psql,连接到Postgres Server:
1、远程ssh连接到服务器
ssh user@192.168.0.100
# 命令使用参数说明:NAMEssh — OpenSSH SSH client (remote login program)SYNOPSISssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file][-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address][-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address][-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command]
2、切换到postgres用户
su postgres
3、连接数据库
psql -p 5432 -h localhost
pguser=> \password
Enter new password:
Enter it again:
pguser=>
我将原密码123456
,修改为u123456
这种修改方式相当于向Postgres Server 发送了如下命令:
ALTER USER postgres PASSWORD ' bebd6e154c9e92bcb8f7228384b1ba30' ;
后面的字符串是 u123456
经过md5加密后的字符串
注意:为避免字典攻击,建议使用复杂认证密码。
方式2
可以直接发送sql修改:
这种方式不仅仅限于psql了,其余客户端也能修改,如pgAdmin,navicat,DBeaver等
ALTER USER pguser PASSWORD 'password123' ;
弊端:通过sql修改,有可能会将修改语句记录在相关工具的log里。
例如:通过psql
运行该条sql,则在.psql_history
文件中会有相应语句的记录
有密码泄露的风险
3、忘记密码重置
解决方法:
1、关闭数据库服务
2、进入数据库的工作空间目录 (postgresql目录下的 data
目录)
3、编辑修改文件 pg_hba.conf
, 把连接权限设置的 md5 加密方式 改成 trust
# TYPE DATABASE USER ADDRESS METHOD# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
↓
# TYPE DATABASE USER 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
4、重新启动postgresql数据库服务
5、可以不用密码就能用postgres用户登陆,然后执行修改用户密码的操作
alter user postgres with password 'password12345';
6、修改 pg_hba.conf
文件,改回到 md5 方式
7、重启数据库服务