安装好sybase数据库服务器以后,没有什么比使用这个数据库最重要的事情了。
一、创建数据库
但是在开始之前,很有必要定义用户数据库所需要的存储区域,而不要在服务器默认的主设备(master)上创建用户数据库.
创建数据库设备:通过sybase安装过程创建了master和sybsystemprocs,所有其他的数据库设备则是通过 disk init 命令来创建。我们必须保证sybase的用户对欲创建的设备的目录具有读写权限,否则就无法创建成功。先以sybase用户登陆linux系统(数据库是以sybase用户安装的,关于安装和初试配置,请参照“Redflag Server 4搭建sybase”一文),进入sybase用户的主目录 /opt/sybase,创建目录userdata;启动数据库服务,用sybase的isql连接数据库,然后执行disk init 来完成此项操作。
[sybase@sybase sybase]$ cd ASE-12_5/install
[sybase@sybase install]$ ./startserver //启动sybase服务器
[sybase@sybase sybase]$ cd
[sybase@sybase sybase]$ mkdir userdata //创建目录用于存放用户数据库
[sybase@sybase sybase]$ cd /OCS-12_5/bin
[sybase@sybase bin]$ ./isql –U sa –S SYBASE //连接数据库服务器,我的数据//库服务器名称为SYBASE,sa
//密码为空
[sybase@sybase bin]$ ./isql -U sa -S SYBASE //下面是回显
保密字:
Msg 2401, Level 11, State 2:
Server 'SYBASE':
Character set conversion is not available between client character set 'gb18030'
and server character set 'iso_1'.
No conversions will be done.
Msg 4017, Level 16, State 1:
Server 'SYBASE':
Neither language name in login record 'chinese' nor language name in syslogins
'<NULL>' is an official language name on this SQL Server. Using server-wide
default 'us_english' instead. //回显到此,进入客户操作模式
1> disk init //如果输错了,按“Ctrl”+”back space”删除
2> name=userdev, //命名最好便于识别为佳
3> physname=”/opt/sybase/userdata/userdev.dat”, //要用绝对路径
4> size=”500M”
5> go
1> disk init //给日志文件分配设备
2> name=logdev,
3> physname=”/opt/sybase/userdata/logdev.dat”,
4> size=”50M”
5> go
更改默认设备:如本文开头部分所言,为了防止用户数据库被分配到数据库系统主设备master上,应该在安装完数据库后修改默认设备—安装完sybase ASE后,master是唯一的默认设备。Sybase建议,master设备只应该提供给系统数据库而不是用户数据库。因此,对于用户数据库,我们应当单独创建设备,并且把用户设备设置成默认状态。上一步我们已经创建了用户设备“userdev”和“logdev”.其过程如下:
1> sp_diskdefault ‘master’, ‘defaultoff’ //取消master的默认设备资格
2> go
1> sp_diskdefault ‘userdev’, ‘defaulton’ //设定uerdev为默认设备
2> go
1> sp_diskdefault ‘logdev’, ‘defaulton’ //设定logdev为默认设备
2> go
在后面创建用户数据库的过程中,如果不指定数据库设备,则该用户数据库理所当然地创建在默认设备。
创建数据库:本数据库创建在设备 userdev上,而在分开的设备(logdev)上创建数据库日志。
1> create database mydatabase //创建一个名为mydatabase的数据库
2> on userdev = “50M” //数据库的存储空间为50M,数据库设备
//是userdev,而不是master
3> log on logdev=”10M” //日志文件的存储空间为10M
4> go
也可以用命令 create database mydatabase 来创建用户数据库mydatabase,这个数据库也会默认的创建在设备userdev上,日志文件也创建在userdev,但不幸的的是,用户创建的这个数据库将只有2M的容量,恐怕这不是创建者所期望的。因此,不管是Sybase还是我本人,都强烈建议使用上表的过程创建用户数据库,以便于这个数据库可以满足真实的应用场景。创建完数据库后,我们很想知道创建的这个数据库到底是怎么一个状况?通过系统存储过程-sp_helpdb来获得数据库的各种信息。下面是我的某个sybase服务器的范例:
1> sp_helpdb
2> go
name db_size owner dbid
created
status
------------------------ ------------- ------------------------ ------
------------------
------------------------------------------------------------------------------------------------------
master 12.0 MB sa 1
Jun 28, 2005
mixed log and data
model 4.0 MB sa 3
Jun 28, 2005
mixed log and data
myfirstdatabase 110.0 MB sa 4
Jul 08, 2005
no options set
secdatadb 98.0 MB sa 5
Jul 08, 2005
no options set
sybsystemdb 4.0 MB sa 31513
Jun 28, 2005
mixed log and data
sybsystemprocs 120.0 MB sa 31514
Jun 28, 2005
trunc log on chkpt, mixed log and data
tempdb 4.0 MB sa 2
Aug 13, 2005
select into/bulkcopy/pllsort, trunc log on chkpt, mixed log and data
(1 row affected)
(return status = 0)
1>
在创建用户数据库时,应该预留足够大的空间,以便能够保留将来输入的所有数据。但是也不要把数据库定义得太大,以免在将来恢复数据时产生麻烦。究竟需要定义多大的空间才算合适,这需要数据库管理员多次试验才可以决定的。一个经验是-低估一个数据库的大小比高估要好,如果数据库空间太小了,可以很容易的扩充数据库的空间,如果空间过大,则非常麻烦。这里,我们来修改一下前面创建的数据库的空间大小,过程如下:
1> alter database mydatabase
2> on userdev=”1024M” //由50M变成1G
3> log on logdev=”50M” //由10M变成50M
4> go
二、数据库的管理
设置数据库管理员密码:在安装完sybase ASE数据库后,数据库管理员的默认管理员密码为空,基于安全考虑,必须为数据库管理员账号设置密码。先以账号sybase登录系统,然后启动Sybase数据库,用isql连接数据库服务器(操作过程如前面“创建数据库设备”一节),接着执行下面的操作:
1> sp_password null , dr5623H //设置新密码为“dr5623H”
2> go
在退出数据库,下一次客户端连接数据库时,提示用户输入密码。
用户和授权:sybase ASE服务器提供一种严密的体系来保障数据的安全,并且使数据的保护级别达到非常精细的程度。在通常情况下,数据库服务器不是只给一个用户sa来使用,为了让数据库满足实际需求,需要在 sybase 数据库里添加账号/用户,为添加的用户分配适合的权限。这个操作分以下几步进行:
1、 添加数据库系统的注册账号。执行存储过程sp_addlogin来完成数据库注册账号的添加,如 exec sp_addlogin sery , d7#W6g , mydatabase 表示添加一个注册账号sery,密码是“d7#W6g”,登录到默认数据库为“mydatabase”。这个操作执行完毕后,将在master数据库的syslogins表中增加一行纪录。添加数据库系统注册账号属于服务器级的安全,换句话说就是这个账号只能连接数据库服务器,但没有访问用户数据库的权力。
2、 添加数据库用户。执行存储过程sp_adduser将用户直接添加到数据库,添加数据库用户属于数据库级的安全,这时才可以以用户的身份访问用户数据库。这个操作执行完毕后,将在允许访问的数据库的sysusers表中添加纪录。
3、 授权。能够访问数据库但并不意味可以访问其中的数据,有时需要具备单个数据库对象的相应许可,才可以选取、更改数据库所属表中的数据信息或执行一个存储过程。这是属于对象访问级的安全。授权的格式为: grant <权限列表> on <表名> to <角色/用户>。这个操作执行完毕后,会向sysprotects表中添加纪录。
接着,我们通过下面的事例来总结这3个步骤:
[sybase@sybase sybase]$ cd ASE-12_5/install
[sybase@sybase install]$ ./startserver //启动sybase服务器
[sybase@sybase sybase]$ cd /OCS-12_5/bin
[sybase@sybase bin]$ ./isql –U sa –S SYBASE –P dr5623H
1> sp_addlogin sery , d7#W6g , mydatabase
2> go
1> use mydatabase
2> go
1> sp_adduser sery
2> go
1> grant select ,insert, update on custom to sery
2> go
1> shutdown
2> go
[sybase@sybase bin]$ ./isql –U sery –S SYBASE –P d7#W6g //以用户sery登录数
//据库mydatabase
1>
为了便于维护和管理数据库,最好让注册名和数据库用户名使用相同的名称。另外,注册用户的删除、数据库用户的删除以及授权的删除都是比较简单的了,请参照下面的操作:
1> revoke select ,insert, update on custom from sery
2> go
1> sp_dropuser sery
2> go
1> sp_droplogin sery
2> go
需要注意的是,上述操作除用户sery登录数据库外,都是在sa下完成的。