Linux环境CentOS中源码编译安装PostgreSQL
技术支持服务电话:15308000360 【7x24提供运维服务,解决各类系统/软硬件疑难技术问题】
PostgreSQL版本: postgresql-9.6.2.tar.gz
数据存放目录: /datafile/pgdata
软件安装位置: /usr/local/postgresql
安装步骤及脚本:
安装依赖环境
yum install -y gcc-c++ libxml2 libxml2-devel zlib zlib-devel libxslt libxslt-devel openssl openssl-devel systemtap-sdt-devel.x86_64 perl-ExtUtils-Embed readline readline-devel pam pam-devel tcl tcl-devel openldap openldap-devel python python-devel创建用户和组
groupadd postgres useradd -g postgres postgres解压
tar zxvf postgresql-9.6.2.tar.gz cd postgresql-9.6.2配置
./configure --prefix=/usr/local/postgresql --with-pgport=5432 --with-perl --with-python --with-tcl --with-openssl --with-pam --without-ldap --with-libxml --with-libxslt --enable-thread-safety --with-wal-blocksize=16 --with-blocksize=16 --enable-dtrace --enable-debug编译安装
make && make install安装contrib目录下的一些工具,是第三方组织的一些工具代码,建议安装 打开 postgresql-9.6.2/contrib
make && make install创建postgres数据库的目录
mkdir -p /datafile/pgdata chown postgres:postgres /datafile/pgdata/* chown postgres:postgres /usr/local/postgresql/* chmod -R 775 /datafile/pgdata/*切换用户
su postgres添加环境变量,并使之生效(初级用户请自行学习设置)
vi ./.bash_profile添加以下内容:
# add PG env export PGHOME=/usr/local/postgresql export PGDATA=/datafile/pgdata export PATH=$PGHOME/bin:$PATH export MANPATH=$PGHOME/share/man:$MANPATH export LANG=en_US.utf8 export DATE=`date +"%Y-%m-%d %H:%M:%S"` export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH alias rm='rm -i' alias ll='ls -lh' #alias pg_start='pg_ctl start -D $PGDATA' #alias pg_stop='pg_ctl stop -D $PGDATA -m fast' #psql -h 主机名 -p 端口号 -U 用户名 -W(强制口令提示) [-d]数据库名 #psql -h $GHOST -p $PGPORT -U $PGUSER -W -d $PGDATABASE #PGHOST 设置数据库服务器名。 如果它以一个斜杠开头,那么它声明一个 Unix 域套接字而不是 TCP/IP 通讯; 其值就是该套接字文件存储的目录(在缺省安装中,这个目录会是 /tmp) #export PGHOST=$PGDATA export PGHOST=localhost #PGPORT 设置 TCP 端口号或者设置与 PostgreSQL 通讯的 Unix 域套接字的文件扩展。 export PGPORT=5432 export PGUSER=postgres #用于与数据库连接的用户名,initdb -U posgtres指定 #export PGDATABASE=demo#数据库名修改环境变量后,可以重新登录该用户或者source .bash_profile让环境变量生效。 测试一下:
[postgres@localhost ~]$ source .bash_profile [postgres@localhost ~]$ psql -V psql (PostgreSQL) 9.6.2初始化数据库
initdb -D $PGDATA -E UTF8 --locale=C -U postgres -W #或则 initdb -D /datafile/pgdata看到如下提示信息,表示初始化成功,下一步可以启动数据库了。
Success. You can now start the database server using: postgres -D /db/pgdata or pg_ctl -D /db/pgdata -l logfile start启动服务
pg_ctl start -D $PGDATA -l pgsql.log #或则 pg_ctl -D /datafile/pgdata -l /datafile/pgdata/logfile start查看数据库状态:
[postgres@localhost ~]$ pg_ctl status关闭数据库
[postgres@localhost ~]$ pg_ctl stop -D $PGDATA登录数据库: 使用"psql 数据库名"登录数据库。缺省数据库名时,连接到默认的数据库postgres。
[postgres@localhost ~]$ psql使用PostgreSQL数据库命令行交互工具psql登录数据库后,可以执行SQL命令或者psql提供的元命令。使用\?可以查看psql的所有元命令和功能说明。
登录数据库后,命令行提示符为"数据库名=#",如:"postgres=#"。
登录后,psql常用的元命令:
\?, 查看psql所有可以使用的元命令和说明信息;
\l,列出所有的数据库信息;
\c demodb, 连接到demodb数据库;
\c[onnect] [数据库名称|- 用户名称|- 主机|- 端口|-], 连接到新的数据库;
\d, 列出表,视图和序列;
\d 名称, 描述表,视图,序列,或索引;
\db [模式], 列出表空间
\di [模式], 列出所有索引;
\dt [模式], 列出所有表;
\dT [模式], 列出数据类型
\h, 列出所有的SQL命令;
\h select, 列出select语句的语法;
\i file, 执行来自file的命令;
\q, 退出psql;
select * from pg_stat_activity; 显示当前活动任务列表.
创建测试数据库
create database testone;切换到testone 数据库
\c testone创建测试表
create table testone (id integer, name text);插入测试数据
insert into testone values (1,'testone');选择数据
select * from testone ;删除数据库
[postgres@localhost ~]$ dropdb test;修改linux 系统用户postgres 的密码
passwd postgresPostgresSQL 数据库配置实现远程访问,修改 postgresql.conf 文件
vi /datafile/pgdata/postgresql.conf设置允许远程连接,修改客户端认证配置文件pg_hba.conf,将需要远程访问数据库的IP地址或地址段加入该文件
vi /datafile/pgdata/pg_hba.conf找到
host all all 127.0.0.1/32 trust把上面的信息改成以下内容
host all all 0.0.0.0/0 trust#设置监听整个网络,查找“ listen_addresses ”字符串
vi /datafile/pgdata/postgresql.conf修改为如下:
listen_addresses = '*'重启服务
pg_ctl -D /datafile/pgdata -l /datafile/pgdata/logfile restart停止服务
pg_ctl -D /datafile/pgdata -l /datafile/pgdata/logfile stop查看端口是否启用
netstat -anp | grep 5432