1. 概述
我们在安装Mysql时会自动安装一个名为mysql的数据库。这个数据库下面存储的是权限表。我们可以使用:show databases ;命令来查看所有的数据库列表。
Mysql会根据这些权限表的内容为每个用户赋予相应的权限,所以我们也是通过这些表来实现管理用户和权限的,如下图所示是在mysql数据库中存在的表:
MySQL存取控制包含2个阶段:
阶段1:服务器检查你是否允许连接。
阶段2:假定你能连接,服务器检查你发出的每个请求。看你是否有足够的权限实施它。例如,如果你从数据库中一个表精选(select)行或从数据库抛弃一个表,服务器确定你对表有select权限或对数据库有drop权限。
2. user表
user表的作用相当与mysql工作流程中的”用户管理模块”,它决定着我们对一个连接允许或拒绝,user表用于记录允许连接到服务器的用户帐号信息,里面的对于数据库的权限是全局生效的
如下图所示是user表结构:
2.1 根据user表结构,表的字段可以分为4类
(1) 用户列
Host 主机名 ——>如果想要从别的机器来登入数据库,Host可以设成 %
User 用户名
Password 密码
用户登录时,首先要判断这三个字段是否匹配,匹配则允许登录;
用户创建时,也是设置这三个字段的值;
修改用户密码时,实际也是修改了user表的Password字段的值。
(2) 权限列(以priv结尾的)
Grant_priv 是否有Grant权限
Shutdown_priv 是否有停止mysql服务的权限
Super_priv 是否有超级权限
Execute_priv 是否有执行存储过程和函数的权限
包含普通权限:查询权限、修改权限等 操作数据库的动作;
包含高级管理权限:关闭服务权限、超级权限、加载用户等 管理数据库的动作;
这些字段只有N和Y两个选项,为安全起见默认值都设为N;
对这些权限的管理可以使用GRANT语句、也可以通过UPDATE user表的这些列来实现。
(3) 安全列
(4) 资源控制列
max_questions 每小时允许执行多少次查询
max_updates 每小时允许执行多少次更新
max_connections 每小时允许建立多少连接
max_user_connections 单个用户可以同时具有的连接数
这些字段默认值为0,表示没有限制
2.2 帐户管理
MYSQL提供许多语句用来管理用户帐号,这些语句可以用来包括登录和退出MYSQL服务器、创建用户、删除用户、密码管理、权限管理
MYSQL数据库的安全性,需要通过帐户管理来保证登录和退出MYSQL
mysql命令的常用参数
-h:主机名或ip,默认是localhost,最好指定-h参数
-u:用户名
-p:密码,注意:该参数后面的字符串和-p不能有空格
-P:端口号,