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

    xiaoxiao2021-03-25  59

    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。 因为员工表中存在传递函数依赖,会产生数据冗余,从来带来一系列的问题。 更正方法: 员工表:员工编号 员工姓名 部门编号 订单表:订单编号 订单名称 订单关系:员工编号 订单编号 订单奖金 部门表: 部门编号 部门名称 部门主要工作

    转载请注明原文地址: https://ju.6miu.com/read-34072.html

    最新回复(0)