linux下安装postgresql postgis - cytggit/Map-openlayers GitHub Wiki
- 安装:
rpm -Uvh https://yum.postgresql.org/9.6/redhat/rhel-7.2-x86_64/pgdg-centos96-9.6-3.noarch.rpm
yum update
yum -y install epel-release
yum install postgresql96-server postgresql96-contrib postgis2_96
- 初始化:
service postgresql-9.6 initdb
chkconfig postgresql-9.6 on service postgresql-9.6 start
service postgresql-9.6 restart
或者:
(systemctl enable postgresql-9.6)
(/usr/pgsql-9.6/bin/postgresql96-setup initdb (service postgresql initdb)
(systemctl start postgresql-9.6)
- 远程访问(防火墙设置):
setup打开5432的tcp(默认5432,可以不执行)
vim /etc/sysconfig/iptables
-A INPUT -m tcp -p tcp --dport 5432 -j ACCEPT
service iptables restart
或者:
(firewall-cmd --permanent --add-port=5432/tcp)
(firewall-cmd --permanent --add-port=80/tcp)
(firewall-cmd --reload )
(systemctl stop firewalld.service 关闭firewalld防火墙)
vi /var/lib/pgsql/9.6/data/pg_hba.conf
在该配置文件的host all all 127.0.0.1/32 md5行下添加以下配置,或者直接将这一行修改为以下配置
host all all 0.0.0.0/0 md5(或者trust)
vi /var/lib/pgsql/9.6/data/postgresql.conf
将该文件中的listen_addresses项值设定为“”,在9.0 Windows版中,该项配置已经是“”无需修改。 port取消注释。
service postgresql-9.6 restart (systemctl restart postgresql-9.6 )
- 修改初始密码
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'postgres';
退出命令:\q
service postgresql-9.6 restart
- 创建数据库&添加扩展
su postgres
createdb testdb
psql -d testdb -U postgres
create extension hstore;
create extension postgis;
\q & exit
- 误删lock文件
一般解决办法:
1)
psql -h 127.0.0.1
2)
pg_ctl stop -m fast -D $PGDATA
pg_ctl start -D $PGDATA
报错解决:
FATAL: could not open lock file "/tmp/.s.PGSQL.5432.lock": Permission denied
可能是lock文件默认在/tmp下,但是tmp没有访问权限,更改lock文件的生成路径(postgresql.conf)
- 数据库备份和还原(命令)
备份:
pg_dump --host ip --port 5432 --username "postgres" --role "postgres" --format tar --blobs --section pre-data --section data --section post-data --encoding UTF8 --inserts --column-inserts --verbose --file './moteDB20170720.backup' 'mote_basemap'
还原:
pg_restore ...
- 忘记用户密码
修改pg_hba.conf中的MD5为trust,重启postgresql,无密码登录后修改新密码,再把pg_hba.conf的MD5改回来
- 多数据库多表连接查询
1、create extension dblink;
2、例子(INSERT):
INSERT INTO point SELECT
A."name",
A.geom
FROM
dblink (
'host=127.0.0.1 dbname=test user=postgres password=postgres',
'SELECT "name",geom from point'
) AS A (
"name" TEXT,
"geom" geometry (Point, 4326),
);
- 存在多个pg报错
报错:
psql: symbol lookup error: psql: undefined symbol: PQsetErrorContextVisibility
解决:
ldd psql | grep libpq
mv /lib64/libpq.so.5 /lib64/libpq.so.5.bak
ln -sfn /usr/local/postgresql/lib/libpq.so.5 /lib64/libpq.so.5