文章目录
8-权限管理
8.1, 用户管理
-- 创建用户
CREATE USER xbd_zc IDENTIFIED by '123456';
-- 修改密码 当前用户密码
SET PASSWORD = PASSWORD('654321')
-- 修改指定用户
SET PASSWORD FOR xbd_zc = PASSWORD('654321');
-- 新版本修改密码
ALTER USER 'xbd_zc'@'%' IDENTIFIED BY '123456';
-- 重命名 旧 新
RENAME USER xbd_zc TO xbd_fc
-- 用户授权 all PRIVILEGES 全部权限, 库.表
-- ALL PRIVILEGES 不能给其他账号授权
GRANT ALL PRIVILEGES ON *.* TO xbd_zc
-- 查询权限
SHOW GRANTS FOR xbd_zc
SHOW GRANTS FOR 'root'@'%'
-- 撤销权限 REVOKE
REVOKE ALL PRIVILEGES ON *.* FROM xbd_zc
-- 删除用户
DROP USER xbd_zc
8.2, MySQL备份
MySQL备份方式:
- 拷贝data目录
- 使用可视化工具导出, 如 Navicat
- 使用命令行 dump
可视化工具导出
使用命令行
# 导出表 库名 表1 表2 ...
root@b1a0297cc402:/# mysqldump -hlocalhost -uroot -p school student > /home/b.sql
Enter password:
# 导入
mysql -uroot -p123456
mysql> use school;
mysql> source /home/c.sql;
9-规范数据库设计
9.1, 为什么要设计数据库
数据库比较复杂的时候, 就需要设计数据库了
数据库设计步骤(个人博客):
- 收集信息, 分析需求
- 用户表( 用户登录注销, 个人信息)
- 分类表( 文章分类, 创建信息)
- 文章表 ( 文章信息, 标题)
- 评论表 (评论信息, 评论人, 父级评论人)
- 自定义表 (系统信息, 某个关键的字, 或者一些主字段) key:value
- 关注表, 中间表( 关注人ID, 被关注人ID)
- 标识实体
- 把需求落实到每个字段
- 表关系
- 写博客: user — blog
- 创建分类: user–category
- 关注: user
- 评论: user - user - blog
9.2,三大范式
第一范式(1NF)
原子性: 保证每一列不可再分
比如说学校信息: 可以拆分成,: 学历, 年级
第二范式(2NF)
满足第一范式的前提下:
第二范式:消除各个非主属性的部分函数依赖
第三范式(3NF)
满足第一第二范式的前提下:
第三范式需要确保数据表的每一列数据都和主键直接相关, 而不能间接相关
规范性和性能问题
关联查询的表不超过三张表(阿里)
- 考虑商业化的需求和目标时, 数据库的性能更加重要, 需考虑用户体验, 成本问题
- 在考虑性能问题时, 需适当考虑规范性
- 故意给某些表增加一些冗余的字段 (从多表查询变为单表)