MySQL数据库第八章总结:数据库的安全性维护
MySQL安全管理通过创建用户、用户授权、用户登录3个步骤的用户管理来实现。MySQL安全系统非常灵活,可以通过命令或界面化登录,而用户权限也可以从数据库、表、列及其他数据库对象的不同授权来达到,既满足用户的需求,又限制用户不能超出访问、操作的权限。 任务8.1、添加数据库用户 1.MySQL的权限表 MySQL通过权限表来控制用户对数据库的访问,MySQL数据库在安装时会自动安装多个数据库。MySQL 权限表存放在名称为 MySQL 的数据库中。常用的权限表有user、db、host、table _ priv、columns_ priv 和 procs_ priv。 (1) user 权限表。user 是 MySQL 中最重要的一个权限表,user 列主要分为4个部分:用户列、权限列、安全列和资源控制列。 ①用户列:用户登录时通过表中的 Host、User 和 Password 列判断连接的 IP、用户名称和密码是否存在于表中来通过身份验证或拒绝连接。 ②权限列:user 表中包含多个以“_ Priv”结尾的字段,这些字段决定了该用户的权限,既包括查询权限、插人权限、更新权限、删除权限等普通权限,也包括关闭服务器和加载用户等高级管理权限。 ③安全列:ssl(加密)、x509(标识用户)开头的字段,以及 plugin 和 authentication _string 字段(验证用户身份、授权的插件)。 ④资源控制列:max(最大允许次数,0 表示无限制)开头的字段。 max _questions:表示每小时允许执行查询数据库的次数。 max _updates:表示每小时允许执行更新数据库的次数。 max_connections:表示每小时允许执行连接数据库的次数。 max_user_conntions:表示单个用户同时连接数据库的次数。 (2) db、host 权限表。db 权限表存储用户在各个数据库上的操作权限,决定哪些用户可以从哪些主机访问哪些数据库。 host 权限表是 db 权限表的扩展,配合 db 权限表对给定主机上数据库级操作权限做更细致的控制。host 权限表很少使用,只有在 db 表的范围内扩展一个条目时才会用到。 (3)table_ priv 权限表。记录数据表级别的操作权限。table _ priv 权限表与db权限表相似,不同之处是它用于数据表而不是数据库。 (4) columns _priv 权限表。记录数据字段级别的操作权限。columns _priv 权限表的作用与table_priv 权限表类似,不同之处是它针对某些表的特定字段的权限。 (5) procs _priv 权限表。该权限表存储用户在存储过程和函数上的操作权限。 2.添加用户 新安装的 MySQL 中只有一个名称为 root 的用户。这个用户是安装服务器时由系统创建并赋予了 MySQL 的所有权限。在对 MySQL 的实际操作中,通常需要创建不同层次要求的用户来确保数据的安全访问。添加用户可以通过 CREATE USER.INSERT和 GRANT 语句来实现。 (1)CREATE USER 语句的语法格式为: CREATE USER@[IDENTIFIED BY [PASSWORD] []]; 说明: ①使用 CREATE USER 语句可以创建一个或多个用户,用户之间用逗号分隔。 ②“主机”可以是主机名或 IP 地址,本地主机名可以使用 localhost,“%”表示一组主机。 ③“IDENTIFIED BY”关键字用于设置用户的密码,若指定用户登录不需要密码,则可以省略该选项。 ④“PASSWORD”关键字指定使用哈希值设置密码。密码的哈希值可以使用PASSWORD()函数获取。 (2)INSERT 语句的语法格式为: INSERT INTO mysql. user(User,Host,Password) Values(,,PASSWORD()); 说明:通常语句只能添加 Host、User、Password 字段的值,分别表示 user 数据表中的主机名字段、用户名字段和密码字段。 注意,GRANT 语句在授予用户权限任务部分详细讲解。 任务8.2、授权、回收数据库用户权限 新添加的数据库用户既不允许访问其他用户的数据库,也不能创建自己的数据库,只有在授予了相应的权限后才能访问或创建数据库,为满足 MySQL 服务器的安全需要考虑以下内容。 ①多数用户只需要对数据表进行读、写操作,只有少数用户需要创建、删除数据表。 ②某些用户需要读、写数据而不需要修改数据。 ③某些用户允许添加数据而不允许删除数据。 ④管理员用户需要有管理用户的权力,而其他用户则不需要。 ⑤某些用户允许通过存储过程来访问数据,而不允许直接访问数据表。 1.授予用户权限 GRANT 语句不仅是授权语句,还可以达到添加新用户或修改用户密码的作用。GRANT 语句的语法格式为: GRANT [(字段列表)] ON TO @ [IDENTIFIED BY [PASSWORD]] [WTTH GRANT OPTION]; 说明: ①“权限名称”中常用的权限如下。 ALL [PRIVILEGES]:除 GRANT OPTION 之外的所有简单权限。 CREATE:允许创建数据表。 ALTER:允许修改数据表。 DROP:允许删除数据表。 SELECT:允许检索数据表。 INSERT:允许在数据表中插入数据。 DELETE:允许在数据表中删除数据。 UPDATE:允许在数据表中更新数据。 INDEX:允许在数据表中定义索引。 CREATE VIEW:允许创建视图。 EXECUTE:允许运行指定的存储过程, ②“对象名”有以下权限级別。 全局权限:适用于一个给定服务器中的所有数据库数据库系统安全,可以用“*.*”来表示。 数据库权限:适用于一个给定数据库中的所有数据库对象,可以用“数据库名。*”来表示。 表权限:适用于一个给定表中的所有列,可以用“数据库名,表名”来表示。 列权限:适用于一个给定表中的单一列,可以先用“数据库名,表名”来表示,再在权限名称后加上“[(字段列表)]”可选项,如 SELECT(员工 ID,姓名)。 子程序权限:适用于给定存储过程或函数,可以用“PROCEDURE |FUNCTION 数据库名.过程名”来表示。 ③“@”中若“用户名”不存在则添加用户。“[IDENTIFIEDBY [PASSWORD]]”可选项可以设置新用户的密码,若“用户名”已经存在,则此选项可以修改用户的密码。 ④“[WITH GRANT OPTION]”可选项表示允许用户将获得的权限授予其他用户。 2.查看用户权限 (1)使用 SHOW GRANTS 语句查看授权信息,其语法格式为: SHOW GRANTS FOR @ (2)使用SELECT 语句查看 mysql.user表中用户的全局权限,其语法格式为: SELECTFROM mysql.user [WHERE User=AND Host=]; 说明:“mysql.user”表可以查询到用户的全局权限,“<权限字段>”中常用的权限字段Select_priv、Insert_priv、Create_priv等,mysql.db中可以查询到用户的数据库权限。 3.回收用户权限 使用REVOKE语句回收用户权限,其语法格式为: REVOKE [(字段列表)] ON FROM @ ; 说明:REVOKE语句用来取消指定用户的某些指定权限,与GRANT语句类似。 任务8.3、数据库用户管理 当管理员在MySQL中添加了用户后,因为各种问题可能需要对用户进行改名、修改密码或删除用户来实现对用户的管理。 1.修改用户的名称 使用 RENAME USER 语句可以修改用户的名称,其语法格式为: RENAME USER @ TO @ ; 说明:RENAME USER 语句可以对用户进行重命名,该语句可以同时对多个已存在的用户进行重命名,各个用户之间使用逗号分隔,重命名时“旧的用户名”必须已经存在,并且“新的用户名”还不存在,使用者必须拥有“RENAME USER”权限。 2.修改用户的密码 (1)使用mysqladmin命令修改用户密码的语法格式为: mysqladmin-u (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |