http://www.wohedb.com/db_html_doc/db_tutorial/tutorial_1_install.htm
http://www.wohedb.com 中文数据库管理系统
第一章 安装数据库
1.1安装软件
数据库软件安装的过程很简单,将软件包直接解开,即可使用,假设数据库软件包是postgres.tar.gz,执行下面两个命令就可以解开软件包:
(1) gzip -d postgres.tar.gz
(2)tar xvf postgres.tar
假设解开后的软件包存放在目录/home/test/postgres下,应该在操作系统中设置将/home/test/postgres/bin添加到PATH环境变量中,将/home/test/postgres/lib添加到LD_LIBRARY_PATH环境变量中。
如果使用的是bash,执行下面两个命令来设置这两个环境变量:
export PATH=/home/test/postgres/bin:$PATH
export LD_LIBRARY_PATH=/home/test/postgres/lib:$LD_LIBRARY_PATH
如果使用的是csh,执行下面两个命令来设置这两个环境变量:
setenv PATH=/home/test/postgres/bin:$PATH
setenv LD_LIBRARY_PATH=/home/test/postgres/lib:$ LD_LIBRARY_PATH
1.2创建数据库集群
安装好数据软件以后,应该使用数据库提供的工具initdb来创建一个数据库集群。一个数据库集群由多个数据库组成,一个数据库实例(所有的数据库进程加上它们使用的共享内存)只能管理一个数据库集群。
使用initdb创建数据库集群时,必须指定数据库使用的字符集和一个数据文件目录,数据文件目录中将存放数据库集群中的所有数据库的数据文件。当前PostgreSQL数据库可以使用的支持中文的字符集是utf8。initdb使用选项--locale指定数据库的字符集,使用选项-D指定数据文目录。 例如:
initdb --locale=zh_CN.utf8 -D /home/testdb
这个命令创建了一个数据库集群,它使用的字符集是utf8,所有的数据文件都存放在目录/home/testdb下面。
选项-D指定的目录如果不存在,initdb会自动创建这个目录。选项-D指定的目录如果存在,则它必须是个空目录,否则initdb将会报错,并停止执行。
initdb命令会在创建一个数据库集群以后,会自动在集群中创建一个名为postgres的数据库。同时会自动创建一个数据库超级用户postgres,initdb在执行的过程中会要求为这个用户指定一个密码。
1.3启动和关闭数据库
使用工具pg_ctl 来启动和关闭数据库。启动和关闭数据库时必须指定数据文件的目录,和initdb一样,使用-D选项来指定数据文件目录。
下面的命令启动位于/home/oracle/testdb的数据库:
pg_ctl –D /home/oracle/testdb start
下面的命令关闭位于/home/oracle/testdb的数据库:
pg_ctl –D /home/oracle/testdb stop
用pg_ctl来启动和关闭数据库时,每次都要指定数据文件目录很不方便。可以将操作系统环境变量PGDATA的值设为数据文件的目录,这样就可以用pg_ctl start来启动数据库,用pg_ctl stop来关闭数据库。
使用pg_ctl stop关闭数据库时,等所有的用户从数据库中退出以后,数据库才会被关闭,等待的时间可能比较长。如果想快速关闭数据库可以用pg_ctl stop -m fast和pg_ctl stop -m immediate。immediate是最快的关闭数据库的方式,所有的数据库进程将被直接杀死。使用fast关闭数据库时,首先进行回滚正在执行的事务的操作,然后再关闭数据库。
数据库启动以后,执行操作系统命令ps -efw可以看到下面几个进程:
yan 8181 1 0 22:02 pts/3 00:00:00 pg_postmaster
yan 8184 8181 0 22:02 ? 00:00:00 pg_logger
yan 8186 8181 0 22:02 ? 00:00:00 pg_db_writer
yan 8187 8181 0 22:02 ? 00:00:00 pg_wal_writer
yan 8188 8181 0 22:02 ? 00:00:00 pg_autovacuum_launcher
yan 8189 8181 0 22:02 ? 00:00:00 pg_archiver
另外,数据库运行日志中可以看到下面的信息:
日志: 00000: 数据库上次于2009-03-01 21:41:05 CST被关闭。
日志: 00000: 自动vacuum控制进程已启动。
日志: 00000: 数据库已经准备好接受用户连接请求。
数据库运行日志一般存放在数据文件目录的pg_log子目录下面。
1.4访问数据库
数据库启动以后,可以使用工具psql来访问数据库。使用psql连接数据库时,必须指明运行数据库的服务器的名字(-h)、数据库监听的端口号(-p)、要连接的数据库的名字、数据库用户名(-U),有时还需要指定数据库用户的密码(-W)。如果没有指明数据库用户名,则默认以postgres作为用户名连接数据库。如果没有指明数据库名称,则默认以postgres作为数据库的名称。例如:
(1)下面的命令试图连接数据库postgres,运行数据库的机器名是server_1,数据库监听的端口是5432,连接数据的用户名是postgres,用户postgres的密码是abcde:
psql -h server_1 -p 5432 –U postgres –W abcde postgres
(2)下面的命令同样试图连接数据库postgres,运行数据库的机器名是server_1,数据库监听的端口是5432,连接数据的用户名是postgres,用户postgres的密码是abcde,在这条命令中没有使用选项-U来指定数据库用户名,也没有指定要连接的数据库用户名。系统默认用postgres作为数据库用户名和数据库的名字:
psql -h server_1 -p 5432 –W abcde
连接成功以后,将会得到下面的提示信息:
欢迎使用 psql 8.3.3 (server ), PostgreSQL 交互终端.
Type: /copyright 列出版权信息
/h 列出SQL命令
/? 列出psql命令
/g 或者以分号结束执行查询
/q 退出
如果设置了环境变量PGHOST和PGPORT, 而在用psql连接数据库时,没有指定运行数据库的服务器的名字和数据库监听的端口号,将用PGHOST和PGPORT的值分别作为运行数据库的服务器的名字和数据库监听的端口号。
用户可以用在psql中执行create database命令来创建自己的数据库。例如,下面的命令创建一个名为mydb的数据库:
postgres=# create database mydb;
CREATE DATABASE