MySQL---数据用户管理和索引

DDL:CTEATE DROP ALTER

dml:对数据进行管理

update insert into delete truncate

dpl:查询语句 select

dcl:权限控制语句 grant revoke

数据库用户管理

创建用户

修改用户权限

删除用户

grant要在终端执行

创建用户

create user 'ky32'@'localhost' identified by '123456'; #创建用户的语句
create user:创建用户的开头
'ky32'@'localhost':ky32表示用户名。localhost表示新建的用户ky32可以在哪些主机上登录
'ky32'@'localhost':只能从本机登录
'ky32'@'192.168.233.22':ky32在这个ip上可以登录
'ky32'@'192.168.233.0/24':ky32在这个网段可以登录
'ky32'@'%':ky32在所有主机都可以登录select PASSWORD('abc123') 
#加密密码
create user 'ky33'@'localhost' identified by '*6691484EA6B50DDDE1926A220DA01FA9E575C18A'; #加密的方式创建用户

给用户赋权

grant all privileges on * . * to 'ky32'@'localhost' identified by '123456'; 
#给用户赋权(.没有空格) 
grant:赋权开头语句 
all privileges:赋予所有权限 
on *.* :所有库都有操作权限 
on 库名.*:只能对指定的库进行操作
to 'ky32'@'localhost':赋权给哪个用户。创建用户时候是什么赋权就要是什么上下必须一致 identified by '123456':使用哪个密码进行登录。创建用户时候不写密码,密码就默认为空。show grants for 'ky32'@'localhost'; 
#查看指定用户flush privileges; 
#刷新用户权限revoke all privileges on kgc. * from 'test1'@'20.0.0.50'; 
revoke:删除权限。也需要一致给哪个库权限就得删除哪个库权限。

对权限进行控制

grant select on kgc.* to 'test1'@'20.0.0.50' identified by '123456'; 
#给指定用户查询权限。revoke select on kgc.* from 'test1'@'20.0.0.50'; 
#删除指定权限。删除select查询权限。

给一个用户赋予多个权限

多个权限之间用逗号隔开

grant select,insert,drop on kgc.* to 'test1'@'20.0.0.50' identified by '123456'; 
#给一个用户多个权限。每个权限都需要单独赋权revoke drop,update on kgc.* from 'test1'@'20.0.0.50'; 
#删除多个权限。每个权限用逗号隔开。revoke all privileges on kgc.* from 'test1'@'20.0.0.50'; 
#也可也使用 revoke all privileges 删除多个权限。

给用户重命名

rename user 'test1'@'20.0.0.50' to 'guoqi'@'20.0.0.50'; 
#给用户重命名。也必须前后一致

删除用户

drop user 'ky33'@'localhost'; 
#删除指定用户。必须前后一致

修改用户密码

set password = password('abc123'); 
#修改当前用户的密码。必须在终端中执行set password for 'guoqi'@'20.0.0.50' = password('abc123'); 
#给其他用户修改密码

恢复root密码

vim /etc/my.cnfskip-grant-tables 
#添加免密登录systemctl restart mysqld 
#重启mysql服务重写进入mysql不用输入密码直接进入use mysql;show user;select * from user;select user,authentication_string,host from user;updates mysql.user setupdate mysql.user set authentication_string = '123456' where user = 'root'; 
#重置root密码update user set authentication_string=password('123456') where Host='localhost' and User='root'; 
#修改密码之后需要加密。慎用。update user set authentication_string = password('123456') where host='%' 
#加密密码

用户权限管理的总结

create user '用户名'@'20.0.0.50' identified by '123456';:创建用户grant all select ,insert,drop:赋权revoke:删除权限rename:修改用户名drop user:删除用户set password = passwd('123456'):修改登录用户的密码set password for '用户名'@'20.0.0.50' = password('abc123'):修改其他用户密码show grants for '用户名'@'localhost':查看用户权限 flush privileges:刷新权限

用户权限管理的总结

create user '用户名'@'20.0.0.50' identified by '123456';:创建用户grant all select ,insert,drop:赋权revoke:删除权限rename:修改用户名drop user:删除用户set password = passwd('123456'):修改登录用户的密码set password for '用户名'@'20.0.0.50' = password('abc123'):修改其他用户密码show grants for '用户名'@'localhost':查看用户权限 flush privileges:刷新权限

mysql的索引、事务和存储引擎

索引

索引是一个排序的列表,列表当中存储的是索引的值和包含这个值的数据所在行的物理地址

索引的作用

索引的核心作用是加快查询速度。实现快速查找

1、 利用索引数据库可以快速定位,大大加快查询速度,主要作用

2、 表的数据很多,查询需要关联多个表,这个时候索引也可也提高查询速度

3、 加快表与表之间的连接速度

4、 使用分组和排序时,可以大大减少时间

5、 可以提高数据库,恢复数据时的速度

索引创建的原则

1、 如果有索引,数据库会先进行索引查询,然后定位数据。索引使用不当,反而会增加数据库的负担。

2、 主键、外键必须有索引。创建好的主键和外键,自动就是索引不需要额外声明了。

3、 如果说有一个表超过了300行必须要有索引,否则数据库会遍历表的所有数据,查询速度会很慢。

4、 互相之间有关联的表,在这个关联字段上一定要设置索引。

5、 唯一性太差的字段,不适合做索引。

6、 更新太频繁的字段,不适合做索引。

7、 经常被where条件匹配的字段,尤其是表数据比较多的。应该创建索引。

8、 经常进行group by(分组) order by(排序) 这种语句的字段要建立索引。

9、 索引的字段越小越好,长文本的字段,不适合建立索引。

索引的类型

常用类型:

B-树索引:BTREE 树型结构的索引,也是大部分数据库的默认索引类型。
根节点:树的最顶端的分枝节点
分枝节点:指向索引里其他的分枝节点,也可以是叶子节点
叶子节点:直接指向表里的数据行

创建BTREE索引的方式

create index name_index on test (name); 
#创建BTREE索引show index from test; 
#查看表的索引和引擎

哈希索引:散列缩影 把任意长度的输入,通过散列算法变换成固定长度的输出。散列的值----分别对饮数据里的列和行

mysql的默认引擎:INNODB 默认引擎的索引类型就是Btree

MEMORY引擎可以支持hash,也是他的默认索引。

先算散列值,然后再对应,速度比较慢,比BTREE慢。

hash的索引匹配:= in()<=>

show index from test;show create table test; 
#查看表的索引和引擎alter table test engine=memory;alter table test drop primary key;select * from test where sex = '豪车';create index idx_hash_column on test (sex) using hash; 
#创建hash索引的方式

练习题

1、 创建用户,声明网段 test 网段任选 密码123456

2、 创建一个库。库名:test1

3、 在库中随意创建两个表 table1和table2

table1id 主键name not nullsex not nulltable2id 主键address 默认地址不详phone unique

4、 test 用户可以对test1库 只有 select和insert 两个权限

5、 把tesst的用户名修改为test_123 密码修改为abc123

6、 删除insert权限

7、 给两个表分别创建索引。table1是hash类型sex做索引 table2的索引是BTREE类型phone做索引。

create user 'test'@'20.0.0.%' identified by '123456';
#创建用户create database test1;
#创建库create table table1 (
id int(4) primary key,
name varchar(5) not null,
sex varchar(5) not null
);
#创建表1desc table1;create table table2 (
id int(4) primary key,
address varchar(50) default '地址不详',
phone varchar(20) unique
);
#创建表2desc table2;grant select,insert on test1.* to 'test'@'20.0.0.%' identified by '123456';
#给指定用户对应指定表。查和添加的权限rename user 'test'@'20.0.0.%' to 'test_123'@'20.0.0.%';
#给用户改名set password for 'test_123'@'20.0.0.%' = password('abc123');
#改用户密码revoke insert on test1.* from 'test_123'@'20.0.0.%';
#删除指定用户对指定表添加的权限show index from table1;
#查看表的索引和引擎alter table table1 engine=memory;
#清空引擎alter table table1 drop primary key;
#删除主键select * from table1 where sex = 'man';create index idx_hash_column on table1 (sex) using hash;
#创建索引show index from table1;
#查看表的索引和引擎show index from table2;
#查看表的索引和引擎create index phone_index on table2(phone);
#创建索引show index from table2;
#查看表的索引和引擎

创建用户

创建一个库

创建两个表

表1结构

 

表2结构

给用户权限

给用户改名

给用户修改密码

删除权限

修改索引和引擎

修改索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/125184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

function函数指针和lamada的[]和[=]注意事项

在工作的过程中&#xff0c;lamda表达式的 重点&#xff1a; 1.function对象存储函数指针。 2.lamada表达式&和捕捉的方式 lamda传入引用&&#xff0c;导致作用域消失&#xff0c;最终报错 std::function<void()> pFun; void GetNum1(const std::function<…

企业在招标流程中面临的 6 大挑战

采购中的招标是一种采购策略&#xff0c;包括向不同的销售商/供应商询价&#xff08;RFQ&#xff09;和索取资料&#xff08;RFI&#xff09;&#xff0c;以比较其特点、价格和功能。 工作团队在招标采购流程中投入了数个小时&#xff0c;但在整个过程中仍不得不忍受失望和不适…

【抓包分析】通过ChatGPT解密还原某软件登录算法实现绕过手机验证码登录

文章目录 &#x1f34b;前言实现效果成品广告抓包分析一、定位加密文件二、编辑JS启用本地替换 利用Chatgpt进行代码转换获取计划任务id模拟数据请求最后 &#x1f34b;前言 由于C站版权太多&#xff0c;所有的爬虫相关均为记录&#xff0c;不做深入&#xff01; 今天发现gith…

数据结构 | 算法的时间复杂度和空间复杂度【详解】

数据结构 | 算法的时间复杂度和空间复杂度【详解】 文章目录 数据结构 | 算法的时间复杂度和空间复杂度【详解】1. 什么是数据结构&#xff1f;2. 什么是算法&#xff1f;3. 算法效率4. 时间复杂度4.1 时间复杂度的概念4.2 推导大O阶的方法&#xff1a;4.3 常见时间复杂度计算举…

Leetcode—274.H指数【中等】

2023每日刷题&#xff08;十三&#xff09; Leetcode—274.H指数 算法思想 参考自灵茶山艾府 实现代码 int minValue(int a, int b) {return a < b ? a : b; }int hIndex(int* citations, int citationsSize){int cnt[5001] {0};int i;for(i 0; i < citationsSize; …

SpringBoot 公司推广系统 公司广告系统

SpringBoot 公司推广系统 公司广告系统 系统功能 首页功能: 广告展示 方案列表 站内搜索 资讯 查看详细咨询 登录注册 收藏 咨询方案 在线客服实时聊天 后台管理功能: 系统管理分为: 用户管理 角色管理 客户管理 首页轮播管理 公告管理 方案管理: 方案管理 资讯管理: 类型管…

【C++项目】高并发内存池第五讲内存回收释放过程介绍

内存回收 1.ThreadCache2.CentralCache3.PageCache 项目源代码&#xff1a;高并发内存池 1.ThreadCache void ThreadCache::Deallocate(void* ptr, size_t size) {assert(ptr);assert(size < MAX_BYTES);//计算在哪号桶中&#xff0c;然后插入进去size_t index SizeClass…

c++ pcl 选取点云某一点反馈XYZ坐标的代码

看了看以前的代码&#xff0c;有一小段代码很有意思&#xff0c;是关于pcl点云处理的。 如有帮助&#xff0c;点赞收藏关注&#xff01;&#xff01;&#xff01; 读取点云数据&#xff0c;想可视化点云数据&#xff0c;并根据选择&#xff0c;实时显示点云的空间坐标数值。 接…

关于FreeTypeFont‘ object has no attribute ‘getsize‘问题的解决方案

引言 这个问题是在训练yolov5_obb项目遇到的&#xff0c;大概率又是环境问题。如下图&#xff1a; 解决方法 出现这个问题是Pillow版本太高了&#xff0c;下载低版本的&#xff1a; pip install Pillow9.5 OK&#xff01;

Java List Set Map

一、List 1.1 ArrayList 1.2 LinkedList 二、Set 2.1 HashSet 2.2 TreeSet 2.3 LinkedHashSet 三、Map 3.1 HashMap 3.2 TreeMap 3.3 LinkedHashMap 四、对比 类型底层结构重复null值场景备注查询删除新增ListArrayList动态数组可允许快速随机访问元素0(1)0(n)尾部增加0&a…

[已解决]虚拟机之前能正常上网,重启之后无法连接网络问题的解决方法

虚拟机之前网络正常&#xff0c;重启之后却始终连接不上网络。 找了许多方法&#xff0c;终于发现一种便捷有效的方法。 解决方法如下&#xff1a; 1、将网络模式更改为NAT模式., 2、打开终端窗口&#xff0c;输入如下命令。 sudo service network-manager stopsudo rm /var/l…

LeetCode | 17.04.消失的数字和189.旋转数组

LeetCode | 17.04.消失的数字和189.旋转数组 文章目录 LeetCode | 17.04.消失的数字和189.旋转数组17.04.消失的数字方法一&#xff1a;方法二&#xff1a;方法三&#xff1a;方法二的代码方法三的代码 189.旋转数组思路一思路二思路三 17.04.消失的数字 OJ链接 这里题目要求…

10、电路综合-基于简化实频的宽带匹配电路设计方法

10、电路综合-基于简化实频的宽带匹配电路设计方法 网络综合和简化实频理论学习概述中的1-9介绍了SRFT的一些基本概念和实验方法&#xff0c;终于走到了SRFT的另一个究极用途&#xff0c;宽带匹配电路的设计。 1、之前的一些回顾与总结 之前也给出了一些电路综合的案例&…

实时定位和配送追踪:开发万岳同城外卖APP的关键技术特性

随着生活节奏的不断加快&#xff0c;外卖服务已经成为许多人日常生活中不可或缺的一部分。无论是工作日的午餐&#xff0c;还是周末的家庭聚会&#xff0c;外卖APP已经成为满足各种美食需求的首选方式。然而&#xff0c;同城外卖APP的成功不仅仅取决于美味的食物选择&#xff0…

leetCode 2578. 最小和分割 + 排序 + 贪心 + 奇偶分组(构造最优解)

2578. 最小和分割 - 力扣&#xff08;LeetCode&#xff09; 给你一个正整数 num &#xff0c;请你将它分割成两个非负整数 num1 和 num2 &#xff0c;满足&#xff1a; num1 和 num2 直接连起来&#xff0c;得到 num 各数位的一个排列。 换句话说&#xff0c;num1 和 num2 中所…

【零基础抓包】Fiddler超详细教学(一)

​Fiddler 1、什么是 Fiddler? Fiddler 是一个 HTTP 协议调试代理工具&#xff0c;它能够记录并检查所有你的电脑和互联网之间的 HTTP 通讯。Fiddler 提供了电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析&#xff1b;可以设置断点调试、截取…

【脑机接口 论文】利用脑机接口帮助ALS患者恢复对家用设备的控制science

英文题目 中文题目 稳定的语音BCI解码使ALS患者在3个月内无需重新校准即可进行控制论文下载&#xff1a;算法程序下载&#xff1a;摘要1 项目介绍2 方法2.1实时神经解码2.2算法手术植入:神经解码模型: 数据收集实验2.3稳定的解码器性能超过三个月 3 电极的贡献4 讨论5结论 中文…

python 打印与去除不可见字符 \x00

# 此处不是真实的\x00 被 空格替换了 text "boot_1__normal/ " print(text.strip()"boot_1__normal/") # 打印不可见字符 print(repr(text))>>> False boot_1__normal/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0…

Python爬虫程序中的504错误:原因、常见场景和解决方法

概述 在编写Python爬虫程序时&#xff0c;我们经常会遇到各种错误和异常。其中&#xff0c;504错误是一种常见的网络错误&#xff0c;它表示网关超时。是指客户端与服务器之间的网关通信过程中&#xff0c;服务器在规定的时间内没有返回响应&#xff0c;导致请求超时。此类错误…

Windows键 + Shift + S 截图图片保存位置

地址 C:\Users\Administrator\AppData\Local\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\TempState\ScreenClip