MySQL--数据备份(导入导出)、权限管理、索引

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44863429/article/details/100084950

数据备份

1.先退出mysql环境
2.数据的导出
备份表:
格式:mysqldump -uroot -p 库名 表名>表名.sql
备份库:
格式:mysqldump -uroot -p 库名>备份文件名.sql
3.数据的导入
数据的导入

mysql -uroot -p 库名<备份文件地址.sql

将导出的存入新的数据库的表中
在这里插入图片描述
导出库+导入库
在这里插入图片描述
在这里插入图片描述
(各位未备份就删了库,跑路吧。)

权限管理

用户:连接的用户
权限:语序用户操作的范围
组:权限的集合

修改密码
MySQL有一个默认的mysql库,有一个user表,这个表中存放的就是用户信息
切换到mysql库中
执行update set user authentication_string=password('123456') where User='root' and host='localhost';
重新启动服务(忘记了看上一篇)
然后再去连接数据库,此时会返现不输入密码连接会失败,使用密码登陆就ok了

忘记密码
1.修改配置文件
在mysqld最后一行加上
skip-grant-tables 跳过权限认证
2.重启服务
不用输入密码可以直接登陆到数据库
执行修改密码操作
3.把配置文件修改回来
4.重启服务,使用新密码登陆

创建用户
格式:create user'用户名'@'ip 地址'identified by'密码'
创建用户为lisi(可同名),登陆ip任意:

create user 'lisi'@'%'identifined by'123456'

给用户授权允许远程连接
格式:grant 权限 on 库名.表名 to 用户名@'地址'
给list添加权限
给李四添加所有库所有表的查询权限

grant select on *.* to 'list'@'%'

给远程连接的zhaoliu用户添加对demo1数据库下所有表的所有权限

grant all on demo1.*to'zhaoliu'@'%'

删除用户:
格式:drop user ‘用户名’@‘ip地址’

索引

一种高效获取数据的存储结构,类似于子字典的目录
(1:0f000001)
为什么要使用索引:
可以提升查询数据的效率 减少io的操作
创建索引时,数据库会额外的创建一张表,来维护索引,会占用磁盘 的资源,一般索引的空间比数据大
索引一般支持的数据结构,b+tree b-tree 哈希
b+tree的基本结构
在这里插入图片描述

B+tree的特点:
有三层 分别是 根节点,子节点和叶子节点
对称
根节点不存储数据,数据存储在叶子节点
叶子节点同时保存了写一个数据节点的地址

优缺点
提升数据的查询速度,减少io操作
缺点维护成本高,会降低其他操作的执行速度

添加索引可以增加查询的速度,但是不是索引越多越好
添加索引一般 是给经常用作where条件的字段添加
最左原则:Select * from user where username=’zhansgan’ and age=18;

索引分类:
普通索引:index 可以为空 可以重复 当我们使用物理外键时就默认给该字段添加了普通索引
唯一索引:unique 可以为空 不能重复
主键索引:primary key 不能为空且唯一
多列索引:将多个字段绑定到一起添加一个索引 index()

添加索引:
格式:alter table 表名 add 索引类型 【索引名】(字段名);
如果不指定索引的名字,那么索引名就以字段名为准
删除主键索引的格式:
删除主键索引要先将主建索引的自增属性删除 然后才能删除主键索引

Alter table 表名 drop primary key;
查看索引:
格式:show index from 表名;
删除索引:

Drop index 索引的名字 on 表名;

猜你喜欢

转载自blog.csdn.net/weixin_44863429/article/details/100084950