一、下载安装
1.下载pgsql包
如下地址:
https://www.enterprisedb.com/download-postgresql-binaries
选择相应版本下载
此处选择了:
postgresql-10.1-1-linux-x64-binaries.tar.gz
2.安装
解压:
tar -xvzf postgresql-10.1-1-linux-x64-binaries.tar.gz
移到想要的目录方便安装:
mv psql /haoke/
So,pgsql的安装目录就是/haoke/pgsql
3.创建用户
useradd postgres
Password postgres
两次输入密码并确认
4.创建pgsql数据目录
mkdir /haoke/pgsql_data
给postgres用户授权目录访问权限:
chown postgres /haoke/pgsql_data/
5.切换到postgres用户
su postgres
6.修改~/.bash_profile
将pgsql的bin目录加到环境变量中
export PGDATA=/haoke/pgsql_data
source ~/.bash_profile
7.初始化数据库
/haoke/pgsql/bin/initdb -D /haoke/pgsql_data/
看到Success就成功了
8.启动数据库:
根据success后面的提示就可以开启数据库了
/haoke/pgsql/bin/pg_ctl -D /haoke/pgsql_data/ -l /haoke/logfile start
-l 指定的是log目录,没有就:
makedir /haoke/logfile
9.查看进程
ps -ef | grep postgres
10.查看监听情况
netstat -an | grep 5432
如果没成功,有一个很大的问题是新服务器没有启动5432端口
二、开启5432端口
示例是腾讯云服务器
linux指定开放端口:
vi /etc/sysconfig/iptables
添加:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
重启:
/etc/init.d/iptables restart
查看端口是否开放:
/sbin/iptables -L -n
三、设置远程访问
文件/haoke/pgsql_data/postgresql.conf中:
listening_address修改为:
listening_address: ‘*’
文件/haoke/pgsql_data/pg_hba.conf中:
host all all 0.0.0.0/0 trust
重启:
/haoke/pgsql/bin/pg_ctl -D /haoke/pgsql_data/ restart
此后即可从其它机器上登录,例如用pycharm 里 database 选择 PostgreSQL:
主机名或IP: ip地址
端口: 5432
初始数据库: 数据库名
用户: postgres
密码: postgres
如果没有数据库,看下面的命令
四、创建数据库
cd /haoke/pgsql/bin
执行:
./psql -h localhost -d 数据库名称 -U postgres -p 5432
就进入到:
交互式提示符:postgres=#
\l 可查看当前的数据库列表
创建数据库:
postgres=# CREATE DATABASE test WITH OWNER=postgres ENCODING=‘UTF-8’
\c test 可以切换到test数据库
创建表的语法:
CREATE TABLE student (
id integer NOT NULL,
name character(32),
number char(5),
CONSTRAINT student_pkey PRIMARY KEY (id)
);
\d 可以查看当前数据库下的所有表
\d 表名 可以查看表的详细信息,有字段名称类型等
插入数据的语法:
INSERT INTO student (id, name, number) VALUES (1, ‘张三’, ‘1023’);
\q 退出交互式界面
五、备份及恢复数据库
如果需要使用命令先在本地备份数据库:
pg_dump -h localhost -p 5432 -U postgres -f 保存文件名称.sql 数据库名称
-h 后面是本地数据库ip地址
-U 用户名
-f *.sql是生成文件的名字
备份成功后,将*.sql文件上传到服务器,并恢复:
psql -h localhost -p 5432 -U postgres -f 收到的文件名.sql 准备放入到服务器数据库的名称
-h 还是localhost,表示服务器本地