详解Linux中PostgreSQL和PostGIS的安装和使用
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>安装 PostgreSQL 和 PostGIS</li><li>
PostgreSQL 配置</li><li>
PostgreSQL 安装好后</li><li>
创建一个 PostGIS 数据库</li><li>
设置数据库权限</li></ul></div><p class="maodian"></p><h2>
安装 PostgreSQL 和 PostGIS</h2>
<p>
PostgreSQL 和 PostGIS 已经是热门的开源工程,已经收录在各大 Linux 发行版的 yum 或 apt 包中。Ubuntu 为例,安装以下包即可:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_61072">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">$ sudo apt-</code><code class="as3 keyword">get</code> <code class="as3 plain">install postgresql-client postgresql postgis -y</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
RedHat 系列则请安装:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_126946">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">$ sudo yum install postgresql-server postgresql postgis</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
初次安装后,默认生成一个名为 postgres 的数据库和一个名为 postgres 的数据库用户。这里需要注意的是,同时还生成了一个名为 postgres 的 Linux 系统用户。我们以后在操作 PostgreSQL 的时候都应该在这个新创建的 postgres 用户中进行。</p>
<p class="maodian"></p><h2>
PostgreSQL 配置</h2>
<p>
如果是从源码安装</p>
<p>
不建议从源码安装,我曾经试过从源码安装,实在是太麻烦了,而且各种 make install 容易出错。最后我还是用 rpm 安装了。不过既然花了些时间研究并且我成功安装过,所以还是记录一下吧——不过,可能有错漏,所以读者如果要从源码安装的话,请做好回滚的准备。</p>
<p>
如果使用的是通过 source 编译并且 make install 安装,那么这一节是需要额外配置的。</p>
<p>
貌似 CentOS 系列的安装也需要……</p>
<p>
默认的 make install 之后,PostgreSQL 安装目录在:/usr/local/pgsql/</p>
<p>
首先根据这个链接的参考,需要配置环境变量</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_776608">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">$ </code><code class="as3 keyword">set</code> <code class="as3 plain">$PGDATA = </code><code class="as3 string">"/usr/local/pgsql/database"</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
但是执行了 pg_ctl start 之后,会出现错误:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_995727">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">pg_ctl: directory </code><code class="as3 string">"/usr/local/pgsql/database"</code> <code class="as3 keyword">is</code> <code class="as3 plain">not a database cluster directory</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
这样的话,就需要参照 PostGreSQL 官方文档的步骤创建真正的 database:<br/></p>
<p>
PostgreSQL: Documentation: 9.1: Creating a Database Cluster</p>
<p>
首先创建一个用户账户,名叫 postgres</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_453623">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">$ usradd postgres</code>
</div>
<div class="line number2 index1 alt1">
<code class="as3 plain">$ sudo chown postgres /usr/local/pgsql/database</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
然后进入这个账户,创建 database</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_207884">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">$ sudo su postgres</code>
</div>
<div class="line number2 index1 alt1">
<code class="as3 plain">$ initdb -D /usr/local/pgsql/database/</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
此时 shell 会输出:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_90337">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
<div class="line number32 index31 alt1">
32</div>
<div class="line number33 index32 alt2">
33</div>
<div class="line number34 index33 alt1">
34</div>
<div class="line number35 index34 alt2">
35</div>
<div class="line number36 index35 alt1">
36</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">The files belonging to </code><code class="as3 keyword">this</code> <code class="as3 plain">database system will be owned by user </code><code class="as3 string">"postgres"</code><code class="as3 plain">.</code>
</div>
<div class="line number2 index1 alt1">
<code class="as3 plain">This user must also own the server process.</code>
</div>
<div class="line number3 index2 alt2">
</div>
<div class="line number4 index3 alt1">
<code class="as3 plain">The database cluster will be initialized </code><code class="as3 keyword">with</code> <code class="as3 plain">locale </code><code class="as3 string">"C"</code><code class="as3 plain">.</code>
</div>
<div class="line number5 index4 alt2">
<code class="as3 plain">The </code><code class="as3 keyword">default</code> <code class="as3 plain">database encoding has accordingly been </code><code class="as3 keyword">set</code> <code class="as3 plain">to </code><code class="as3 string">"SQL_ASCII"</code><code class="as3 plain">.</code>
</div>
<div class="line number6 index5 alt1">
<code class="as3 plain">The </code><code class="as3 keyword">default</code> <code class="as3 plain">text search configuration will be </code><code class="as3 keyword">set</code> <code class="as3 plain">to </code><code class="as3 string">"english"</code><code class="as3 plain">.</code>
</div>
<div class="line number7 index6 alt2">
</div>
<div class="line number8 index7 alt1">
<code class="as3 plain">Data page checksums are disabled.</code>
</div>
<div class="line number9 index8 alt2">
</div>
<div class="line number10 index9 alt1">
<code class="as3 plain">fixing permissions on existing directory /usr/local/pgsql/database ... ok</code>
</div>
<div class="line number11 index10 alt2">
<code class="as3 plain">creating subdirectories ... ok</code>
</div>
<div class="line number12 index11 alt1">
<code class="as3 plain">selecting </code><code class="as3 keyword">default</code> <code class="as3 plain">max_connections ... </code><code class="as3 value">100</code>
</div>
<div class="line number13 index12 alt2">
<code class="as3 plain">selecting </code><code class="as3 keyword">default</code> <code class="as3 plain">shared_buffers ... 128MB</code>
</div>
<div class="line number14 index13 alt1">
<code class="as3 plain">selecting </code><code class="as3 keyword">dynamic</code> <code class="as3 plain">shared memory implementation ... posix</code>
</div>
<div class="line number15 index14 alt2">
<code class="as3 plain">creating configuration files ... ok</code>
</div>
<div class="line number16 index15 alt1">
<code class="as3 plain">creating template1 database </code><code class="as3 keyword">in</code> <code class="as3 plain">/usr/local/pgsql/database/base/</code><code class="as3 value">1</code> <code class="as3 plain">... ok</code>
</div>
<div class="line number17 index16 alt2">
<code class="as3 plain">initializing pg_authid ... ok</code>
</div>
<div class="line number18 index17 alt1">
<code class="as3 plain">initializing dependencies ... ok</code>
</div>
<div class="line number19 index18 alt2">
<code class="as3 plain">creating system views ... ok</code>
</div>
<div class="line number20 index19 alt1">
<code class="as3 plain">loading system objects' descriptions ... ok</code>
</div>
<div class="line number21 index20 alt2">
<code class="as3 plain">creating collations ... ok</code>
</div>
<div class="line number22 index21 alt1">
<code class="as3 plain">creating conversions ... ok</code>
</div>
<div class="line number23 index22 alt2">
<code class="as3 plain">creating dictionaries ... ok</code>
</div>
<div class="line number24 index23 alt1">
<code class="as3 plain">setting privileges on built-</code><code class="as3 keyword">in</code> <code class="as3 plain">objects ... ok</code>
</div>
<div class="line number25 index24 alt2">
<code class="as3 plain">creating information schema ... ok</code>
</div>
<div class="line number26 index25 alt1">
<code class="as3 plain">loading PL/pgSQL server-side language ... ok</code>
</div>
<div class="line number27 index26 alt2">
<code class="as3 plain">vacuuming database template1 ... ok</code>
</div>
<div class="line number28 index27 alt1">
<code class="as3 plain">copying template1 to template0 ... ok</code>
</div>
<div class="line number29 index28 alt2">
<code class="as3 plain">copying template1 to postgres ... ok</code>
</div>
<div class="line number30 index29 alt1">
<code class="as3 plain">syncing data to disk ... ok</code>
</div>
<div class="line number31 index30 alt2">
</div>
<div class="line number32 index31 alt1">
<code class="as3 plain">WARNING: enabling </code><code class="as3 string">"trust"</code> <code class="as3 plain">authentication </code><code class="as3 keyword">for</code> <code class="as3 plain">local connections</code>
</div>
<div class="line number33 index32 alt2">
<code class="as3 plain">You can change </code><code class="as3 keyword">this</code> <code class="as3 plain">by editing pg_hba.conf or using the option -A, or</code>
</div>
<div class="line number34 index33 alt1">
<code class="as3 plain">--auth-local and --auth-host, the next time you run initdb.</code>
</div>
<div class="line number35 index34 alt2">
<code class="as3 plain">Success. You can now start the database server using:</code>
</div>
<div class="line number36 index35 alt1">
<code class="as3 plain">pg_ctl -D /usr/local/pgsql/database/ -l logfile start</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
恭喜你,接下来就可以启动 PostgreSQL 了:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_713982">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">pg_ctl -D /usr/local/pgsql/database/ -l /usr/local/pgsql/database/psql.log start</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p class="maodian"></p><h2>
PostgreSQL 安装好后</h2>
<p>
进入 postgres 账户,并且进入 PostgreSQL 控制台:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_647880">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">$ sudo su postgres</code>
</div>
<div class="line number2 index1 alt1">
<code class="as3 plain">$ psql</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
这时相当于系统用户 postgres 以同名数据库用户的身份,登录数据库,否则我们每次执行 psql 的时候都要在参数中指定用户,容易忘。</p>
<p>
在 psql 中设置一下密码——需要注意的是,这里设置的密码并不是 postgres 系统帐户的密码,而是在数据库中的用户密码:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_291373">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">postgres=# \password postgres</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
然后按照提示输入密码就好。</p>
<p>
从源码安装 PostGIS</p>
<p>
如果选择了从源码安装 PostgreSQL 的话,那么首先需要判断你安装的 PostgreSQL 是什么版本</p>
<p>
然后,再到 PostGIS 的网页上去查其对应的是 PostGIS 的哪个版本。</p>
<p>
最后,按照 PostGIS 的版本去下载对应的 source</p>
<p>
最后的导入很麻烦,笔者就是卡在这一步,所以才最终放弃从源码安装的……</p>
<p>
导入 PostGIS 扩展</p>
<p>
根据 postgresql 和 postgis 的版本不同,路径会有些差异,主要是路径中包含版本信息:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_374032">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">$ sudo su postgres</code>
</div>
<div class="line number2 index1 alt1">
<code class="as3 plain">$ createdb template_postgis</code>
</div>
<div class="line number3 index2 alt2">
<code class="as3 plain">$ createlang plpgsql template_postgis</code>
</div>
<div class="line number4 index3 alt1">
<code class="as3 plain">$ psql -d template_postgis -f /usr/share/postgresql/</code><code class="as3 value">9.5</code><code class="as3 plain">/contrib/postgis-</code><code class="as3 value">2.2</code><code class="as3 plain">/postgis.sql</code>
</div>
<div class="line number5 index4 alt2">
<code class="as3 plain">$ psql -d template_postgis -f /usr/share/postgresql/</code><code class="as3 value">9.5</code><code class="as3 plain">/contrib/postgis-</code><code class="as3 value">2.2</code><code class="as3 plain">/spatial_ref_sys.sql</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
上面的操作中,创建了一个叫做 “template_postgis” 的空数据库。这个数据库是空的,并且属于 postgres 用户。注意,不要往这个数据库中添加数据,这个数据库之所以称为 “模板”(template),就说明它是用来派生用的。</p>
<p>
相应的 PostGIS 路径可能不同,如果失败,就在上面的路径附近多尝试一下,找几个 .sql 文件试试看。</p>
<p>
转换 .shp 文件到 PostGIS 数据库中</p>
<p>
转换 .shp 到 .sql 文件</p>
<p>
首先找到需要转换的文件,假设需要转换的 .shp 文件是:/tmp/demo.shp,那么就做以下操作:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_979763">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">$ sudo su postgres</code>
</div>
<div class="line number2 index1 alt1">
<code class="as3 plain">$ cd /tmp</code>
</div>
<div class="line number3 index2 alt2">
<code class="as3 plain">$ shp2pgsql -W GBK -s </code><code class="as3 value">3857</code> <code class="as3 plain">./demo.shp entry > demo.sql</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
这里需要说明一下最后一句各部分所代表的含义:</p>
<ul>
<li>
-W GBK:如果你的 .shp 文件包含中文字符,那么请加上这个选项</li>
<li>
-s 3857:指明文件的参考坐标系统。我的 .shp 文件使用的是 EPSG:3857</li>
<li>
./demo.shp:.shp 文件的路径</li>
<li>
entry:表示要导入的数据库表名——假设这个 .shp 文件表示的是各个入口,所以我命名为 “entry”</li>
<li>
demo.sql</li>
</ul>
<p>
得到了 .sql 文件后,就可以直接导入到 PostgreSQL 数据库了。</p>
<p class="maodian"></p><h2>
创建一个 PostGIS 数据库</h2>
<p>
这里就需要用到前面的 template 了。</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_890948">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">sudo su postgres</code>
</div>
<div class="line number2 index1 alt1">
<code class="as3 plain">psql</code>
</div>
<div class="line number3 index2 alt2">
<code class="as3 plain">CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<ul>
<li>
newdb: 新的数据库名</li>
<li>
originaldb:也就是前面的 template_postgis</li>
<li>
dbuser:你的账户名,我一般使用 postgres</li>
</ul>
<p>
导入 .sql 文件</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_844632">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">sudo su postgres</code>
</div>
<div class="line number2 index1 alt1">
<code class="as3 plain">psql</code>
</div>
<div class="line number3 index2 alt2">
<code class="as3 plain">\c newdb</code>
</div>
<div class="line number4 index3 alt1">
<code class="as3 plain">\i demo.sql</code>
</div>
<div class="line number5 index4 alt2">
<code class="as3 plain">\d</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
可以看到,.sql 文件已经被导入了。</p>
<p class="maodian"></p><h2>
设置数据库权限</h2>
<p>
OK,现在我们在本机(服务器 IP 假设是 192.168.1.111)用以下命令登录 psql,会发现一段输出:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_63344">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">$ psql -h </code><code class="as3 value">192.168</code><code class="as3 plain">.</code><code class="as3 value">1.111</code> <code class="as3 plain">-p </code><code class="as3 value">5432</code>
</div>
<div class="line number2 index1 alt1">
<code class="as3 plain">psql: could not connect to server: Connection refused</code>
</div>
<div class="line number3 index2 alt2">
<code class="as3 spaces"> </code><code class="as3 plain">Is the server running on host </code><code class="as3 string">"100.94.110.105"</code> <code class="as3 plain">and accepting</code>
</div>
<div class="line number4 index3 alt1">
<code class="as3 spaces"> </code><code class="as3 plain">TCP/IP connections on port </code><code class="as3 value">5432</code><code class="as3 plain">?</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
这是因为 PostgreSQL 默认不对外开放权限,只对监听环回地址。要修改的话,需要找到 postgresql.conf 文件,修改值 listen_addresses:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighteras3" id="highlighter_12198">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="as3 plain">listen_addresses = </code><code class="as3 string">'*'</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
以上就是本次小编整理的关于Linux中PostgreSQL和PostGIS的安装和使用的全部内容,感谢你对的支持。</p>
頁:
[1]