您的位置:首页 > 数据库 > MySQL

第一天学习MySql(4)-MySql用户权限、三大范式

2017-03-12 14:50 337 查看

4.MySql入门-MySql用户权限、三大范式

4.1创建新用户

先使用root用户登录

create user newUser identified by '123456';//创建一个没有任何权限的用户


其中密码123456会用md5加密

如果需要修改密码,可以使用如下语句

UPDATE USER SET PASSWORD=PASSWORD('123') WHERE USER='newUser';


注意:修改密码、创建用户或者修改权限操作后,要执行
flush privileges
刷新权限相关表,或者手动重启MYSQL服务,否则拒绝访问。

4.2给新创建的用户分配权限

//*.*的位置放入的是对哪个裤,哪个表进行权限分配,*.*表示对于所有库,所有表。
GRANT all privileges ON *.* TO 'newUser'@'localhost' IDENTIFIED BY '123456';//分配所有权限,可以在本地访问mysql
grant all privileges on *.* to testuser@"%" identified by "123456" ;
//分配所有权限,可以远程访问mysql
GRANT SELECT ON *.* TO 'newUser'@'localhost' IDENTIFIED BY '123456';
//分配查看权限,可以本地访问mysql
GRANT DELETE ON *.* TO 'newUser'@'localhost' IDENTIFIED BY '123456';
//分配删除权限,可以本地访问mysql
GRANT INSERT  ON *.* TO 'newUser'@'localhost' IDENTIFIED BY '123456';
//分配插入权限,可以本地访问mysql
GRANT UPDATE ON *.* TO 'newUser'@'localhost' IDENTIFIED BY '123456';
//分配修改权限,可以本地访问mysql


4.3回收权限

revoke select on *.* from newUser;
//回收查看权限
//回收其他权限可以参考上部分


4.4三大范式

4.4.1第一范式(1NF)无重复的列:

也就是要求表内每个字段都是独立并且不可以再分割的单元。

如定义一个学生表:grade(成绩下)的数据内容为77/88/66

显示是不符合第一范式的。

正确的定义方法是:将grade分割成 english math chinese

4.4.2第二范式(2NF)属性完全依赖于主键 [ 消除部分子函数依赖 ]

在满足第一范式的基础上,要求表的除主键以外的字段都和主键有依赖关系的。

如员工表:员工编号 员工姓名 员工所属部门 员工部门主要工作 订单名称 订单奖金 -显然不符合第二范式

例如,当一个新订单到来的时候,没有员工空闲去接受订单,那么我们便没有表可以存放数据。

或者是当员工更新订单的时候,那么旧订单会面临丢失的困境,或者是我们需要修改订单名称的时候,只能一个个员工去更新,显然是不合理的。

正确的处理方法:

员工表:员工编号 员工姓名 所属部门名称 部门主要工作

订单表:订单编号 订单名称

订单关系:员工编号 订单编号 订单奖金

4.4.3第三范式(3NF)属性不依赖于其它非主属性 [ 消除传递依赖 ]

在满足第二范式的条件下,表的除主键外的字段都只能和主键有直接决定的依赖关系。

员工表:员工编号 员工姓名 所属部门名称 部门主要工作

订单表:订单编号 订单名称

订单关系:员工编号 订单编号 订单奖金

员工表满足2NF,但是却不满足3NF。

因为员工表中存在传递函数依赖,会产生数据冗余,从来带来一系列的问题。

更正方法:

员工表:员工编号 员工姓名 部门编号

订单表:订单编号 订单名称

订单关系:员工编号 订单编号 订单奖金

部门表: 部门编号 部门名称 部门主要工作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: