MySQL第八次总结

数据库的安全性维护

        数据库除了数据管理之外,安全管理也是很重要的部分,其中的用户权限管理可以有效保证数据的安全访问,防止数据被非必要用户泄露、修改或删除。因此,MySQL提供了用户管理来保证数据的安全性。
        MySQL.安全管理通过创建用户、用户授权、用户登录3个步骤的用户管理来实现。MySQL安全系统非常灵活,可以通过命令或界面化登录,而用户权限也可以从数据库、表、列及其他数据库对象的不同授权来达到,既满足用户的需求,又限制用户不能超出访问、操作的权限。

添加数据库用户

1、MySQL的权限表
        MySQL通过权限表来控制用户对数据库的访问,MySQL数据库在安装时会自动安装多个数据库。MySQL权限表存放在名称为MySQL的数据库中。常用的权限表有user、db、host、table_ priv、columns_priv和procs_priv。
        (1) user权限表。user是MySQI.中最重要的一个权限表,user列主要分为4个部分:用户列、权限列、安全列和资源控制列。
1、用户列:用户登录时通过表中的Host、User和Password列判断连接的IP、用户名称和密码是否存在于表中来通过身份验证或拒绝连接。
2、权限列:user表中包含多个以“_priv”结尾的字段,这些字段决定了该用户的权限,既包括查询权限、插入权限、更新权限、删除权限等普通权限,也包括关闭服务器和加载用户等高级管理权限。
3、安全列:ssl(加密)、x509(标识用户)开头的字段,以及 plugin和authenticationstring 字段(验证用户身份、授权的插件)。
4、资源控制列: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][<'密码>]];
说明:
1、使用CREATE USER语句可以创建一个或多个用户,用户之间用逗号分隔。
2、“主机”可以是主机名或IP地址,本地主机名可以使用localhost,“%”表示一组主机。
3、“IDENTIFIED BY”关键字用于设置用户的密码,若指定用户登录不需要密码,则可以省略该选项。
4、 “PASSWORD”关键字指定使用哈希值设置密码。密码的哈希值可以使用PASSWORD()函数获取。
(2)INSERT语句的语法格式为:


INSERT INTO mysql.user(User, Host,Password)
Values(<'用户名>,<主机>,PASSWORD(<密码>));


说明:通常语句只能添加Host、 User、 Password字段的值,分别表示user数据表中的主机名字段、用户名字段和密码字段。

授予用户权限
        GRANT语句不仅是授权语句,还可以达到添加新用户或修改用户密码的作用。GRANT语句的语法格式为:


        GRANT<权限名称[(字段列表)]ON<对象名>TO<用户名>@<”主机[IDENTIFIED BY [PASSWORD]<新密码>] [WITH GRANT OPTION];

说明:
1“权限名称”中常用的权限如下。


ALL[PRIVILEGES]:除GRANT OPTION之外的所有简单权限。
CREATE:允许创建数据表。
ALTER:允许修改数据表。
DROP:允许删除数据表。
SELECT:允许检索数据表。
INSERT:允许在数据表中插入数据。
DELETE:允许在数据表中删除数据。
UPDATE:允许在数据表中更新数据。
INDEX:允许在数据表中定义索引。
CREATE VIEW:允许创建视图。
EXECUTE:允许运行指定的存储过程。


2、“对象名”有以下权限级别。
        全局权限:适用于一个给定服务器中的所有数据库,可以用“*.×”来表示。数据库权限:适用于一个给定数据库中的所有数据库对象,可以用“数据库名.来表示。
        表权限:适用于一个给定表中的所有列,可以用“数据库名.表名”来表示。列权限:适用于一个给定表中的单一列,可以先用“数据库名,表名”来表示,再在权限名称后加上“[(字段列表)]”可选项,如SELECT(员工ID.姓名)。
        子程序权限:适用于给定存储过程或函数,可以用“PROCEDURE|FUNCTION数据库名,过程名”来表示。
3、 “<用户名@<'主机>”中若“用户名”不存在则添加用户。”[IDENTIFIEDBY[PAS5WORD]<新密码>]”可选项可以设置新用户的密码,若“用户名”已经存在,则此选项可以修改用户的密码。
4、"[WITH GRANT OPTION]”可选项表示允许用户将获得的权限授予其他
2.查看用户权限
用户。


(1)使用SHOW GRANTS语句查看授权信息,其语法格式为:
SHOW GRANTS FOR<'用户名'>@<'主机'>

(2)使用SELECT语句查看mysql.user表中用户的全局权限,其语法格式为:

SELECT <权限字段>FROM mysql.user

[WHERE User=<'用户名>AND Host=<'主机>];
 

说明:“mysql.user”表可以查询到用户的全局权限,“<权限字段>”中常用的权限字段有Select_priv、Insert_priv、Create_priv等,mysql.db中可以查询到用户的数据库权限。
3.回收用户权限


使用REVOKE语句回收用户权限,其语法格式为:
REVOKE<权限名称>[(字段列表)]ON<对象名>FROM<用户名>@<主机>;
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值