Welcome 微信登录

首页 / 数据库 / MySQL / Ubuntu 下安装使用PostgreSQL

1在 http://www.postgresql.org/download/ 下载PostgreSQL,我的版本是9.1-rc1

2.安装PostgreSQL的时候可能会提示:configure: error: readline library not foundIf you have readline already installed, see config.log for details on the
failure.  It is possible the compiler isn"t looking in the proper directory.
Use --without-readline to disable readline support.
表示需要安装readline库(readline的作用是使得可以在命令行回滚历史命令,编辑命令。):
sudo sudo apt-get install libreadline6-dev
3../configure --prefix=/usr/local/pgsql


4.make -j 2
5.sudo make install
6创建用户组和用户(由于PostgreSQL需要一个专门的用户才能使用,因此这里我们新建了一个用户(用户名随意),以后使用PostgreSQL时就切换到这个用户就可以了) :
sudo groupadd postgresql
sudo useradd -g postgres postgresql

注意,同时要给postgresql账户设置一个密码,并启用。

7.创建数据库库文件存储目录、给postgres赋予权限: 
mkdir /usr/local/pgsql/data 
cd /usr/local/pgsql 
sudo chown -R postgresql.postgresql data


8.初始化数据库目录: 
切换用户 :
su postgresql
初始化数据库 :/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data 

注意:数据库初始化后,才可以启动postgresql数据库的后台服务!

启动数据库 
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data 
之后终端会有如下输出:LOG:  database system was shut down at 2011-10-21 00:40:50 CST
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

之后终端一直没有返回,不过看提示,说明数据库已经启动起来啦~~

下面介绍如何使用PostgreSQL:PostgreSQL的大部分命令在pgsql的bin下,为了以后方便,我们先给它们做一个链接:
sudo ln -s /usr/local/pgsql/bin/* /usr/bin


由于PostgreSQL需要一个专门的用户名才能使用,因此每次使用时要先切换到这个用户:su postgresql启动PostgreSQL Server 后台服务
cd /usr/local/pgsql/datapg_ctl -D /usr/local/pgsql/data -l logfile start
首先创建一个数据库,假设名字是abc:createdb abc
然后进入数据库abc:psql abc终端提示:psql (9.1rc1)
Type "help" for help.


abc=# 
说明我们已经进去啦,
然后创建一个score表:CREATE TABLE score (id int, name varchar(20), score real);
如果看到"CREATE TABLE"的字样就说明表已经建好了。注意,PostgreSQL的所有语句都要以;结尾,否则PostgreSQL会换一行等待你继续输入;
下面我们插入一条记录:INSERT INTO score VALUES (1, "JOHN", 90);
如果看到"INSERT 0 1"的字样就说明记录已经插进去了。

查询score表:SELECT * FROM score;
显示: id | name | score 
----+------+-------
  1 | JOHN |    90
(1 row)


查看score表的表结构信息:d score显示如下:            Table "public.score"
 Column |         Type                        | Modifiers 
-----------+--------------------------------+-----------
 id           | integer                             | 
 name    | character varying(20)     | 
 score    | real                                  | 



在score表的id列上建一个索引id_score:create index id_score on score(id);
如果看到“CREATE INDEX"的字样就说明索引已经建好了。这个时候再 d score 查看表结构时输出如下:            Table "public.score"
 Column |         Type                        | Modifiers 
-----------+--------------------------------+-----------
 id           | integer                             | 
 name    | character varying(20)     | 
 score    | real                                  | 
Indexes:
    "id_score" btree (id)
然后显示现有的索引:di如果显示No relations found.表示目前的数据库中还没有索引。

删除score表:DROP TABLE score;
如果看到"DROP TABLE"的字样就说明score表已经被删除了。

退出PostgreSQL:q以下还有一些PostgreSQL的常用命令:l                        列出已有数据库的Owner,Encoding等信息c                       切换数据库(切换数据库表示其后进行的操作,如insert等都将作用在切换后的数据库上)比如目前提示符是:abc=#, 那么输入 c mydb 后,提示符变成了mydb=#,表示切换到了mydb数据库。dt                      查看当前数据库中已有的表

下面介绍如何备份数据库:首先在abc数据库中创建一个price表,并插入一些数据:c abc;                                          #切换到abc数据库CREATE TABLE price (id int, name varchar(100), price real);INSERT INTO price VALUES (1, "apple", 10);INSERT INTO priceVALUES (2, "orange", 5);
INSERT INTO price VALUES (3, "banana", 20);
INSERT INTO price VALUES (4, "peach", 15);
INSERT INTO price VALUES (5, "pear", 8);
然后退出PostgreSQL:q在终端输入:pg_dump abc >abc.pgsql                 #将abc数据库备份到abc.pgsql文件里恢复数据库:首先退出PostgreSQL,然后在终端输入:dropdb abc                              #删除abc数据库然后输入 psql abc 会提示:psql: FATAL:  database "abc" does not exist  表式abc数据库不存在。然后在终端输入:createdb abc                    #恢复数据库前先建立一个空的数据库psql abc < abc.pgsql       #表示把abc.pgsql导入abc数据库中
psql abc                            #进入abc数据库select * from price;          #会发现之前插入的数据又回来啦。



另外,同样可以将所有的SQL语句保存在一个文件里,数据库重建的时候导入这一个文件就可以了,很方便:首先假设在data/下新建一个a.pgsql:CREATE TABLE one(id int);
INSERT INTO one VALUES(123);

然后:cd /usr/local/pgsql/datapsql abc < a.pgsql       #表示把a.pgsql导入abc数据库中(注意,我们之前已经创建了abc数据库)


以上就是基本的数据库操作啦,SQL语句的绝大部分语法在PostgreSQL里都是适用的。
以下是一些补充:PostgreSQL的配置文件是 /usr/local/pgsql/data/postgresql.conf,可以更改用户登录端口和最大连接用户数,
vi  /usr/local/pgsql/data/postgresql.conf有#的行表示这是一个注释行。找到以下的以下内容:listen_addresses = "localhost"    #说明PostgreSQL默认只允许本地登录,要远程登录需要改成listen_addresses = "*" port = 5432                                 #PostgreSQL默认监听端口是5432(可以netstat -tnl|grep 5432来验证以下)
max_connections = 100             # PostgreSQL默认最大连接数是100
还有其他的设置都在postgresql.conf,可以好好看看。 以下是网上找的一些configure时候的常用选项(可以通过 configure --help查看):
configure --prefix=XXX 为安装 PostgreSQL 选择一个不同的路径。缺省是 /usr/local/pgsql。
configure --enable-multibyte  允许使用多字节字符编码。这个选项主要用于象日语,韩语或中文这样的语言。
configure --with-perl 
添加 Perl 模块接口。请注意 Perl 接口将安装到 Perl 模块的常用位置(典型的是在 /usr/lib/perl),所以要成功使用这个选项,你必须有 root 权限。下面一篇将会介绍如何在PHP中连接PostgreSQL。 见 http://www.linuxidc.com/Linux/2011-11/47811.htmPHP 操作 PostgreSQL数据库Linux下写Java程序时 显示/插入MySQL数据库乱码问题解决相关资讯      ubuntu安装  PostgreSQL 
  • Ubuntu 16.04 下安装 PostgreSQL   (08月14日)
  • Linux下RPM包方式安装PostgreSQL  (03月04日)
  • PostgreSQL9.5新特性之行级安全性  (01月19日)
  • Linux系统教程:如何通过代理服务  (03月17日)
  • PostgreSQL 发布全系安全更新  (02月12日)
  • 使用pg_basebackup搭建PostgreSQL  (12/30/2015 09:00:29)
本文评论 查看全部评论 (0)
表情: 姓名: 字数