主要参照这篇文章:http://m.blog.youkuaiyun.com/article/details?id=8314216
还有这篇:http://m.blog.youkuaiyun.com/article/details?id=51422691
一、首先使用sudo apt-cache search all | grep postgresql
发现库里只有9.3版本的postgresql
下载9.6版本bz2包解压缩
tar jxvf postgresql-9.6.2.tar.bz2
二、安装依赖
sudo aptitude install libreadline6-dev
sudo apt-get install gcc
sudo apt-get install zlib1g-dev
三、使用源码方式安装
./configure
make
sudo make install
四、运行命令
sudo adduser postgres
passwd:pgsys
sudo mkdir /usr/local/pgsql/data
sudo chown postgres /usr/local/pgsql/data/
sudo su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data > logfile 2>&1 &
作为服务重新启动
#service postgresql restart
五、不能连接Postgresql数据库5432端口的问题
第一步:PostgreSQ数据库为了安全,它不会监听除本地以外的所有连接请求,当用户通过JDBC访问是,会报一些如下的异常:org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host
pgAdmin登录时也会报错:
FATAL: no pg_hba.conf entry for host "218.10.12.207", user "postgres", database "testdb", SSL off FATAL: no pg_hba.conf entry for host "218.10.12.207", user "postgres", database "testdb", SSL on
要解决这个问题,windows下只需要在PostgreSQL数据库的安装目录下找到/data/pg96/pg_hba.conf,
linux下vim /etc/postgresql/9.3/main/pg_hba.conf
找到
# IPv4 local connections:
host all all 127.0.0.1/32 md5
在其下加上请求连接的机器IP
host all all 218.10.12.207/32 md5
32是子网掩码的网段,用32表示该IP被固定,用24表示前3位固定,后面一位可以由自己设;md5是密码验证方法,
例:如果为“host all all 192.168.91.1/24 md5” ,则前3位ip地址与该设定相同的计算机就可以访问postgresql数据库。
下面这句没有使用也能连接:
找到“# IPv4 local connections:”(不包括引号,下同)
在它上面添加“local pgsql all trust”,
第二步:如果报错 could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "120.92.82.112" and accepting TCP/IP connections on port 5432?
vim /etc/postgresql/9.3/main/postgresql.conf
找到“#listen_addresses = 'localhost'”,把它改成“listen_addresses = '*'”。修改listen_addresses为对外的interface的ip地址似乎也可以
这样,postgresql就可以监听所有ip地址的连接。
第三步:重启postgresql服务。如果系统启用了防火墙,请先关闭。
sudo ufw disable
关闭防火墙也不好使
nmap iptables
对了,如果要使用pgadmin连接远程的数据库服务器,须在SSL的选项中选择允许。
第四步:使用telnet测试端口号是否开放,如果系统提示不能识别telnet则需要在控制面板-程序和功能-打开或关闭windows功能中勾选telnet客户端
telnet 120.92.82.111 5432
查看端口状态
netstat -tanp
netstat -an | grep 5432
其中t代表TCP协议的套节字链接,除了t之外还有u(UDP)、w(RAW)、x(UNIX)套节字。
a代表全部(all),这个所谓的全部就是指包括正在监听的端口。某时某刻,有些被打开的端口正在传输据,而有的则只是在监听。
n:直接显示端口号,而不是根据“/etc/server”显示端口对应的服务名称
p:显示占用该端口号的进程。
l:显示正在被监听的端口。
查看完了也没用,实用的是找PID,然后kill
lsof -i:5432
六,postgresql使用相关
1,修改PostgreSQL数据库默认用户postgres的密码
PostgreSQL数据库创建一个postgres用户作为数据库的管理员,密码随机,所以需要修改密码,方式如下:
步骤一:登录PostgreSQL
sudo -u postgres psql
步骤二:修改登录PostgreSQL密码
ALTER USER postgres WITH PASSWORD 'postgres';
注:密码postgres要用引号引起来
命令最后有分号
步骤三:退出PostgreSQL客户端
\q
2,修改linux系统postgres用户的密码
PostgreSQL会创建一个默认的linux用户postgres,修改该用户密码的方法如下:
步骤一:删除用户postgres的密码
sudo passwd -d postgres
步骤二:设置用户postgres的密码
sudo -u postgres passwd
系统提示输入新的密码
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
3,切换用户postgres连接数据库,使用psql命令行方式
sudo -u postgres psql
可以用图形化界面连接管理数据库
下载地址:https://www.postgresql.org/ftp/pgadmin3/pgadmin4/v1.2/windows/
还有windows版的postgresql
下载地址:https://www.bigsql.org/postgresql/installers.jsp
PostgreSQL快速入门:psql工具的使用:http://www.open-open.com/lib/view/open1451809003901.html