一、mysql数据库的权限系统
防止数据有意或无意的被非法查看、修改、删除
两个概念:
验证:
确定用户是否允许连接数据库
授权:
确定用户是否有权限操作请求
若验证不通过,授权就无法进行
MySQL数据库权限控制步骤
1、查看mysql数据库中user表用户是否允许连接
2、若允许连接,查询user表中用户的授权,user表中的权限都是全局的
3、若没有全局权限,查询db表看用户可以和那些数据库进行交互
4、若用户在db表中没有权限,但是主机值为空,查询host表用户可以和那些数据库交互,实现特定用户访问主机的控制
5、若user、db、host表中都没有权限,就查询tables_priv和columns_priv表,用户可以和那些表和列进行交互
*权限是从广泛到特殊的顺序进检索(验证)
二、创建管理员
-- 创建用户
create user userName identified by 'password';
-- 删除用户
drop user userName;
-- 修改用户名
rename user userName to newUserName;
-- 修改密码
update user set password = password(‘newPassword’) where user = userName
三、用户授权
授权
grant 权限 on tables to userName;-- 授权
回收:
revoke 权限 ontables to userName;-- 回收权限
权限:
insert、delete、update、select(表数据权限)
alert、create、drop(表结构权限)
all privileges(除了授权以外的所有全选)
例子:
create user xiaoge identified by '123456' -- 创建xiaoge管理员密码123456
-- 给xiaoge授权对test数据库student表添加、修改、查询、删除的权限(test.*表示test中所有数据表)
grant insert,select,update,delete on test.student to xiaoge
revoke insert on test.student to xiaoge; -- 回收xiaoge对test数据库student表单的
四、索引
作用 : 提高查询效率
语法:
-- 创建索引
create index 索引名 on 表名;-- 普通索引
create unique index 索引名 on 表名;-- 唯一索引
-- 删除索引
drop index 索引名 on 表名;
应用:
select * from 索引名 where name like 'xx'-- mysql中索引可以当表名使用