ubuntu安装PostgreSQL

PostgreSQL的安装

PostgreSQL是著名的开源数据库(虽然很多人没听说过,大部分人可能对MySQL比较熟悉)。玩了一段时间的PG(PostgreSQL简称),但中间却没有整理过,现在暂时不玩了,也总得整理整理,免得回过头来看看,好象自己这段时间跟白费了似的。

 

下载PG源码

先去PG的官网下载源码。http://www.postgresql.org/download/

Download source code进入其源码ftp,选择一个较新的稳定版本,9.1.0可以。

或者用apt-get install ...

 

编译安装PG

因为我是在vmware虚拟机里玩的,所以先通过设置共享目录,将主机下的东西传进虚拟机(vmware虚拟机共享文件目录是/mnt/hgfs)。当然也可以通过winSCP之类的文件传输软件将主机的文件传到虚拟机中。最好将虚拟机的ip地址固定,免得每次连接都不一样,可以通过ifconfig eth0 ip 192.168.1.1来固定虚拟机的ip地址。

 

将PG的源码压缩包postgresql-9.1.0.tar传到虚拟机之后,通过命令tar xvf postgresql-9.1.0.tar解压。进到解压后的目录下,便可看到PG的源码目录 

 

打开INSTALL,里面会提示编译源码安装的步骤:

 

  

按照步骤先运行configure,但很不幸,遇到了这样的错误 

 

本来想尝试去解决readline library的库问题,但查了查这也是无关紧要的,因此就加上了--without-readline选项去运行:

./configure –without-readline

这次可以跳过readline的编译问题,但又出现了zlib库找不到的问题,继续忽略,运行:

./configure --without-readline --without-zlib

这下总算顺利通过了。

 

接着就是make,10分钟后,make install顺利安装了PG。

按默认选项安装完的PG会放在/usr/local/pgsql/下(/usr有点类似于windows的programs file目录)。

进到PG的bin目录下,就可以初始化数据库,启动服务端,使用客户端等操作了。


这里要注意一下,PG数据库服务不能以root用户运行 ,因此,最好新建一个用户,建议加一个名为postgres的用户来启动数据库服务。

 

简化执行

每次启动数据库服务都要进入PG的bin目录,再敲一堆命令什么的也不方便,不如直接将bin下的可执行程序加到用户环境变量当中。可通过下列方式实现。

打开用户的环境配置文件,是/home/username/下的.profile,通过vim命令打开(如果没装vim可以通过sudo apt-get install vim来安装)。在末尾处加上:

export PGDATA=/usr/local/pgsql/data

export PATH=$PATH:/usr/local/pgsql/bin

通过source .profile来生效。

PGDATA是postgres –D后面指定的数据库文件存放目录,通过这样的设置,如果直接运行postgres或pg_ctl start那么数据库文件会默认存放在/usr/local/pgsql/data目录中的。

 

至此,PG的安装结束,用户在开启数据库服务的状态下,可以使用psql客户端来连接并访问数据库,通过SQL语言来操作。


数据库连接

修改PostgresSQL数据库配置实现远程访问
/复制启动文件
# cd postgresql-9.1.4
# cp contrib/start-scripts/linux   /etc/init.d/postgresql
//复制man文件
cp man1/*  /usr/share/man/man1/
cp man7/*  /usr/share/man/man7/
//设置开机启动
# su root
# chmod 755 /etc/init.d/postgresql
# chkconfig --add postgresql
# chkconfig postgresql on
# /etc/init.d/postgresql start

vi /usr/local/pgsql/data/postgresql.conf
1.监听任何地址访,修改连接权限
#listen_addresses = ‘localhost’改为 listen_addresses = ‘*’        
2.启用密码验证

#password_encryption = on改为password_encryption = on
3.可访问的用户ip段

#  vi/usr/local/pgsql/data/pg_hba.conf,并在文档末尾加上以下内容
# to allow your client visiting postgresql server
host all all 0.0.0.0 0.0.0.0 md5

# 修改用户密码

psql postgres

ATER USER dbuser with password 'test' ;


4.重启 PostgreSQL数据库
/etc/init.d/postgresql restart

首先,创建数据库用户dbuser,并指定其为超级用户。

su - postgres

createuser -W dbuser

接着,在shell命令行下,创建数据库testdb,并指定所有者为dbuser。

createdb -O dbuser testdb


添加新用户和新数据库以后,就要以新用户的名义登录数据库,这时使用的是psql命令。

psql -U dbuser -d testdb -h 127.0.0.1 -p 5432; 在本地可以直接用psql testdb,或用psql testdb -f xx.sql

上面命令的参数含义如下:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口。

输入上面命令以后,系统会提示输入dbuser用户的密码。输入正确,就可以登录控制台了。

psql命令存在简写形式。如果当前Linux系统用户,同时也是PostgreSQL用户,则可以省略用户名(-U参数的部分)。举例来说,我的 Linux系统用户名为ruanyf,且PostgreSQL数据库存在同名用户,则我以ruanyf身份登录Linux系统后,可以直接使用下面的命令 登录数据库,且不需要密码。

psql testdb

此时,如果PostgreSQL内部还存在与当前系统用户同名的数据库,则连数据库名都可以省略。比如,假定存在一个叫做ruanyf的数据库,则直接键入psql就可以登录该数据库。

psql


备份与恢复

pg_dump dbname > bakup

psql dbname < bakup

pg_dump dbname | gzip > filename.gz

gunzip -c filename.gz | psql dbname


控制台命令:

除了前面已经用到的\password命令(设置密码)和\q命令(退出)以外,控制台还提供一系列其他命令。

\h:查看SQL命令的解释,比如\h select。

\?:查看psql命令列表。\l:列出所有数据库。

\c [database_name]:连接其他数据库。

\d:列出当前数据库的所有表格。

\d [table_name]:列出某一张表格的结构。

\du:列出所有用户。

\e:打开文本编辑器。

\conninfo:列出当前数据库和连接的信息。


数据库操作:

基本的数据库操作,就是使用一般的SQL语言。

# 创建新表

CREATE TABLE usertbl(name VARCHAR(20), signupdate DATE);

# 插入数据

INSERT INTO usertbl(name, signupdate) VALUES('张三', '2013-12-22');

# 选择记录

SELECT * FROM user_tbl;

# 更新数据

UPDATE user_tbl set name = '李四' WHERE name = '张三';

# 删除记录

DELETE FROM user_tbl WHERE name = '李四' ;

# 添加栏位

ALTER TABLE user_tbl ADD email VARCHAR(40);

# 更新结构

ALTER TABLE usertbl ALTER COLUMN signupdate SET NOT NULL;

# 更名栏位

ALTER TABLE usertbl RENAME COLUMN signupdate TO signup;

# 删除栏位

ALTER TABLE user_tbl DROP COLUMN email;

# 表格更名 

ALTER TABLE usertbl RENAME TO backuptbl;

# 删除表格

DROP TABLE IF EXISTS backup_tbl;

# 修改用户密码

psql postgres

ATER USER dbuser with password 'test' ;



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值