PostgreSQL-阿里云开发者社区

开发者社区> 科技探索者> 正文

PostgreSQL

简介:
+关注继续查看


PostgreSQL

http://www.postgresql.org/ftp/source/


PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它

提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和对专有系统比如 Oracle、Sybase、IBM

的 DB2 和 Microsoft SQL Server的一种选择。

 


# tar -zxf postgresql-8.1.4.tar.gz
# cd postgresql-8.1.4
# ./configure 
# gmake && gmake install


默认安装到/usr/local/pgsql下


启动

# service postgresql start      (start/stop/restart)

增加postgresql专用用户

posgresql为安全考虑,不允许以root用户运行,必须为它建立对应的用户和组

# useradd postgres

将自动建立对应的组(postgres)

为其配置环境变量:

# vi ~postgres/.bash_profile

PGLIB=/usr/local/pgsql/lib

PGDATA=$HOME/data

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

MANPATH=$MANPATH:/usr/local/pgsql/man

export PGLIB PGDATA PATH MANPATH

建立数据目录

先切换用户

# su - postgres

建立数据目录

# mkdir data

初始化目录数据

# cd data
# initdb

 

# createdb pgd  创建数据库pgd
# psql -d pgd 进入到pgd数据库中
pgd=# \l   显示数据库列表,相当于mysql中的 show databases;
pgd=#\d  显示当前数据库也就是pgd数据库下的表列表,相当于mysql中的 show tables;
pgd=#\d tableName 显示tableName这张表的结构,相当于mysql中的 describe tableName; 
pgd=#\?  帮助命令信息
pgd=#\h  帮助命令信息
pgd=#\q  退出数据库
 


 

postgresql.conf

为了使postgresql支持tcp/ip连接,要设置监听地址行

# vi /var/lib/pgsql/data/postgresql.conf


listen_addresses = '*'     (原为#listen_addresses = 'localhost')

:wq

重新启动服务

# service postgresql restart

 

附:

 
PostgreSQL 常用命令 
\d [ table ] 
列出数据库中的表,或(如果声明了)表 table 的列/字段.如果表名是用统配符 (“*”)声明的,列出所

有表和表的列/字段信息. 
\da 
列出所有可用聚集. 
\dd object 
列出 pg_description 里对声明的对象的描述,对象可以是一个表,表中的列/字段,类型,操作符或聚集. 
小技巧:并非所有对象在 pg_description 里有描述.此后期命令在快速获取 Postgres 内部特性时很有用.
\df 
列出函数. 
\di 
只列出索引. 
\do 
只列出操作符. 
\ds 
只列出序列. 
\dS 
列出系统表和索引. 
\dt 
只列出非系统表. 
\dT 
列出类型. 
\e [ filename ] 
编辑当前查询缓冲或文件 filename 的内容. 
\E [ filename ] 
编辑当前查询缓冲或文件 filename 的内容并且在编辑结束后执行之. 
\f [ separator ] 
设置域分隔符.缺省是单个空白. 
\g [ { filename | |command } ] 
将当前查询输入缓冲送给后端并且(可选的)将输出放到 filename 或通过管道将输出送给一个分离的Unix

shell 用以执行 command. 
\h [ command ] 
给出声明的 SQL 命令的语法帮助.如果 command 不是一个定义的 SQL 命令(或在 psql 里没有文档),或没

有声明 command ,这时 psql将列出可获得帮助的所有命令的列表.如果命令 command 是一个通配符(“*”

),则给出所有 SQL 命令的语法帮助. 
\H 
切换 HTML3 输出.等效于 -H 命令行选项. 
\i filename 
从文件 filename 中读取查询到输入缓冲. 
\l 
列出服务器上所有数据库. 
\m 
切换老式监视器样的表输出,这时表周围有边界字符包围着.这是标准 SQL 输出.缺省时,psql 只包括列/字

段间的分隔符. 
\o [ { filename | |command } ] 
将后面的查询结果输出到文件 filename 或通过管道将后面结果输出到一个独立的Unix shell 里执行 command

.如果没有声明参数,将查询结果输出到 stdout. 
\p 
打印当前查询缓冲区. 
\q 
退出 psql 程序. 
\r 
重置(清空)查询缓冲区. 
\s [ filename ] 
将命令行历史打印出或是存放到 filename.如果省略 filename ,将不会把后继的命令存放到历史文件中.此

选项只有在 psql 配置成使用输入行时才有效. 
\t 
切换输出的列/字段名的信息头和行记数脚注(缺省是开). 
\T table_options 
允许你在使用HTML 3.0 格式输出时声明放在表 table ... 中的标记选项.例如,border 将给你的表以边框.

这必须和 \H 后期命令一起使用. 
\x 
切换扩展行格式.当打开时,每一行将在左边打印列/字段名而在右边打印列/字段值.这对于那些不能在一行

输出的超长行是很有用的.HTML 行输出模式也支持这个标记. 
\w filename 
将当前查询缓冲区输出到文件 filename. 
\z 
生成一个带有正确 ACL(赋予/禁止 权限)的数据库中所有表的输出列表. 
\! [ command ] 
回到一个独立的Unix shell或执行一个Unix 命令 command. 
\? 
获得关于反斜杠 (“\”) 命令的帮助.


一般选项

\c[onnect] [数据库名|- [用户名称]]
联接到新的数据库 (当前为 "test")
\cd [目录名]     改变当前的工作目录
\copyright       显示 PostgreSQL 用法和发布信息
\encoding [编码]
显示或设置客户端编码
\h [名字]        SQL 命令的语法帮助, 用 * 可以看所有命令的帮助
\q               退出 psql
\set [名字 [值]]
设置内部变量, 如果没有参数就列出所有
\timing          查询计时开关切换 (目前是 关闭)
\unset 名字      取消(删除)内部变量
\! [命令]        在 shell 里执行命令或者开始一个交互的 shell

信息选项

\d [名字]        描述表, 索引, 序列, 或者视图
\d{t|i|s|v|S} [模式] (加 "+" 获取更多信息)
列出表/索引/序列/视图/系统表
\da [模式]       列出聚集函数
\db [模式]       列出表空间 (加 "+" 获取更多的信息)
\dc [模式]       列出编码转换
\dC              列出类型转换
\dd [模式]       显示目标的注释
\dD [模式]       列出域
\df [模式]       列出函数 (加 "+" 获取更多的信息)
\dg [模式]       列出组
\dn [模式]       列出模式 (加 "+" 获取更多的信息)
\do [名字]       列出操作符
\dl              列出大对象, 和 \lo_list 一样
\dp [模式]       列出表, 视图, 序列的访问权限
\dT [模式]       列出数据类型 (加 "+" 获取更多的信息)
\du [模式]       列出用户
\l               列出所有数据库 (加 "+" 获取更多的信息)
\z [模式]        列出表, 视图, 序列的访问权限 (和 \dp 一样)

命令:     ABORT
描述:     终止当前事务
语法:
ABORT [ WORK | TRANSACTION ]

命令:     ALTER DATABASE
描述:     改变一个数据库
语法:
ALTER DATABASE 名字 SET 参数 { TO | = } { 值 | DEFAULT }
ALTER DATABASE 名字 RESET 参数
ALTER DATABASE 名字 RENAME TO 新名字
ALTER DATABASE 名字 OWNER TO 新属主
命令:     ALTER GROUP
描述:     改变一个用户组
语法:
ALTER GROUP 组名称 ADD USER 用户名称 [, ... ]
ALTER GROUP 组名称 DROP USER 用户名称 [, ... ]
ALTER GROUP 组名称 RENAME TO 新名称

命令:     ALTER INDEX
描述:     改变一个索引的定义
语法:
ALTER INDEX 索引名称
动作 [, ... ]
ALTER INDEX 索引旧名称
RENAME TO 索引新名称
动作为以下之一:
OWNER TO 新属主
SET TABLESPACE indexspace_name

命令:     ALTER SEQUENCE
描述:     改变一个序列生成器的定义
语法:
ALTER SEQUENCE 名字 [ INCREMENT [ BY ] 递增 ]
[ MINVALUE 最小值 | NO MINVALUE ] [ MAXVALUE 最大值 | NO MAXVALUE ]
[ RESTART [ WITH ] 开始 ] [ CACHE 缓存 ] [ [ NO ] CYCLE ]

命令:     ALTER TABLE
描述:     改变一个表的定义
语法:
ALTER TABLE [ ONLY ] 表名 [ * ]
action [, ... ]
ALTER TABLE [ ONLY ] 表名 [ * ]
RENAME [ COLUMN ] 字段名 TO 新字段名
ALTER TABLE 表名
RENAME TO 新表名
action 为下面的一种:
ADD [ COLUMN ] 字段名 类型 [ 字段约束 [ ... ] ]
DROP [ COLUMN ] 字段名 [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] 字段名 TYPE 类型 [ USING 表达式 ]
ALTER [ COLUMN ] 字段名 SET DEFAULT 表达式
ALTER [ COLUMN ] 字段名 DROP DEFAULT
ALTER [ COLUMN ] 字段名 { SET | DROP } NOT NULL
ALTER [ COLUMN ] 字段名 SET STATISTICS integer
ALTER [ COLUMN ] 字段名 SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
ADD 表约束
DROP CONSTRAINT 约束名字 [ RESTRICT | CASCADE ]
CLUSTER ON 索引名称
SET WITHOUT CLUSTER
SET WITHOUT OIDS
OWNER TO 新属主
SET TABLESPACE 表空间名字

命令:     ALTER TRIGGER
描述:     改变一个触发器的定义
语法:
ALTER TRIGGER 名字 ON 表 RENAME TO 新名字

命令:     ALTER USER
描述:     改变一个数据库用户
语法:
ALTER USER name [ [ WITH ] option [ ... ] ]
where option can be:
CREATEDB | NOCREATEDB
| CREATEUSER | NOCREATEUSER
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'abstime'
ALTER USER name RENAME TO newname
ALTER USER name SET parameter { TO | = } { value | DEFAULT }

命令:     COPY
描述:     在一个文件和一个表之间拷贝数据
语法:
COPY 表名 [ ( 字段 [, ...] ) ]
FROM { '文件名' | STDIN }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ]
[ CSV [ QUOTE [ AS ] 'quote' ]
[ ESCAPE [ AS ] 'escape' ]
[ FORCE NOT NULL column [, ...] ]

COPY 表名 [ ( 字段 [, ...] ) ]
TO { '文件名' | STDOUT }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ]
[ CSV [ QUOTE [ AS ] 'quote' ]
[ ESCAPE [ AS ] 'escape' ]
[ FORCE QUOTE column [, ...] ]

命令:     CREATE TABLE
描述:     定义一个新的表
语法:
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name (
{ column_name data_type [ DEFAULT default_expr ] [ column_constraint [ ... ] ]
| table_constraint
| LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ]
)
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace ]

where column_constraint is:

[ CONSTRAINT constraint_name ]
{ NOT NULL |
NULL |
UNIQUE [ USING INDEX TABLESPACE tablespace ] |
PRIMARY KEY [ USING INDEX TABLESPACE tablespace ] |
CHECK (expression) |
REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

and table_constraint is:

[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, ... ] ) [ USING INDEX TABLESPACE tablespace ] |
PRIMARY KEY ( column_name [, ... ] ) [ USING INDEX TABLESPACE tablespace ] |
CHECK ( expression ) |
FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

本文转自linux博客51CTO博客,原文链接http://blog.51cto.com/yangzhiming/835042如需转载请自行联系原作者


yangzhimingg

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9943 0
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26756 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2957 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
11808 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
7449 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
22333 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7310 0
5489
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载