本安装仅为初级测试版本,没有进行参数调整,不适合正式使用
1. 下载
https://www.postgresql.org/ftp/source/
本次选择最新版本11.2的源码
下载下来后解压上传至服务器
2. 创建用户
groupadd postgres
useradd -g postgres pg
passwd pg
3. 创建目录
等会源码安装和initdb会用到:
mkdir /pg
mkdir /pg/pghome
mkdir /pg/pgdata
chown -R pg:postgres /pg
解释:
/pg/pghome是存放bin等pg文件的目录,是软件的运行目录,变量名$PGHOME
/pg/pgdata是存放数据库文件的目录,变量名$PGDATA
4. 修改pg用户的bash_profile
在后面添加:
export PGHOME=/pg/pghome
export PGDATA=/pg/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
5. 开始源码安装
进入刚解压出来的pg源码包,在root用户下执行:
./configure --prefix=/pg/pghome
make
make install
这中间有可能会因为缺包报错停止,缺啥补啥,建议每次失败最好将整个目录删掉重新解压,防止前面已经产生的某些文件捣乱。
执行完成后会在$PGHOME有如下目录
[pg@dongsc pghome]$ ll
total 12
drwxr-xr-x 2 root root 4096 Mar 7 16:00 bin
drwxr-xr-x 4 root root 4096 Mar 7 16:00 include
drwxr-xr-x 4 root root 4096 Mar 7 16:00 lib
drwxr-xr-x 3 root root 24 Mar 7 16:00 share
6. 初始化库
[pg@dongsc pghome]$ initdb --encoding=utf8 --pgdata=/pg/pgdata
The files belonging to this database system will be owned by user "pg".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.utf8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /pg/pgdata ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
pg_ctl -D /pg/pgdata -l logfile start
此时会发现$PGHOME下出现了数据文件、配置文件等
7. 修改一下参数后启动库
参数文件是$PGDATA下的postgresql.conf,添加:
listen_addresses = '*'
修改$PGHOME/pg_hba.conf,添加,允许所有客户端连接,
host all all 0.0.0.0/0 trust
8. 启动数据库
[pg@dongsc pgdata]$ pg_ctl -D /pg/pgdata -l $PGDATA/logfile start
waiting for server to start.... done
server started
假如此处出现了问题,就去找上面命令中的logfile的位置,查看报错详情。
9. 进入数据库
[pg@dongsc pgdata]$ psql -d postgres
pg是类似mysql的多库结构,所以需要-d指定要进入的数据库,假如不指定-d,默认会进入系统用户名同名的库。所以假如你用其他用户名安装的话,可能会报错:
[pg@dongsc pgdata]$ psql
psql: FATAL: database "<你的系统用户名>" does not exist
创建用户,方便外部连接
postgres=# CREATE USER dongsc SUPERUSER CREATEDB CREATEROLE PASSWORD 'oracle';
10. 客户端连接
在其他机器上也安装pg,暂时使用psql测试,可以正常连接
psql --username=dongsc --host=192.168.115.20 --port=5432 -d postgres -W