安装篇
我下载了PostgreSQL7.3.4,是源代码,保存为“/opt/lin_app02/tmp/download/PostgreSQL/R1
/postgresql-7.3.4.tar.gz”。下载后,我在这个目录下开了终端(rxvt),执行命令:
[code:1:cc99a78c8e]
[root@TFW-RFL40F R1]# tar zxvfp ./postgresql-7.3.4.tar.gz
[/code:1:cc99a78c8e]
得到一个目录“postgresql-7.3.4”。
[code:1:cc99a78c8e]
[root@TFW-RFL40F R1]# cd postgresql-7.3.4
[root@TFW-RFL40F postgresql-7.3.4]# ./configure
--prefix=/opt/lin_app02/postgres --enable-locale --enable-multibyte
--with-perl --with-odbc --with-tcl
[/code:1:cc99a78c8e]
......
对上面一步的说明:
./configure
configure不加任何选项,系统将按默认的设置安装postgresql,查看configre的相关选项可以使用:configure
-help
一些最常用的如下:
--prefix=BASEDIR
为安装 PostgreSQL 选择一个不同的基础路径。缺省是 /usr/local/pgsql。
--enable-locale
如果你想用本地化支持。
--enable-multibyte
允许使用多字节字符编码。这个选项主要用于象日语,韩语或中文这样的语言。
--with-perl
添加 Perl 模块接口。请注意 Perl 接口将安装到 Perl 模块的常用位置(典型的是在
/usr/lib/perl),所以要成功使用这个选项,你必须有 root 权限。
--with-odbc
制作 ODBC 驱动包。
--with-tcl
制作 Tcl/Tk 需要的接口库和程序,包括 libpgtcl,pgtclsh,和 pgtksh。
这些编译参数告诉编译器如何编译PostgreSQL:
[code:1:cc99a78c8e]
[root@TFW-RFL40F postgresql-7.3.4]# make
[/code:1:cc99a78c8e]
......
[code:1:cc99a78c8e]
[root@TFW-RFL40F postgresql-7.3.4]# make install
[/code:1:cc99a78c8e]
......
中间不报错的话,安装就完成了。
初始化
创建一个存放数据库文件的目录:
[code:1:cc99a78c8e]
[root@TFW-RFL40F postgresql-7.3.4]# mkdir /opt/lin_app02/postgre-data
[/code:1:cc99a78c8e]
下面要设置环境变量。由于安全原因,PostgreSQL是不让“root”等特权用户用的。为了方便,我就用日常工作的“typhoon”身份管
理PostgreSQL,但是建议大家为管理PostgreSQL新创建一个用户。为了方便,我直接修改了“/etc/profile”,但是建议修改个
人主目录下的“.bash_profile”。
我在环境变量文件里添加了如下内容:
[code:1:cc99a78c8e]
########################################
# PostgreSQL
LD_LIBRARY_PATH=/opt/lin_app02/postgres/lib
export LD_LIBRARY_PATH
PGLIB=/opt/lin_app02/postgres/lib
PGDATA=/opt/lin_app02/postgre-data
PATH=$PATH:/opt/lin_app02/postgres/bin
MANPATH=$MANPATH:/opt/lin_app02/postgres/man
export PGLIB PGDATA PATH MANPATH
########################################
[/code:1:cc99a78c8e]
看着挺麻烦,其实就是下面的格式:
LD_LIBRARY_PATH=<--prefix所指的地方>/lib
export LD_LIBRARY_PATH
PGLIB=<--prefix所指的地方>/lib
PGDATA=<你放数据库文件的地方>
PATH=$PATH:<--prefix所指的地方>/bin
MANPATH=$MANPATH:<--prefix所指的地方>/man
export PGLIB PGDATA PATH MANPATH
刚才提到的那些目录都是在“root”身份下创建的,要让它们能为“typhoon”所用,还得改权限:
[code:1:cc99a78c8e]
[root@TFW-RFL40F postgresql-7.3.4]# chown -R typhoon.typhoon
/opt/lin_app02/postgre*
[/code:1:cc99a78c8e]
即:
chown -R <PostgreSQL管理员所在组>.<PostgreSQL管理员用户名>
<--prefix所指的地方>
chown -R <PostgreSQL管理员所在组>.<PostgreSQL管理员用户名>
<你放数据库文件的地方>
然后我关闭了X,并注销,再重新登录,以使环境变量生效。
[code:1:cc99a78c8e]
[typhoon@TFW-RFL40F typhoon]$ initdb
[/code:1:cc99a78c8e]
这个命令用来初始化PostgreSQL。请确保执行前你放数据库文件的地方是空的。
初始化后会自动创建数据库的超级用户,用户名与安装、执行初始化的操作系统用户同名。可能还会自动创建一个与用户名同名的数据库。在我这里就是用户
“typhoon”和数据库“typhoon”。直接执行“<--prefix所指的地方>/bin/psql”就能登录进去。“\q”可以
退回操作系统的shell。如果这个数据库没有自动生成,请执行“<--prefix所指的地方>/bin/createdb
[用户名]”,即以你的用户名创建一个数据库。这个数据库就相当于你的“Home”,没这个数据库,做某些事情就不方便。
启停方法
[code:1:cc99a78c8e]
[typhoon@TFW-RFL40F typhoon]$ postmaster -i -D ./postgre-data/&
[/code:1:cc99a78c8e]
postmaster -i -D <database-path>&
......
这是开始数据库系统的服务。后面那个“&”最好带上,否则,......:-D
上面说的启动方法是正规方法,PostgreSQL还提供了封装的控制脚本“<--prefix所指的地方>/bin
/pg_ctl”。
[code:1:cc99a78c8e]
[typhoon@TFW-RFL40F typhoon]$ pg_ctl -l ./123/pg.log start
[/code:1:cc99a78c8e]
如果有“-l 文件名”这个参数,所有的错误都会被记录到这个文件里。
[code:1:cc99a78c8e]
[typhoon@TFW-RFL40F typhoon]$ pg_ctl stop
[/code:1:cc99a78c8e]
停止服务。既然是停止,就别管什么记录文件了。
[code:1:cc99a78c8e]
[typhoon@TFW-RFL40F typhoon]$ pg_ctl -l ./123/pg.log restart
[/code:1:cc99a78c8e]
相当于先“stop”再“start”。
[code:1:cc99a78c8e]
[typhoon@TFW-RFL40F typhoon]$ pg_ctl reload
[/code:1:cc99a78c8e]
如果对配置文件做了修改,想不中断服务而立即生效,就这样。
注意:PostgreSQL管理员最好从“Login:”、xdm或kdm登录系统,因为如果“su”过去操作将不能正常执行。
和大家共同进步。下面是我安装时参考的帖子:
[url]http://www.freelamp.com/new/publish/1022414614/index_html[/url]
[url]http://chinaunix.net/jh/18/546.html[/url]
[url]http://chinaunix.net/jh/18/548.html[/url]
我四处查找链接里所说的“egcs-c++”,也没下载到,后来才知道“egcs-c++”已经被整合进高版本的“gcc”里了。我的“gcc”是3.2
的。大家的“gcc”如果高于2.8,也就不要再到处找“egcs-c++”了。
安全管理
初始化后,在数据库目录里会有这样两个文件:“postgresql.conf”和“pg_hba.conf”。
修改“postgresql.conf”第30行左右的地方为顶格“tcpip_socket = true”,以允许网络访问。
“pg_hba.conf”,基于主机的访问控制(Host Based
Access)。左边有“#”的内容都是被注释掉的,起说明或参考等作用。
我以我现在的文件为例做说明(里面的中文为我的说明):
[code:1:cc99a78c8e]
# PostgreSQL Client Authentication Configuration File
# ===================================================
#
# Refer to the PostgreSQL Administrator's Guide, chapter "Client
# Authentication" for a complete de script ion. A short synopsis
# follows.
#
# This file controls: which hosts are allowed to connect, how clients
# are authenticated, which PostgreSQL user names they can use, which
# databases they can access. Records take one of three forms:
#
# local DATABASE USER METHOD [OPTION]
# host DATABASE USER IP-ADDRESS IP-MASK METHOD [OPTION]
# hostssl DATABASE USER IP-ADDRESS IP-MASK METHOD [OPTION]
#
# (The uppercase quantities should be replaced by actual values.)
# DATABASE can be "all", "sameuser", "samegroup", a database name (or
# a comma-separated list thereof), or a file name prefixed with "@".
# USER can be "all", an actual user name or a group name prefixed with
# "+" or a list containing either. IP-ADDRESS and IP-MASK specify the
# set of hosts the record matches. METHOD can be "trust", "reject",
# "md5", "crypt", "password", "krb4", "krb5", "ident", or "pam". Note
# that "password" uses clear-text passwords; "md5" is preferred for
# encrypted passwords. OPTION is the ident map or the name of the PAM
# service.
#
# This file is read on server startup and when the postmaster receives
# a SIGHUP signal. If you edit the file on a running system, you have
# to SIGHUP the postmaster for the changes to take effect, or use
# "pg_ctl reload".
# Put your actual configuration here
# ----------------------------------
#
# CAUTION: The default configuration allows any local user to connect
# using any PostgreSQL user name, including the superuser, over either
# Unix-domain sockets or TCP/IP. If you are on a multiple-user
# machine, the default configuration is probably too liberal for you.
# Change it to use something other than "trust" authentication.
#
# If you want to allow non-local connections, you need to add more
# "host" records. Also, remember TCP/IP connections are only enabled
# if you enable "tcpip_socket" in postgresql.conf.
# TYPE DATABASE USER IP-ADDRESS IP-MASK
METHOD
#访问来源 数据库 用户 IP-地址 子网掩码 认证方式
local typhoon typhoon
md5
#对于来自本地的访问,数据库“typhoon”对用户“typhoon”采用“md5”加密口令认证
local typhoon all
reject
#对于来自本地的访问,数据库“typhoon”对上面没提到的所有用户无条件拒绝认证
host typhoon typhoon 255.255.255.255 127.0.0.1
md5
#对于来网络的访问,数据库“typhoon”对用户“typhoon”,如果提出访问的是本机,采用“md5”加密口令认证
host typhoon all 0.0.0.0 0.0.0.0
reject
#对于来网络的访问,数据库“typhoon”对上面没提到的所有用户,不管提出访问的哪台机器,也不管它来自哪个子网,无条件拒绝认证
local all all
md5
#对于来自本地的访问,上面没提到的数据库对上面没提到的所有用户采用“md5”加密口令认证
host all all 0.0.0.0 0.0.0.0 md5
#对于来网络的访问,数上面没提到的数据库对上面没提到的所有用户,不管提出访问的哪台机器,也不管它来自哪个子网,采用“md5”加密口令认证
########################################
# Others are all denied 其他访问一概无条件拒绝
local all all
reject
host all all 0.0.0.0 0.0.0.0
teject
########################################
########################################
# All denied permissed, not safe
# 对所有访问都信任,太不安全,被我禁止掉了,只作为参考
#local all all
trust
#host all all 0.0.0.0 0.0.0.0
trust
########################################
[/code:1:cc99a78c8e]
这些认证的规则是从上到下一条一条加载的,要注意的是,里面的“all”并不是真正意义上的“所有”,只是前面的规定中没有提到的那部分。个人感觉用
“other”也许更恰当。
这样,最终的结果是:
所有用户都能通过加密口令访问“typhoon”以外的数据库,但是只有用户“typhoon”能以加密口令访问数据库“typhoon”。
操作篇
[客户端基本连接操作]====================
*查看PostgreSQL的系统表:
(摸索/查找中)
*终端登录:
psql -l[主机名/IP] -d[数据库名] -U[用户名]
*连接到另外一个数据库:
\c [数据库名]
*断开终端:
\q
========================================
[基本用户管理]==========================
*添加用户:
create user [用户名];
*修改用户密码:
alter user [用户名] with password [口令];
*删除用户:
drop user [用户名];
*查看用户信息:
(摸索/查找中)
========================================
[基本数据库操作]========================
*创建数据库:
create database [数据库名];
*查看数据库列表:
\d
*删除数据库:
drop database [数据库名];
*修改数据库的所有者:
(摸索/查找中)
========================================
[数据库内基本操作]======================
*给予某用户在某数据库创建表的授权:
(摸索/查找中)
*收回某用户在某数据库创建表的授权:
(摸索/查找中)
创建表:
create table ([字段名1] [类型1] <references 关联表名(关联的字段名)>,[字段名2]
[类型2],......<,primary key (字段名m,字段名n,...)>);
*查看表名列表:
\d
*查看某个表的状况:
\d [表名]
*重命名一个表:
alter table [表名A] rename to [表名B];
*修改表的所有者:
(摸索/查找中)
*删除一个表:
drop table [表名];
========================================
[表内基本操作]==========================
*在已有的表里添加字段:
alter table [表名] add column [字段名] [类型];
*删除表中的字段:
alter table [表名] drop column [字段名];
*重命名一个字段:
alter table [表名] rename column [字段名A] to [字段名B];
*给一个字段设置缺省值:
alter table [表名] alter column [字段名] set default [新的默认值];
*去除缺省值:
alter table [表名] alter column [字段名] drop default;
*将已存在的表里某列设置为主码:
(摸索/查找中)
*将已存在的表里某几列设置为主码:
(摸索/查找中)
*取消某列的主码资格:
(摸索/查找中)
在表中插入数据:
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);
修改表中的某行某列的数据:
update [表名] set [目标字段名]=[目标值] where [该行特征];
删除表中某行数据:
delete from [表名] where [该行特征];
delete from [表名];--删空整个表
========================================
[备份]==================================
备份一个数据库:
pg_dump 数据库名 > 备份文件
把备份文件导回原数据库或导入新数据库:
cat 备份文件 | psql 数据库名
最好先把这个数据库的认证改为“trust”。
备份一个表:
pg_dump -t table1 dbname > bk1.sql
========================================
ADD
你需要为psql程序带入参数:psql -d databasename -U username
-W。-d用来指定数据库,-U指定用户名,而-W要求psql提示你输入一个口令。当你成功地运行了psql以后,将每个CREATE
TABLE查询单独地粘贴到psql中并按回车键。如果在你的SQL语句中有错误,psql会给出相应提示。通过逐一地加入每一个表,你会得到每一个表的
调试信息,这样做起来相当简单。如果,在你输入了表的定义之后,你发现遗漏了一两个字段,有两种方法能
相关推荐
### PostgreSQL入门学习手册:深入理解PL/pgSQL函数与优化技巧 #### 一、PL/pgSQL函数执行机制与优化策略 PL/pgSQL(PostgreSQL过程语言)是PostgreSQL数据库内置的一种强大的编程语言,允许用户在数据库内部编写...
PostgreSQL 入门 PostgreSQL 是一个功能强大且可靠的开源关系数据库管理系统(RDBMS),广泛应用于各种领域。下面是 PostgreSQL 的安装、客户端使用和基本操作的详细介绍。 安装 PostgreSQL 1. 下载 PostgreSQL:...
PostgreSQL入门指南
**PostgreSQL 入门学习教程** PostgreSQL,简称 Postgres,是一种开源的对象关系型数据库管理系统(ORDBMS),因其强大的功能、高度的可扩展性和稳定性而受到全球开发者的青睐。本教程将帮助初学者理解 PostgreSQL ...
01★PostgreSQL入门★什么是PostgreSql?
图书《PostgreSQL从入门到精通》,东西不好找,赚点积分。向原作者和翻译者致敬!
这本书可能是一个适合初学者的快速入门指南,它可能包含了PostgreSQL的基础概念,如安装、基本语法、数据类型、表的创建和管理,以及简单的查询操作。第二版通常会根据前一版的反馈进行改进和更新,提供更清晰易懂的...
PostgreSQL-从入门到精通 洞庭湖的泥鳅翻译版 PostgreSQL is a powerful, open source object-relational database system. It has more than 15 years of active development and a proven architecture that has ...
【PostgreSQL】是一种高度成熟且功能丰富的开源(对象-关系型)数据库管理系统,它在业界被认为是主流数据库之一,尤其在企业级应用中受到广泛青睐。PostgreSQL 的特性包括支持复杂查询、事务处理、多版本并发控制...
**PostgreSQL 9.3 DBA最佳实战培训** 在IT领域,数据库管理是至关重要的,尤其是在企业级应用中。PostgreSQL作为一个开源的关系型数据库管理系统,因其强大的功能、稳定性及高度的可扩展性,受到了广大开发人员和...
总的来说,这套PostgreSQL入门视频教程全面覆盖了数据库的基础知识和实践操作,适合对数据库感兴趣的初学者和希望提升PostgreSQL技能的开发者。通过学习,你将能够熟练地搭建环境、操作数据库,并为后续的数据库设计...
这个“PostgreSQL从入门到精通视频教程”旨在帮助初学者和有经验的开发者深入理解PostgreSQL的核心概念和高级特性。 **一、基础篇** 1. **安装与配置**:了解如何在不同的操作系统(如Windows、Linux、macOS)上...
### PostgreSQL从入门到精通知识点 #### 第一章 PostgreSQL介绍 1. 数据库管理系统(DBMS)的定义和职责,它是用来管理数据的软件程序,提供了数据的定义、创建、维护和访问等功能。 2. 数据模型的概念,以及关系...
2. PostgreSQL入门:介绍PostgreSQL的安装、配置、基本操作,以及SQL语言的基础知识,如数据插入、查询、更新和删除。 3. PHP与PostgreSQL交互:讲解如何在PHP中连接、查询和管理PostgreSQL数据库,使用PDO或mysqli...
关于PostgreSQL入门的书,个人觉得很好~