一个实现RBAC的SQL脚本

/**********************************************************************/

/* 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);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值