/**********************************************************************/
/* RBAC Implement SQL Script For Mysql */
/* */
/* Installs the tables and initialize the membership data */
/* */
/* Author:Kevin Yin */
/* http://blog.csdn.net/enjoyo/ */
/* 欢迎对此脚本提出建议,也欢迎使用本脚本构建您的系统,但本人不对你的系统进行任何明示的或暗示的担保 */
/* 转载请保留此声名 */
/**********************************************************************/
/*程序模块表*/
CREATE TABLE `mbs_modules_t` (
`nModuleID` INT NOT NULL
AUTO_INCREMENT PRIMARY KEY , /*模块ID*/
`chModuleName` VARCHAR( 128 ) NOT NULL , /*模块名称*/
`chLoModuleName` VARCHAR( 128 ) NOT NULL , /*模块名称(小写)*/
`szVersion` VARCHAR( 128 ) not null, /*模块版本号*/
`szDescription` VARCHAR( 255 ) NOT NULL , /*模块描述*/
UNIQUE (`chLoModuleName` )
) ENGINE = MYISAM ;
/*权限表*/
CREATE TABLE `mbs_privileges_t` (
`nPrivilegeID` INT NOT NULL
AUTO_INCREMENT PRIMARY KEY , /*权限ID*/
`nModuleID` INT NOT NULL , /*所属模块名*/
`szPrivilegeName` VARCHAR( 128 ) NOT NULL , /*权限名称*/
`szLoPrivilegeName` VARCHAR( 128 ) NOT NULL , /*权限名称(小写)*/
`nWParam` INT NOT NULL DEFAULT '0', /*附加参数配置*/
`nLParam` INT NOT NULL DEFAULT '0', /*附加参数配置*/
`szMsg` VARCHAR( 255 ) NULL, /*附加参数配置*/
`szDescription` VARCHAR( 255 ) NOT NULL , /*权限描述*/
INDEX ( `nModuleID` ) ,
UNIQUE (
`szLoPrivilegeName`
)
) ENGINE = MYISAM ;
/*角色表*/
CREATE TABLE `mbs_roles_t` (
`nRoleID` INT NOT NULL
AUTO_INCREMENT PRIMARY KEY , /*角色ID*/
`szRoleName` VARCHAR( 128 ) NOT NULL , /*角色名*/
`szLoRoleName` VARCHAR( 128 ) NOT NULL , /*角色名(小写)*/
`bIsSysDef` INT NOT NULL DEFAULT '0', /*是系统角色(1)
还是用户添加的角色(0)*/
`nWParam` INT NOT NULL DEFAULT '0', /*附加参数配置*/
`nLParam` INT NOT NULL DEFAULT '0', /*附加参数配置*/
`szMsg` VARCHAR( 255 ) NULL, /*附加参数配置*/
`szDescription` VARCHAR( 255 ) NOT NULL , /*角色描述*/
UNIQUE (
`szLoRoleName`
)
) ENGINE = MYISAM ;
/*角色与权限对应表*/
CREATE TABLE `mbs_privilege2role_t` (
`nRoleID` INT NOT NULL , /*角色ID*/
`nPrivilegeID` INT NOT NULL , /*权限值*/
`nWParam` INT NOT NULL DEFAULT '0', /*附加参数配置*/
`nLParam` INT NOT NULL DEFAULT '0', /*附加参数配置*/
`szMsg` VARCHAR( 255 ) NULL, /*附加参数配置*/
PRIMARY KEY ( `nRoleID` , `nPrivilegeID` )
) ENGINE = MYISAM ;
/*角色继承表,1.在RoleID的继承树上不能出现自己 2.本系统采用的是Limited继承
即多个父节点只能有一个子节点,继承树是一棵反向的数结构*/
CREATE TABLE `mbs_roleinherit_t` (
`nRoleID` INT NOT NULL , /*角色ID*/
`nParentRoleID` INT NOT NULL , /*父角色ID*/
PRIMARY KEY ( `nRoleID` , `nParentRoleID` )
) ENGINE = MYISAM ;
/*角色职责关系隔离 Separation of duty,即在在一个用户中不能共存的角色*/
/*nSodID: 一个nORoleID和一个nARoleID不能共存,nSodID=0
一个nORoleID和多个nARoleID组合不能共存,nSodID=nORoleID+sum(nARoleID)
多个nORoleID和多个nARoleID组合不能共存,nSodID= 0 - (sum(nORoleID)+sum(nARoleID))
*/
CREATE TABLE `mbs_rolesod_t` (
`nORoleID` INT NOT NULL , /*角色ID*/
`nARoleID` INT NOT NULL , /*角色ID*/
`nSodID` INT NOT NULL , /*SodID,用于区分不同的SOD*/
PRIMARY KEY ( `nORoleID` , `nARoleID` , `nSodID`)
) ENGINE = MYISAM ;
/*用户表*/
CREATE TABLE `mbs_users_t` (
`nUserID` INT NOT NULL
AUTO_INCREMENT PRIMARY KEY , /*用户ID*/
`szUserName` VARCHAR( 128 ) NOT NULL , /*用户名*/
`szLoUserName` VARCHAR( 128 ) NOT NULL , /*用户名(小写)*/
`szNickName` VARCHAR( 128 ) NOT NULL , /*用户昵称*/
`bIsAnonymous` int not null, /*是否是匿名用户 0 不是 1 是*/
`szPassword` varchar(128) not null, /*Password ,plaintext, hashed,
or encrypted; base-64-encoded
if hashed or encrypted*/
`szPasswordFormat` int not null, /*密码的加密方式
0=Plaintext, 1=Hashed, 2=Encrypted*/
`szPasswordSalt` varchar(128) not null, /*Randomly generated 128-bit value
used to salt password hashes; stored in
base-64-encoded form*/
`szEMail` varchar(128) not null, /*用户EMail*/
`szLoEMail` varchar(128) not null, /*用户EMail(小写)*/
`szMobilePIN` varchar(16) null, /*用户手机号*/
`bIsApproved` int not null, /*审核 0 未审核通过,1审核通过*/
`bIsLockedOut` int not null, /*是否被锁定 0 否 1锁定*/
`dtCreate` datetime not null, /*帐户创建时间*/
`dtLastLogin` datetime not null, /*最后一次登录的时间*/
`nFailedPwdCount` int not null default 0, /*输入密码错误的次数*/
`nFailedPQACount` int not null default 0, /*密码问题错误次数*/
`nLoginTimes` int not null default 0, /*登录次数*/
UNIQUE (
`szLoUserName`,
`szLoEMail`
)
) ENGINE = MYISAM ;
/*用户配置表*/
CREATE TABLE `mbs_userprofile_t` (
`nUserID` INT NOT NULL, /*用户ID*/
`szProfileKey` VARCHAR( 128 ) NOT NULL , /*用户配置项键值*/
`szProfileValue` VARCHAR( 255 ) NOT NULL , /*用户配置项属性值*/
PRIMARY key(`nUserID`,`szProfileKey`)
) ENGINE = MYISAM ;
/*角色与权限对应表*/
CREATE TABLE `mbs_user2role_t` (
`nRoleID` INT NOT NULL , /*角色ID*/
`nUserID` INT NOT NULL , /*权限值*/
`nWParam` INT NOT NULL DEFAULT '0', /*附加参数配置*/
`nLParam` INT NOT NULL DEFAULT '0', /*附加参数配置*/
`szMsg` VARCHAR( 255 ) NULL, /*附加参数配置*/
PRIMARY KEY ( `nRoleID` , `nUserID` )
) ENGINE = MYISAM ;
/*在模块列表中添加MemberShip*/
INSERT INTO `mbs_modules_t` (`nModuleID`, `chModuleName`, `chLoModuleName`, `szVersion`,
`szDescription`) VALUES (1, 'MemberShip', 'membership', '1.0', 'MemberShip Management System');
/*插入用户角色*/
INSERT INTO `mbs_roles_t` (`nRoleID`, `szRoleName`, `szLoRoleName`, `szDescription`) VALUES
(1, 'Administrators', 'administrators', '管理员用户组,管理员对系统有不受限制的完全访问权'),
(2, 'Registered Users', 'registered users', '注册用户组,可以执行系统中属于会员的权限'),
(3, 'Guests', 'guests', '来宾用户组,按默认值,来宾跟用户组的成员有同等访问权,但来宾帐户的限制更多'),
(4, 'Anonymous', 'anonymous', '匿名用户组,比来宾用户的限制更多'),
(5, 'Denial Users', 'denial users', '黑名单用户组,系统将拒绝此用户组中的用户的任何操作,此用户组的优先级最高');
/*插入超级用户*/
INSERT INTO `mbs_users_t` ( `nUserID`, `szUserName`, `szLoUserName`, `szNickName`, `bIsAnonymous`,
`szPassword`, `szPasswordFormat`, `szPasswordSalt`, `szEMail`, `szLoEMail`, `szMobilePIN`,
`bIsApproved`, `bIsLockedOut`, `dtCreate`, `dtLastLogin`, `nFailedPwdCount`, `nFailedPQACount`,
`nLoginTimes` ) VALUES(1, 'Admin', 'admin', 'admin', 0, '123456', 0, '', 'admin@localhost.com',
'admin@localhost.com', '',1,0,now(),now(),0,0,0);
INSERT INTO `mbs_userprofile_t` (`nUserID`, `szProfileKey`, `szProfileValue`) VALUES
(1,'real name', 'admin'),(1,'msn', 'admin@localhost.com'),(1,'password question', 'admin'),
(1,'password answer', 'admin'),(1,'last password change date', now()),
(1,'last lock out date', now()),(1,'comment', '');
INSERT INTO `mbs_user2role_t` (`nRoleID`, `nUserID`) VALUES(1,1);