MySQL數據庫的權限管理是非常重要的部分,一個完備的權限表設計可以有效保護數據庫權限安全。在此介紹一種通用的 MySQL 數據庫權限表設計方案,以供參考。
CREATE TABLE `mysql`.`users` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `username` VARCHAR(50) NOT NULL, `password` VARCHAR(256) NOT NULL, `email` VARCHAR(100) NOT NULL, `telephone` VARCHAR(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在用戶表中存儲用戶的基本信息,其中 username 和 password 分別保存了用戶的賬號和密碼,email 和 telephone 則保存用戶的聯系方式。在具體的使用中,可以根據需要添加或刪除相應的字段。
CREATE TABLE `mysql`.`permissions` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `permission_name` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
權限表中記錄了所有的權限信息,其中 permission_name 字段保存了權限名稱。
CREATE TABLE `mysql`.`user_permissions` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` INT UNSIGNED NOT NULL, `permission_id` INT UNSIGNED NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `user_permission_unique` (`user_id` ASC, `permission_id` ASC), INDEX `user_permission_index` (`user_id` ASC), CONSTRAINT `user_permission_fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `mysql`.`users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `user_permission_fk_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `mysql`.`permissions` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
用戶權限表則是用來記錄每個用戶擁有的權限信息。其中 user_id 字段為用戶表的外鍵,permission_id 為權限表的外鍵。使用兩個外鍵作為聯合主鍵,并添加唯一索引 user_permission_unique 來保證每個用戶只能擁有一次相同的權限。同時添加了 user_permission_index 索引方便查詢。
該設計方案可以很好地實現 MySQL 數據庫的權限控制,其中用戶表存儲用戶的基本信息,權限表存儲所有的權限信息,用戶權限表則記錄每個用戶擁有的權限信息。
上一篇css在加省略號
下一篇mysql數據庫本機登陸