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