如无意外,初始化成功后我们就可以建立自己的数据库了。首先要知道,数据库用户是这样访问数据的:
所以先要启动postmaster:
$postmaster -i -D/database&
“-i”选项允许从网络上访问数据库,如果要开发和使用Client/Server模式的应用程序,一定要加这个参数。“-D”指出数据库目录。“&"是以后台方式运行监听进程。
现在,我们创建一个数据库,假定叫“mydb”:
$createdb mydb
然后启动前端访问工具:
$psql mydb
这时会出现提示符:
mydb=>
我们便可以键入SQL语句构造数据库了。例如以下命令建立一张名叫“test”的表,它由三个字段(id、name、income)组成:
mydb=>create table test (id int2, name varchar(10), income int4);
以上操作如果没问题就表明PostgreSQL数据库已经创建成功。但还有一些问题需要解决,例如我们并不想让任何人在任何地方都能访问任何数据库文件,这就需要建立授权/鉴别机制来分辨哪些是合法用户的合法请求、哪些不是。
刚完成安装的PostgreSQL默认只有一个合法超级用户——dbms,只有它才能写服务器上的/database目录,但是也由于dbms一开始就存在,所以鉴别机制对它不起作用。只要它喜欢,可以访问任何数据库(因为dbms可以修改鉴别机制的配置文件,下面会提到)。正如Unix系统的root用户,它可以修改任何文件的权限、可以修改存放用户口令的shadow文件。所以当完成安装后,我们就要创建新的管理者,暂且称它为dba。
由于用字符界面的psql创建dba比较烦琐,所以最好用GUI的pgaclearcase/" target="_blank" >ccess,这需要我们成功安装RPM包⑧。完成后进入系统目录:
#cd /usr/lib/pgsql/pgaccess
把可执行属性赋予main.tcl:
#chmod +x main.tcl
然后便可以启动X Window,打开一个xterm窗口,运行pgaccess:
$./main.tcl
我们只须键入数据库名字(mydb)即可进入维护界面。我们必须创建一个新用户dba(记得为它指定password),并赋予它创建其它用户和数据库的权限,即选择以下两项:
Allow user to create databases
Allow user to create other users
保存并退出pgaccess。
最后要做的就是修改控制机器和用户访问数据库的配置文件:
$chmod u+w /database/pg_hba.conf
$emacs /database/ pg_hba.conf
里面有详细的说明,这里只是简单的介绍。文件除了注释以外,全部由统一格式的项组成:
entry_type DBNAME IP_ADDRESS ADDRESS_MASK USERAUTH [AUTH_ARG]
entry_type:项的类型,分两种,一种是“host”,另一种是“local”。host类型的项负责网络访问(带有IP地址的访问)的鉴别机制,local负责本地(即服务器自身)Unix Socket接口访问的鉴别;
DBNAME:数据库名字;
IP_ADDRESS:允许访问的IP地址范围(与IP_MASK一起决定);
ADDRESS_MASK:同上;
USERAUTH:鉴别方式;
[AUTH_ARG]:某些鉴别方式需要的参数。
如下例子:
host mydb 192.168.0.0
55.255.255.0 crypt
这条记录允许IP地址为192.168.0.x的机器通过加密的用户口令文件验证口令后访问mydb数据库。加密的用户口令文件是/database/pg_shadow。这是最常用的鉴别方式。
又如:
local all trust
这条记录允许所有用户本地访问(例如用远程登录方式访问)任何数据库(最好不要这样做,虽说SQL语句本身带有授权/鉴别机制,但小心一点还是没有坏处的)。
假定我们采用crypt鉴别方式控制对mydb的访问,并且通过网络连接到IP为192.168.0.3的Linux数据库服务器上的mydb数据库,这时就要提供用户名和口令:
$psql -d mydb -u -h 192.168.0.3
“-d”指出数据库名字,“-u”指出需要提供用户名和口令,“-h”指出服务器IP。一旦pg_hba.conf指定使用crypt机制则必须加“-u”参数,否则无法连接数据库,即使你是dbms。所以从今以后我们便要以dba的身份来维护数据库(dbms由于没有加密的口令存放在pg_shadow,所以无法通过crypt验证登录数据库,不过,必要时dbms还是可以修改pg_hba.conf来强行登录)。
心急的朋友已经忍不住了——怎样开发PostgreSQL的客户端应用呢?
放心,PostgreSQL提供了基于Windows95的ODBC驱动,只要安装了ODBC驱动,便可以用VC、Delphi等开发应用。另外,通过JDBC驱动访问PostgreSQL也可以(例如Jbuilder里有关的数据库访问API或JavaBean等)。
更详细的信息请参阅有关文档或访问http://www.postgresql.org。