为了保障数据库操作的安全性,我们需要对用户的权限进行控制和管理。而在MySQL中,可以通过建立五张表来实现不同层级的权限控制。
第一张表为user表,用于存储MySQL的用户信息,包括username、password等。创建语句如下:
CREATE TABLE user (userid INT NOT NULL AUTO_INCREMENT,username VARCHAR(20) NOT NULL,password VARCHAR(20) NOT NULL,PRIMARY KEY (userid));
第二张表为role表,用于存储各种角色的信息,包括角色名和描述等。创建语句如下:
CREATE TABLE role (roleid INT NOT NULL AUTO_INCREMENT,rolename VARCHAR(20) NOT NULL,description VARCHAR(50),PRIMARY KEY (roleid));
第三张表为operation表,用于存储所有可用的操作,例如:SELECT、INSERT、DELETE、UPDATE等。创建语句如下:
CREATE TABLE operation (operationid INT NOT NULL AUTO_INCREMENT,operationname VARCHAR(20) NOT NULL,PRIMARY KEY (operationid));
第四张表为role_operation表,用于存储各种角色所拥有的操作权限。创建语句如下:
CREATE TABLE role_operation (id INT NOT NULL AUTO_INCREMENT,roleid INT NOT NULL,operationid INT NOT NULL,PRIMARY KEY (id),FOREIGN KEY (roleid) REFERENCES role(roleid),FOREIGN KEY (operationid) REFERENCES operation(operationid));
最后一张表为user_role表,用于存储每个用户所属的角色列表。因为一个用户可能会有多个角色,所以需要使用一对多关系进行对应。创建语句如下:
CREATE TABLE user_role (id INT NOT NULL AUTO_INCREMENT,userid INT NOT NULL,roleid INT NOT NULL,PRIMARY KEY (id),FOREIGN KEY (userid) REFERENCES user(userid),FOREIGN KEY (roleid) REFERENCES role(roleid));
通过以上五张表的建立,我们可以实现MySQL的细粒度权限控制,可以根据用户身份和角色来限制不同的操作权限。