MySQL-权限管理+备份+范式

举报
AAAI 发表于 2021/05/13 01:58:06 2021/05/13
【摘要】 权限管理 SQL操作命令 # 创建用户 # oracle:create user 用户名 identified by 密码 default tablespace 表空间表; CREATE USER xxx IDENTIFIED BY '123'; # 修改密码(当前用户) SET PASSWORD = PASSWORD('1234'); # mysql8修改密码命...

权限管理

SQL操作命令

# 创建用户
# oracle:create user 用户名 identified by 密码 default tablespace 表空间表;
CREATE USER xxx IDENTIFIED BY '123';

# 修改密码(当前用户)
SET PASSWORD = PASSWORD('1234');
# mysql8修改密码命令 ALTER USER "root"@"localhost" IDENTIFIED BY "你的新密码";

# 修改密码(指定当前用户)
SET PASSWORD FOR xxx = PASSWORD('1234');

# 重命名 RENAME USER 原来名字 To 新名字
RENAME USER xxx To xxx2;

# 用户授权 ALL PRIVILEGES 全部的权限, 库,表
#  *.* 所有表 ,可以改为指定表
# 除了 给别人授权 
GRANT ALL PRIVILEGES ON *.* To xxx2;
# 可以给别人授权
GRANT ALL PRIVILEGES ON *.* To xxx2 WITH GRANT OPTION;

# 查询权限
SHOW GRANT FOR xxx2;
SHOW GRANT FOR root@localhost;

# 撤销权限 REVOKE 哪些权限 在哪个库撤销,给谁撤销
REVOKE ALL PRIVILEGES ON *.* FROM xxx2;

# 删除用户
DROP USER xxx2;

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

备份

# CMD命令行备份
# mysqlump -h主机 -uroot用户名 -p密码 库名 表名1 表名2 表名3 > 物理磁盘位置/文件名.sql 
mysqlump -hlocalhost -uroot -p123456 school student > D:/a.sql 

# mssql -u用户名 -p密码 库名 < 备份文件

# 登录
mysql> use school:
mysql> source D:/a.sql 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

规范数据库设计

设计数据库

  • 分析需求:分析业务和需要处理的数据库的需求
  • 概要设计:设计关系图E-R图

个人博客步骤:

  • 收集信息,分析需求
    • 用户表(用户登录注销,用户个人信息,写博客,创建分类)
    • 粉丝表(被关注人的ID,关乎人的ID)
    • 分类表(文章分类,谁创建的)
    • 文章表(文章题目,作者ID,时间,分类,内容)
    • 评论表(所属文章,评论人ID,内容,时间,回复人ID)
    • 友链表(友链信息,网站链接,排序)
    • 自定义表(系统信息,关键的字,主字段) key:value
  • 标识实体(把需求落地到每一个字段)
  • 标识视图之间的关系
    • 写博客:user–>blog
    • 创建分类:user–>category
    • 关注:user–>user
    • 友链:links
    • 评论:user–>user–>blog

依赖

函数依赖与码

若X->Y,即由X能确定Y,或者说一个已知的X能确定一个唯一的Y,则称Y依赖于Y(跟初中的函数定义一致)。

一个学生只能属于一个学院,即知道学号X,就能确定对应的学院代码Y,所以学院代码Y依赖于学号X。

部分函数依赖

设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。

举个例子:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。

比如(学号,姓名)->(系主任),显然,只需(学号,姓名)里的学号就能确定系主任!因此:(系主任)部分函数依赖于(学号,姓名)

完全函数依赖

设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。

举个例子:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB。

比如(学号,课程号)->某科成绩,显然,因为一个学号一般有多个课程的成绩,即一个所以要查某科的成绩,需要同时知道学号和课程号。即:(某科成绩)完全函数依赖于(学号,课程号)。

传递函数依赖

设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

举个例子:通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么成C传递依赖于A。

系主任函数依赖于系,系函数依赖于学号,因此系主任传递依赖于学号。

主码(主键)

主码中的属性叫做主属性,其他属性叫做非主属性。

比如:(学号,姓名,性别)中,学号为主码(主键),因此学号为主属性,姓名和性别是非主属性。

三大范式

为什么需要数据规范化:信息重复,更新异常,插入异常(无法正常显示信息),删除异常(丢失有效信息)

第一范式(1NF)

原子性:保证每一列数据不可分。数据的一个字段里存在两个值。

第二范式(2NF)

前提:满足第一范式。第二范式:消除各个非主属性的部分函数依赖

一张表只描述一件事情。

第三范式(3NF)

前提:满足第一,二范式。

第三范式需要确保数据表中的每一列数据都要和主键直接相关,不能间接相关。传递函数依赖

规范和性能

关联查询的表不得超过三张表。

  • 考虑到商业化需求和目标,数据库性能更加重要,考虑规范性
  • 故意添加一些冗余的字段,将多表查询变为单表查询(根据订单表里面的商品id,再通过商品id查询商品表。但为了性能可以直接在订单表里面放商品所有信息)
  • 估计添加一些计算列(大数据量降为小数据量的查询:索引)

文章来源: blog.csdn.net,作者:αβγθ,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_38022166/article/details/116708978

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。