天天看点

PostgreSQL安装手册

本文讲述linux生产环境(rhel5.5 kernel2.6.32)下安装postgresql9.5.2的过程。安装所有contrib扩展,安装python扩展。

安装详细细节,或者其他需求请参考官方文档安装说明:

<a href="http://www.postgresql.org/docs/9.5/interactive/installation.html">http://www.postgresql.org/docs/9.5/interactive/installation.html</a>

postgresql的依赖都比较常见,一般系统中均已自带:

gnu make 3.8+,iso/ansi c compiler,tar, zlib, gnu readline lib 6。

gnu readline lib

这里提一下gnu readline lib。这个主要是用于psql shell一些查看历史记录之类功能。

如果安装的时候因为readline报错了,可以在configure的时候用—without-readline去掉。

anaconda

安装python扩展需要python解释器,libpython,和python头文件。

这里以使用anaconda发行版安装python:

执行bash anaconda2-4.0.0-linux-x86_64.sh

依据提示选择安装路径。这里为/usr/local/anaconda,没有权限请sudo。

等待安装完成,将anaconda目录下bin, inlucde, lib目录分别加入各自的搜索路径中。

<code>export path="/usr/local/anaconda/bin/:$path"</code>

<code>export c_include_path="/usr/local/anaconda/include/:$c_include_path"</code>

<code>export cplus_include_path="/usr/local/anaconda/include/:$cplus_include_path"</code>

<code>export ld_library_path="/usr/local/anaconda/lib/:$ld_library_path"</code>

<code>export library_path="/usr/local/anaconda/lib/:$library_path"</code>

<code># 编译安装主体</code>

<code>tar -jxf postgresql-9.5.2.tar.bz2</code>

<code>cd postgresql-9.5.2</code>

<code>./configure python=/usr/local/anaconda/bin/python --with-python</code>

<code>make -j8</code>

<code>sudo make install</code>

<code>make install-docs</code>

<code></code>

<code># 编译安装标准扩展</code>

<code>$ cd contrib</code>

<code>$ make -j8</code>

<code>$ sudo make install</code>

<code># 创建一个用户,postgres主进程应当由一个独立的用户持有。</code>

<code>$ adduser postgres</code>

<code># 创建一个数据目录,并指定上面创建的用户所有</code>

<code>$ mkdir /usr/local/pgsql/data</code>

<code>$ chown postgres /usr/local/pgsql/data</code>

<code>$ su - postgres</code>

<code># 初始化数据目录</code>

<code>$ /usr/local/pgsql/bin/initdb -d /usr/local/pgsql/data</code>

<code>$ 启动数据库</code>

<code>/usr/local/pgsql/bin/postgres -d /usr/local/pgsql/data &gt;logfile 2&gt;&amp;1 &amp;</code>

<code># 另一种启动数据库的方式是使用pg_ctl,推荐这种方式:</code>

<code>$ /usr/local/pgsql/bin/pg_ctl init -d /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile</code>

<code># 最后通过pg_ctl启动数据库</code>

<code>/usr/local/pgsql/bin/pg_ctl -d /usr/local/pgsql/data -l logfile start</code>

postgresql安装完成后会自带一个postgres数据库,用户postgres可直接使用psql连接。

每个操作系统用户可以直接连接自己同名的数据库。psql [-u&lt;username&gt;] [database]

<code>$ psql</code>

<code># 创建数据库</code>

<code>$ create database vonng;</code>

<code># 创建角色:</code>

<code>$ create user vonng login superuser password 'xxxxxxx';</code>

<code>#授予权限:</code>

<code>$ grant all privileges on database vonng to vonng;</code>

<code># pg默认只接受本机的连接。需要配置hba允许外部链接,具体细节参见文档。</code>

<code># 这里假设我们希望在10.0.0.0-10.255.255.255的a类局域网段内允许任何用户连接任何数据库。</code>

<code># 打开数据文件夹中的pg_hba.conf文件.</code>

<code>$ vi /usr/local/pgsql/data/pg_hba.conf</code>

<code># 在最下方添加一行</code>

<code>host all all 10.0.0.0/8 trust</code>

<code># 打开数据文件夹中的postgresql.conf</code>

<code># 找到 #listen_addresses = 'localhost',修改为 listen_addresses="*"</code>

<code># 重启postgresql:</code>

<code>$ pg_ctl stop -d /usr/local/pgsql/data</code>

<code>$ pg_ctl start -d /usr/local/pgsql/data -l logfile</code>

<code># 在另一台机器上测试 $ psql -h&lt;your pgserver host&gt; -u&lt;your pgserver username&gt;。</code>

<code>#备份一个数据库</code>

<code>$ pg_dump [connection-option...] [option...] [dbname]</code>

<code>#恢复一个数据库</code>

<code>$ psql [connectino-option] &lt; dumpfile.sql</code>