postgresql创建用户和库

2017-09-03  本文已影响0人  天秤座的牛宝宝

环境

过程

在服务器上安装了postgresql后,确认5432端口成功被监听,却无论如何都连不上数据库,在这里浪费了超过2小时的时间,最后才解决了问题,正确的过程整理如下:

1.在centos终端中输入以下代码,以postgres用户登陆终端

root:# su - postgres

(因为postgres的管理器会以当前用户名为user名称进行登陆,由于默认postgres没有root名称的user,所以会报错)

2.创建名称为dbuser的新用户

-bash-4.2$ createuser -s dbuser

-s 的意思是以superuser的身份创建用户dbuser

3.使用刚才新建的用户来创建数据库mydb

$ createdb -O dbuser mydb

4.对 dbuser 用户加上密码
dbuser 的身份登录 postgresql

psql -U dbuser -d mydb

其中 -U 的意思是以用户某某来登录, -d 的意思是链接 mydb 这个数据库

登录成功后,终端符号会变成 mydb=#,我们输入

mydb=# \password

连续输入两次密码即可

网上的大多数文章只能帮你到这了,但是你会发现,根本连不上postgres,不管是本机,还是网络中的其他机器,在花费了不少时间后,我发现了第5步

5.修改postgres的配置文件
默认安全策略下postgres是禁止机器访问的,需要修改

# vim /var/lib/pgsql/9.6/data/pg_hba.conf

在这个文件的末尾处,修改如下

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

修改了配置后,需要重启 postgresql 服务,然后就可以很顺畅地链接了
6.通过远程地址访问postgresql
如果你想要通过非本机来访问pg,那么还需要修改postgresql.conf,我的路径为

# vim /var/lib/pgsql/9.6/data/postgresql.conf

将`listen addresses = 'localhost' 这一行(原文被注释了)修改为

# etc...
listen addresses = '*'
# etc...

这样的话,数据库变为监听任何发往本机指定端口的信息了


小贴士

全局搜索

如果你没有 pg_hba.conf 这个目录,可以通过

find / -name "pg_hba.conf"

来搜索这个文件

重启 postgresql 服务的方法

systemctl reload postgresql-9.6.service
/usr/pgsql-9.6/bin/pg_ctl reload

关闭iptables

如果你的服务器在更高层面上有安全组之类的设置,那么基本上就可以关掉iptables了
1.关闭iptables

 systemctl stop firewalld.service

2.禁止开机启动

 systemctl disable firewalld.service

感谢以下文章给予的帮助
PostgreSQL新手入门(阮一峰)
Getting authentication failed error with postgresql from command line

上一篇下一篇

猜你喜欢

热点阅读