1、查找配置文件位置 find / -name pg_hba.conf
2、修改配置文件 改为 无需密码登陆的方式 (步骤001)
3、执行密码修改(步骤002)
4、如果修改没有权限,需要先切换用户 ()
5、重新执行密码修改
6、恢复配置,重启服务
【解决方法】:
1、关闭数据库服务
2、进入数据库的工作空间目录 (如果是建库是没有另外指定,应该就是postgresql安装目录下的 data 目录)
3、编辑修改文件 pg_hba.conf, 把连接权限设置的 md5 加密方式 改成 trust
以我的为例,原本设置是
# TYPE DATABASEUSERADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
hostall all 127.0.0.1/32md5
修改为
# TYPE DATABASEUSERADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
hostall all 127.0.0.1/32trust
4、从新启动postgresql数据库服务
5、可以不用密码就能用postgres用户登陆,然后执行修改用户密码的 *** 作
alter user postgres with password 'foobar'
6、报错无权限,需要切换到对应有权限的用户下,再执行步骤5;
【注】修改时你可能会报错:
postgres=>alter user postgres with password '111111'
ERROR: must be superuser to alter replication users
参考:用户切换
7、修改 pg_hba.conf 文件,改回到 md5 方式,再重启数据库服务就ok了
【postgresql 】使用\c 命令切换数据库和用户
切换数据库:\c [database_name]
切换用户:\c - [user_name]
先连上用户postgres、数据库postgres
$ su - postgres
Last login: Wed Mar 1 13:16:48 CST 2017 on pts/1
-bash-4.2$ psql
psql (9.2.18)
Type "help" for help.
postgres=#
切换数据库
postgres=# \c zzj_db
You are now connected to database "zzj_db" as user "postgres".
zzj_db=#
切换用户
zzj_db=# \c - zzj_user
Password for user zzj_user:
You are now connected to database "zzj_db" as user "zzj_user".
zzj_db=>
直接登录相应的用户就可以了。步骤:直接在命令行输入sql>conn username/password;即可完成切换.
解释:每个用户都只能默认一个数据库,不可能出现多个数据库。所以直接切换到需要的用户下即可完成 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)