`
deepfuture
  • 浏览: 4397529 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80021
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:69976
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103284
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285593
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15001
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67489
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32095
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45963
社区版块
存档分类
最新评论

PostgreSQL入门资料

阅读更多

① 到 http://www.postgresql.org/ 下载 PostgreSQL for Win 的 no installer 版本。现在最新的版本是8.2.5-1。直接解压就可以了。例如:
C:\postgreSQL
② 设置环境变量
C:> set PGHOME=C:\postgreSQL
C:> set PGDATA=%PGHOME%\data
C:> set PGLIB=%PGHOME%\lib
C:> set PGHOST=localhost
C:> set PATH=%PGHOME%\bin;%PATH%

③ initdb 初始化 数据库。
④ pg_ctl start 启动数据库
⑤ pg_ctl stop 停止数据库
⑥ post_svc -install 建立windows nt 服务(需要设置系统环境变量)
⑦ post_svc -remove 删除 windows nt 服务
⑧ 使用"createdb 库名" 新建数据库
⑨ 使用"createuser 用户名"创建数据库帐号
⑩ 使用"psql -h localhost -d 库名- U 用户名"进入数据库


提示:
对于入门者可以使用GUI管理工具 pgAdmin。

另附:

今天在整理资料的时候发现,Postgre出现了解压缩直接使用的版本,上边注明了for expert only. 呵呵,看来,不推荐生手使用。
为了试验一把,索性从它的官网上直接下载了一份postgresql-8.3.3-1-binaries-no-installer.zip

1. 将其解压到d:\pgsql8.3.3
2. 设置环境变量,我不想直接添加,而是写到了一个batch文件里,名为pgenv.bat
set PGHOME=d:\pgsql8.3.3
set PATH=%PGHOME%\bin;%path%
set PGHOST=localhost
set PGLIB=%PGHOME%\lib
set PGDATA=%PGHOME%\data

3.
执行 pgenv.bat
然后:
D:\pgsql8.3.3\bin>initdb
属于此数据库系统的文件宿主为用户 "******".
此用户也必须为服务器进程的宿主.
数据库簇将带有 locale Chinese_People's Republic of China.936 初始化.
initdb: locale Chinese_People's Republic of China.936 requires unsupported encod
ing GBK
Encoding GBK is not allowed as a server-side encoding.
Rerun initdb with a different locale selection.

这上边的意思好像是说不直接支持cp936, GBK,晕。于是,强制执行:
D:\pgsql8.3.3\bin>initdb --locale=zh_CN
initdb: 无效的 locale 名字 "zh_CN"
initdb: 无效的 locale 名字 "zh_CN"
initdb: 无效的 locale 名字 "zh_CN"
initdb: 无效的 locale 名字 "zh_CN"
initdb: 无效的 locale 名字 "zh_CN"
initdb: 无效的 locale 名字 "zh_CN"
属于此数据库系统的文件宿主为用户 "hex".
此用户也必须为服务器进程的宿主.
数据库簇将带有 locale Chinese_People's Republic of China.936 初始化.
initdb: locale Chinese_People's Republic of China.936 requires unsupported encod
ing GBK
Encoding GBK is not allowed as a server-side encoding.
Rerun initdb with a different locale selection.

还是不行,再换成下边的:
D:\pgsql8.3.3\bin>initdb --locale=C
属于此数据库系统的文件宿主为用户 "hex".
此用户也必须为服务器进程的宿主.
数据库簇将带有 locale C 初始化.
默认的数据库编码已经相应的设置为 SQL_ASCII.
The default text search configuration will be set to "english".
创建目录 d:/pgsql8.3.3/data ... 成功
creating subdirectories ... 成功
选择默认最大联接数 (max_connections) ... 100
selecting default shared_buffers/max_fsm_pages ... 32MB/204800
创建配置文件 ... 成功
在 d:/pgsql8.3.3/data/base/1 中创建 template1 数据库 ... 成功
initializing pg_authid ... 成功
initializing dependencies ... 成功
创建系统视图 ... 成功
loading system objects' descriptions ... 成功
创建字符集转换 ... 成功
creating dictionaries ... 成功
对内建对象设置权限 ... 成功
创建信息模式 ... 成功
清理数据库 template1 ... 成功
拷贝 template1 到 template0 ... 成功
copying template1 to postgres ... 成功
警告: 为本地连接启动了 "trust" 认证.
你可以通过编辑 pg_hba.conf 更改或你下
次运行 initdb 时使用 -A 选项.
Success. You can now start the database server using:
"postgres" -D "d:/pgsql8.3.3/data"
or
"pg_ctl" -D "d:/pgsql8.3.3/data" -l logfile start


本文来自: (www.91linux.com) 详细出处参考:http://www.91linux.com/html/article/database/PostgreSQL/20090331/16326.html

我下载了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 description. 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


摘自[http://cn.tech.yahoo.com/031118/142/1w6ex_3.html]:
你需要为psql程序带入参数:psql -d databasename -U username -W。-d用来指定数据库,-U指定用户名,而-W要求psql提示你输入一个口令。当你成功地运行了psql以后,将每个CREATE TABLE查询单独地粘贴到psql中并按回车键。如果在你的SQL语句中有错误,psql会给出相应提示。通过逐一地加入每一个表,你会得到每一个表的调试信息,这样做起来相当简单。如果,在你输入了表的定义之后,你发现遗漏了一两个字段,有两种方法能

文章来源于http://www.lupaworld.com
分享到:
评论

相关推荐

    PostgreSQL入门学习手册

    ### PostgreSQL入门学习手册:深入理解PL/pgSQL函数与优化技巧 #### 一、PL/pgSQL函数执行机制与优化策略 PL/pgSQL(PostgreSQL过程语言)是PostgreSQL数据库内置的一种强大的编程语言,允许用户在数据库内部编写...

    PostgreSQL从入门到精通

    PostgreSQL从入门到精通,PostgreSQL从入门到精通,PostgreSQL从入门到精通

    PostgreSQL从入门到精通视频教程(全).zip

    这个“PostgreSQL从入门到精通视频教程”旨在帮助初学者和有经验的开发者深入理解PostgreSQL的核心概念和高级特性。 **一、基础篇** 1. **安装与配置**:了解如何在不同的操作系统(如Windows、Linux、macOS)上...

    PostgreSQL入门指南.pdf

    PostgreSQL入门指南

    01PostgreSQL入门什么是PostgreSql?

    01★PostgreSQL入门★什么是PostgreSql?

    postgresql 教程 pdf 资料集合 .rar

    【PostgreSQL教程PDF资料集合】是一个综合性的学习资源包,主要涵盖了PostgreSQL数据库系统的各种教程和参考手册。这个RAR压缩包包含多个PDF文件,旨在满足从初学者到高级用户的不同学习需求。 首先,我们来看...

    postgresql 入门

    PostgreSQL 入门 PostgreSQL 是一个功能强大且可靠的开源关系数据库管理系统(RDBMS),广泛应用于各种领域。下面是 PostgreSQL 的安装、客户端使用和基本操作的详细介绍。 安装 PostgreSQL 1. 下载 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介绍 1. 数据库管理系统(DBMS)的定义和职责,它是用来管理数据的软件程序,提供了数据的定义、创建、维护和访问等功能。 2. 数据模型的概念,以及关系...

    PostgreSql入门学习教程

    **PostgreSQL 入门学习教程** PostgreSQL,简称 Postgres,是一种开源的对象关系型数据库管理系统(ORDBMS),因其强大的功能、高度的可扩展性和稳定性而受到全球开发者的青睐。本教程将帮助初学者理解 PostgreSQL ...

    postgresql PGCA 课程PPT01_postgresql_PGCA_PGCP_PGCM_课程全免费

    【PostgreSQL】是一种高度成熟且功能丰富的开源(对象-关系型)数据库管理系统,它在业界被认为是主流数据库之一,尤其在企业级应用中受到广泛青睐。PostgreSQL 的特性包括支持复杂查询、事务处理、多版本并发控制...

    postgresql在windows下的快速入门

    ### PostgreSQL在Windows下的快速入门知识点 #### 一、概述 PostgreSQL是一款强大的开源关系型数据库管理系统,因其稳定性、可扩展性和丰富的功能集受到广泛好评。本文档主要介绍如何在Windows环境下快速安装并使用...

    PostgreSQL内核扩展入门.pdf

    上述内容总结了PostgreSQL内核扩展入门的基本知识点,包括PostgreSQL的整体流程、性能分析方法、自定义函数与数据类型、索引接口、内核扩展接口以及技术整合等方面。掌握了这些知识点,开发者可以进一步深入学习...

Global site tag (gtag.js) - Google Analytics