初学者搭了一天才把环境搭好,汗颜。。记录一下踩坑历程。——参考资料:PostgreSQL实战(谭峰等著)
我使用的是通过源码编译安装!
一、安装pg10:
1.1下载源码:
可以去官网下载https://www.postgresql.org/ftp/source/ 找到对应的版本下载即可,没什么好说的。
也可以直接输入以下命令下载:
wget https://ftp.postgresql.org/pub/source/v10.0/postgresql-10.0.tar. gz
下载完解压 tar -xvf postgresql-10.0.tar.gz
1.2运行configure程序配置编译选项
运行configure程序之前,需要先准备好编译环境和安装必要的包:
[root@localhost /]# yum groupinstall "Development tools
[root@localhost /]# yum install -y bison flex readline-devel zlib-devel
安装完毕后进入源代码目录中运行 configure --help命令可以查看支持的配置编译选项;
常用的编译选项有:
①--prefix=PREFIX:指定安装目录,默认的目录在/usr/local/pgsql。
②--includedir=DIR:指定C和C++的头文件目录,默认的安装目录为: PREFIX/include。
③--with-blocksize=BLOCKSIZE:指定数据文件的块大小,默认是8kb。在OLAP场景下可以适当增加这个值到32kb,以提高OLAP 的性能,但在OLTP场景下建议使用默认值。
先进入源代码目录中:cd postgresql-10.0
其次运行配置编译选项: . /configure prefix=/opt/pg10/ --with-pgport=1921
在这里将默认安装目录更改为/opt/pg10 端口号指定为1921。
1.3编译安装:
在源代码目录中执行 gmake 进行编译 ,当看到最后一行的输出为 All of PostgreSQL successfully made. Ready to install.说明已经编译成功
随后执行 gmake install 进行安装。当看到最后一行的输出为 PostgreSQL installation complete 说明安装成功。
查看安装的pg版本的命令是: /opt/pg10/bin/postgres --version 注意 这里的/opt/pg10是你指定安装的目录,若未指定则为:/usr/local/pgsql
1.4创建软连接
创建一个/opt/pgsql 的软链接指向当前版本。
ln -s /opt/pg10 /opt/pgsql
当进行了版本变更之后,不需要调整大量的脚本,只需要修改这个软链接即可,在下文中我们都会使用它。
通过上面的步骤已经成功的安装了PostgreSQL数据库!
二、创建数据库实例
2.1创建操作系统用户
创建用户和用户组的命令如下所示:
groupadd -g 1000 postgres
useradd -g 1000 -u 1000 postgres
2.2创建数据目录
它用来存放数据文件和数据库实例的配
置文
件,可以把这个目录创建到任何你认为合适的位置。
创建/pgdata/10/data作为数据目录。
mkdir -p /pgdata/10/data
其次修改权限
: chown -R postgres.postgres /pgdata/10
chmod 0700 /pgdata/10/data
2.3初始化数据目录
实例化
数据目录使用
initdb
工具。
initdb
工具
将创建
个新的数据库目录 (
这个目录包括存放数据库数据的目录),创建t
mplatel 和
postgres
数据库,初始
该数据库实例区域的默认区域和字符集编码
。
可以通过
/opt/pgsql/bin/initdb --help来查看initdb命令的语法
执行
/opt/pgsql/bin/initdb - D /pgdata/10/data -W 即可完成数据目录初始化!
三、启动和停止数据库服务器
3.1使用service方式
1.启动数据库服务:
service postgresql-10 start
2.查看数据库运行状态:
service postgresql-10 status
3.停止数据库服务:
service postgresql-10 stop
注意,由于我们是通过源码编译安装的,并没有配置服务脚本,所以目前来说使用service还无法启动,会报找不到postgresql-10的服务错误。
所以
我们应该先去配置服务脚本,再运用上述命令启停pg数据库。
①首先进入下载好的源码包,在源码包的contrib目录中有Linux,FreeBSD,OSX适用的服务脚本,这里选择Linux即可。
cd postgresql-10.0/contrib/start-script/
②将名称为Linux的脚本拷贝到/etc/init.d目录中,将脚本重命名为postgresql-10,并赋予可执行权限。
cp linux /etc/init.d/postgresql-10
注意,由于之前我们更改了默认安装路径是/opt/pg10 ,所以应该vim进入拷贝好的脚本修改路径以便可以正确的找到 postgreMaster。
vim /etc/init.d/postgresql-10
找到prefix,将路径修改为之前安装好的,用软链接代替也可。PGDATA也要修改为你设置好的路径!
③赋予脚本可执行权限。
chmod +x /etc/init.d/postgresql-10
最好设置为开机启动:
chkconfig postgresql-10 on
此时就可以用过service来进行数据库启动停止等操作了。
3.2使用pg_ctl进行管理
pg_ctl是PostgreSQL中初始化数据目录,启动,停止,重启,重加载数据库服务,或者查看数据库服务状态的工具,相比service或systemctl的管理方式,pg_ctl提供了丰富的控制选项,执行pg_ctl命令需要将操作系统用户切换为postgres用户。
1. 启动数据库
su postgres
/opt/pgsql/bin/pg_ctl -D /pgdata/10/data start
2.查看数据库运行状态
su postgres
/opt/pgsql/bin/pg_ctl -D /pgdata/10/data status
还可以使用pg_isready工具来检测数据库服务器是否已经允许接受连接:
/opt/pgsql/bin/pg_isready -p 1921
3.停止数据库
su postgres
/opt/pgsql/bin/pg_ctl -D /pgdata/10/data -ms stop
其中 -ms代表以smart模式停止,-mi以immediate模式停止,-mf以fast模式停止,默认为fast。
四、允许远程访问数据库
1.postgresql.conf
vim /pgdata/10/data/postgresql.conf
将listen_addresses后的引号localhost改为*号,并且去掉前面的#
完成后重启数据库使配置生效
service postgresql-10 restart
2.pg_hba.conf
vim /pgdata/10/data/pg_hba.conf
在文件末尾添加 host all all 0.0.0.0/0 md5 即可
修改完毕后需要reload使之生效
/opt/pgsql/bin/pg_ctl -D /pgdata/10/data/ reload
3.开启防火墙端口
centos6并未对外开启1921端口,同样的默认端口5432也未开启。
/sbin/iptables -I INPUT -p tcp --dport 1921 -j ACCEPT
/etc/init.d/iptables save
service iptables restart
至此,centos中配置完毕。
五、windows下连接虚拟机中的数据库
1.下载
2.安装 非常简单
3.配置
启动后点击add new server
在Name里随便起个名字,然后点击Connection
按照要求配置好即可。
连接好后应是下图所示界面。
至此一切就绪,,,终于可以愉快的学习了!