数据库-用户管理

一、创建用户

create user 'xy104'@'192..168.42.24' identified by '123456';

xy104:用户名
localhost;这个权限最高的root用户
%:任务ip地址
192.168.42.24:登录的IP地址
identified by ‘123456’:指定该用户的密码

mysql -h 192.168.42.24 -u xy104 -p123456
#在命令行远程登录数据库

二、赋权和解除权限

grant:用于授予用户对数据库对象的访问权限
all:所有,增删改查所有命令

grant select,insert on xyjy.* to 'xy104'@'192.168.42.24';
#赋予xyjy数据库内的xy104用户查询和增加的权限

在这里插入图片描述

删除权限

revoke:删除权限

revoke delete on xyjy.* from 'xy104'@'192.168.42.24';
#删除xyjy数据库内的xy104用户的权限

在这里插入图片描述

三、删除用户

drop user 'xy104'@'192.168.42.24';
#删除xy104用户

修改密码

vim /etc/my.cnf
skip-grant-table
#免密登录
保存退出
mysql -u root -p
update user set authentication_string = '' where user='root';
selsct host,user,authentication_string,plugin from user;
alter user 'root'@'localhost' identified with mysql_native_password by '123456';

四、删除表内数据

删除表内数据,到那时保留表名和表的结构
方法1:
delete from 表名;
如果该表有自增长的字段,delete删除之后,会保留之前的自增长记录
方法2:
truncate table 表名
全部清空,自增长记录也会从1开始

五、mysql的索引

索引在所有的关系型数据库当中的都有,索引是一个排序的列表,在这个列表当中存储了索引的值和这个值对应数据所在的物理地址。
使用了索引之后,查询数据表时,可以不用全表扫描来定义数据所在行。
可以通过索引直接找到该行数据对应的物理地址,直接访问数据,提高查询的速度,合理的设置索引可以提高数据库查询速度,也是必备的一项操作

索引的作用

索引的好处

1、索引就相当于书本的目录,当表很大(数据量多)或者查询涉及到多个表时(不超过3个),使用索引可以提高成千上万倍的查询速度
2、可以降低数据库的l/o成本,索引也会降低数据库的排序成本
3、也可以创建唯一性索引
4、可以加快表与表之间的连接速度
5、使用索引可以减少分组和排序的时间
6、通过索引可以提高数据库的恢复速度

索引的副作用

1、索引也需要占用磁盘的空间
2、更新一个有索引的表比更新没有索引的表时间更长,因为索引也需要更新

索引的创建原则

索引的创建原则:
虽然索引可以提高访问速度,但是也不是任何情况下都需要索引
在有索引的情况下,数据库会先查索引然后再定位到数据行
索引的设置如果不合理,反而会增加数据库的负担
1、表的主键和外键必须有索引,但是主键和外键默认就是索引
2、超过300行的表数据,就需要添加索引
3、和其他表连接的字段,要建立索引
4、唯一性差的字段,不适合设置索引
5、字段更新频繁,不适合索引
6、经常出现在where条件的字段当中的,尤其是大表,应该建立索引
7、在经常进行group by和order by ,要创建索引

索引的类型

mysql的索引默认就是B-TREE索引
叶子节点上包含的条目直接指向到数据行,叶子节点之间也互相连接,形成了一个向下延伸的指针
根据索引值一步一步定位到数据行
哈希索引:它是把索引值转换成值,通过对应索引的hash值找到对应数据行

索引的创建

主键索引:创建了主键默认就是索引
explain select * from member (name(5));
普通索引
create index name_index on member (name(5));
#name(5):列名当中匹配的长度,在不损失精确性的情况下,长度越小越好,减少索引文件的大小create table if not exists xy104 (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50),
index name_index (name)
);唯一索引,该字段的值必须是唯一的,胆识可以为空,天价唯一约束,自动就是唯一索引
create table if not exists xy104 (
id int(4) zerofill primary key ,
name varchar(10) unique key,
cardid int(18)  ,
hobby varchar(50),
);create unique index name_index on member (name(5));组合索引:可以是单字段的索引,也可以是多字段的组合
要满足最左原则,select的查询语句的where条件,是从左往右执行的,字段的组合要符合索引的排序
create table if not exists xy104 (
id int(4) zerofill primary key ,
name varchar(10) unique key,
cardid int(18)  ,
hobby varchar(50),
unique index cardid phone address (cardid, phone, address)
);alter table member4 add constraint uc_cardid_phone_address unique (cardid ,phone,address )全文索引:适合使用模糊查询进行匹配时使用,用来检索文章当中的信息
create fulltext index remark——index on  members(remark)
#创建索引
select * from member3 where match(remark) against(‘第八集’)

索引:
主键索引 创建了主键默认就是索引
普通索引 最常见的一种索引方式
唯一索引: 创建唯一约束就是唯一索引,唯一索引的值可以是null
组合索引: 多个字段结合起来成为共同。
全文索引: 大文本的匹配。
match---->列 against------>文本

六、mysql的事务和存储引擎

mysql innodb自带了事务的特性
原子性
一致性
隔离性
持久性

隔离性

隔离性:每个事务执行的过程时独立的,互相不能被干扰,并发事务之间是独立的
1、脏读
A事务在访问数据并且修改了数据,但是修改的结果没有提交到数据库,
B事务也访问了这条数据,而且看到了未提交的结果。
2、不可重复读: 在一个事务之内,多次读同一数据。
这A事务没有结束时,另一个B事务也访问该数据,由于在A事务中两次读取数据,在中间B事务修改了数据,
导致A事务两次查询的结果是不一致的,这就是不可重复读,不能读到相同的数据。
3、幻读:A事务对数据进行了修改,B事务也对数据进行了修改,A事务发现数据还是没有修改的数据,产生了幻觉。

事物的隔离级别

mysql支持事务四种隔离级别:
1、未提交读,允许脏读,可以看到未提交的修改 read uncimmitted
2、提交读,read committed提交读,只允许看到修改提交之后的数据
begin 显示开始一个事务
update cost set money=150 where id =1
commit 提交 事务,所有的修改都是永久性
3、可重复读,mysql默认隔离级别,一个事务在执行两次select语句,保证得到相同的结果
update cost set money=150 where id =1
4、串行读,后一个事务必须等待前一个完成之后才能继续,在这个过程中表会完全锁住,读写都活阻塞

事务的控制语句

begin:显示开始一个事务
commit:提交事务,所有的修改都是永久性
rollback:对事务进行回滚,返回到上一次的操作,只能回滚正在进行未提交的修改
savepoint:在事务当中创建一个回滚点,回滚到指定的位置,一个事务中可以有多个回滚点。
savepoint在一个事务当中是一个临时的标记,在事务执行过程中的一个回滚点,多个回滚点,是按照顺序进行的,
前面的回滚点一旦执行,后续的回滚点就回失效。

七、行锁和死锁

innodb的行锁和死锁

行锁

innodb通过给索引加锁来实现行级的锁定,如果没有索引,会使用隐藏的聚簇索引来实施实现锁定
如果A事务对索引字段进行操作,就会触发聚簇索引,锁定整行,B事务对这个行进行的操作都会被锁住

死锁

两个事务相互等待对方的资源,形成了一个环路导致的
for update:设置一个排他锁,在当前事务未提交前,禁止事务的写入和更新操作
死锁发生会自动选择一个事务当中的语句进行执行,直接终止其中的一个事务,回滚另外一个事务,以解除死锁

如何避免死锁的发生
1、按照固定的顺序对表和行进行访问
2、大事务拆成小事务,业务允许的情况下
3、调整事务的默认隔离级别,如果业务允许,隔离级别越低越好
4、要给表添加合适的索引(不是经常需要访问的字段,最好不要设置索引。)

八、mysql的备份和还原以及日志管理

备份的目的就是灾难恢复
数据库备份的分类:
1、物理备份
冷备份:关闭数据库进行备份的,全量备份
2、逻辑备份***
热备份:数据库可以正常运行,不影响数据库的操作,在这个条件可以实现备份和恢复
备份策略:
全量备份
增量备份
冷备份只能进行全量备份,逻辑备份既可以实现全量,也可以实现增量
mysqldump,常用的逻辑备份的工具,mysql自带的。
全量备份,物理冷备份:
tar -jcvf /opt/mysql_all_$(date+%F).tar.xz /usr/local/mysql/data
把mysql的date目录,打包的格式.xz,保存到opt的目录下

mysqldump的备份和恢复

mysqldump是针对库和表的全量和增量,使用的是热备份
把备份的库和表,以文件的形式导出,再从导出的文件进行恢复
mysqldump -u root -p123456 --databases xyjy > /opt/xyjy.sql
--databases:指定库
把xyjy库备份到/opt/xyjy.sql目录下
mysql -u root -p123456  < /opt/xyjy.sql
把xyjy库重新导入到mysql数据库
mysqldump -u root -p123456  xyjy cost  > /opt/xyjy.sql
把xyjy库中的cost表备份到/opt/xyjy.sql
mysql -u root -p123456 xyjy  < /opt/xyjy.sql
把表恢复到指定库中 
直接在命令行输入命令

对于数据的备份和恢复***

热备份
使用mysql的二进制日志的方式进行备份,对数据的全量或者是增量
基于位置的恢复
基于时间点的恢复
打开/etc/my.cnf
先要剋期二进制日志的功能
log-bin=mysql-bin
开启二进制日志的功能,二进制文件的名称mysql-bin.000001
binlog_format=MIXED
二进制日志的记录格式
log-error=/usr/local/mysql/data/mysql-error.log
#记录mysql在启动,停止或者是运行时,产生错误的日志
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
#开启mysql在使用过程中的记录日志
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5
#开启慢查询日志,用来记录所有查询的时间超过long_query_time=5的记录,查询的执行时间超过5秒钟就会记录。
不注明,默认10秒

vim /etc/my.cnflog-bin=mysql-binbinlog_format=MIXEDlog-error=/usr/local/mysql/data/mysql-error.loggeneral_log=ONgeneral_log_file=/usr/local/mysql/data/mysql_general.logslow_query_log=ONslow_query_log_file=/usr/local/mysql/data/mysql_slow_query.loglong_query_time=5

二进制日志的记录格式:
1、ROW 基于行
记录每一行的数据,准确,但是恢复效率低
2、STATEMENT 基于sql语句
按照顺序对sql语句进行记录,高并发的情况下,sql的记录有可能会出错,可能会导致数据的记录有偏差,虽然恢复的效率比较高
3、MIXED 混合
正常情况下使用STATEMENT,高并发自动切换ROW的记录方式
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001可以解读二进制日志mysql-bin.000001进行解析
mysqlbinlog --no-defaults mysql-bin.000001 |mysql -u root -p 123456
恢复增量
mysqladmin -u root -p123456 flush-logs
刷新,打断点
我们是按天来执行的,我们就可以按天对数据库进行增量的备份
mysqlbinlog --no-defaults --start-position=‘1338’ mysql-bin.000005 | mysql -u root -p123456
这个命令从指定的位置(位置1338)开始恢复数据,一直恢复到文件的结尾。
mysqlbinlog --no-defaults --stop-position=‘1338’ mysql-bin.000005 | mysql -u root -p123456
这个命令从文件的开始位置恢复数据,直到指定的结束位置(位置1338)
从指定位置开始到指定位置结束
mysqlbinlog --no-defaults --start -position=‘2364’ --stop-position=‘3235’ mysql-bin.000001 | mysql -u root -p123456
从指定时间开始到指定时间结束
mysqlbinlog --no-defaults --start -datetime=‘2024-12-20 13:47:17’ --stop-datetime=‘2024-12-20 13:47:38’ mysql-bin.000001 | mysql -u root -p123456

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

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

相关文章

管理者需要的技能

管理者需要具备技术技能、人际技能和概念技能&#xff0c;这三种技能的内涵如下&#xff1a; 技术技能 专业知识与技术能力&#xff1a;指管理者掌握和运用某一专业领域内的知识、技术和方法的能力。这包括对特定行业的专业知识、技术流程、工具设备的熟悉和精通。例如&#x…

scala基础学习(数据类型)-字符串

文章目录 scala中的字符串引号单引号双引号三引号 常用内置函数length 获取字符串长度charAt 字符串元素访问substring 获取字串indexOf 获取字串位置replace 字符串替换toLowerCase,toUpperCase 字符串大小写转换trim 去除首位空白符split 字符串切割以及查看startsWith,endsW…

数据库安全-redisCouchdb

1.redis未授权访问 默认端口:6379 1.1 Redis沙盒逃逸漏洞RCE-CVE-2022-0543 介绍&#xff1a;Redis 是一套开源的使用 ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库&#xff0c;并提供多种语言的API。Redis 如果在没有开启认证的情况下&#xff0c;…

springboot集成websokcet+uniapp开发聊天原型验证(一)

1. 整体思路 群组聊天功能实现思路 需要为每个群组维护一个对应的集合&#xff08;可以是 Set 等数据结构&#xff09;&#xff0c;用来存放该群组内所有在线用户的 WebSocketSession。当有消息发送到群组时&#xff0c;遍历该群组对应的集合&#xff0c;向其中的每个在线用户…

Reed-Muller(RM)码之编码

点个关注吧! 看了一些中文的博客,RM码没有很详细的资料,所以本文尝试给出推导原理。 推导 RM码由 ( r , m ) ( r , m ) (r,m

List直接使用removeAll报错

List直接使用removeAll报错 需要先将list转换才能使用 原因是&#xff1a; removeAll 方法在 Java 中用于从当前列表中删除另一个列表中存在的所有元素。如果直接对 List 接口的一个实现使用 removeAll 方法抛出异常&#xff0c;可能的原因有&#xff1a; 不同的List实现&am…

Linux -- 线程的优点、pthread 线程库

目录 线程的优点 pthread 线程库 前言 认识线程库 简单验证线程的独立栈空间 线程的优点 与进程之间的切换相比&#xff0c;线程之间的切换需要操作系统做的工作要少得多。 调度进程时&#xff0c;CPU 中有一个 cache&#xff08;缓存&#xff0c;提高运行效率&#xff0…

【magic-dash】01:magic-dash创建单页面应用及二次开发

文章目录 一、magic-dash是什么1.1 安装1.2 使用1.2.1 查看内置项目模板1.2.2 生成指定项目模板1.2.3 查看当前magic-dash版本1.2.4 查看命令说明1.2.5 内置模板列表二、创建虚拟环境并安装magic-dash三、magic-dash单页工具应用开发3.1 创建单页面项目3.1.1 使用命令行创建单页…

从零开始使用MaxKB打造本地大语言模型智能问答系统与远程交互

文章目录 前言1. 下载运行Ollama2. 安装大语言模型3. 安装Cpolar工具4. 配置公网地址5. 固定公网地址6. MaxKB 添加Olama7.创建问答应用 前言 目前大语言模型&#xff08;LLM&#xff09;已经成为了人工智能领域的一颗璀璨明星&#xff0c;从自然语言处理到智能问答系统&#…

深度解析 Pytest 中的 conftest.py

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 在使用 Pytest 进行测试的过程中&#xff0c;conftest.py 文件扮演着极为重要的角色…

【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割

数据预处理 通过网盘分享的文件&#xff1a;银行流失预测数据和代码 链接: https://pan.baidu.com/s/1loiB8rMvZArfjJccu4KW6w?pwdpfcs 提取码: pfcs 非数值特征处理 目的&#xff1a;将非数值特征转换为数值型&#xff0c;以便模型能够处理。方法&#xff1a; 地理位置&am…

回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测

回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实现CNN-LSSVM…

slam学习笔记7---状态量求导相关数学公式

前言&#xff1a;本来打算只是归纳一下数学求导相关公式&#xff0c;后面也写了旋转求导相关内容&#xff0c;哈哈。感觉有点发散把握不住呀。水平有限&#xff0c;欢迎评论区点出。 一、基本初等函数求导公式 ( C ) ′ 0 , C (C)0,C (C)′0,C为常数 ( x μ ) ′ μ x μ −…

32单片机串口数据接收、空闲IDLE中断详解

一、前提说明 一开始写单片机程序的时候不太清楚空闲中断这个东西&#xff0c;每次用串口接收数据&#xff0c;都要再开一个定时器&#xff0c;在定时器内进行倒计时&#xff0c;每次接收数据就重置计时时间&#xff0c;计时结束就触发中断&#xff0c;再判断所有接收的数据&am…

深入探讨 Go 中的高级表单验证与翻译:Gin 与 Validator 的实践之道20241223

深入探讨 Go 中的高级表单验证与翻译&#xff1a;Gin 与 Validator 的实践之道 在现代后端开发中&#xff0c;表单验证是保证数据完整性和服务稳定性的核心环节。如何优雅、高效地实现表单验证&#xff0c;同时提供人性化的错误提示&#xff0c;是每位开发者的必修课。在本文中…

掌握 Ansys ACP 中的参考方向:简化复杂的复合材料设计

概括 在复合材料分析领域&#xff0c;精度至关重要&#xff0c;尤其是在定义纤维方向和铺层时。Ansys ACP&#xff08;Ansys Composite PrepPost&#xff09;提供了强大的工具来建立参考方向&#xff0c;这是实现精确结构模拟的关键步骤。在本博客中&#xff0c;我们将揭开在 …

Vue2学习(一)——Vue简介、Vue指令与指令修饰符

一、Vue简介 Vue是一套用于构建用户界面的渐进式框架。 所谓渐进式就是循序渐进&#xff0c;不一定非得把Vue中的所有API都学完才能开发Vue&#xff0c;可以学一点开发一点。 Vue2官网地址&#xff1a;https://v2.cn.vuejs.org/ Vue3官网地址&#xff1a;https://cn.vuejs…

Redis--通用命令学习

目录 一、引言 二、基础命令 1.set 2.get 3.keys 3.1 keys &#xff1f; 3.2 keys * 3.3 keys [abe] 3.4 keys [^] 3.5 keys [a-b] 4.exists 5.delete 6.expire 7.ttl 8.type 三、Redis中的过期策略&#xff08;面试题&#xff09; 1.惰性删除 2.定期删除 …

Linux程序设计(第四版)| 学习笔记

上次学习Linux相关内容还是上学的时候为了应付考试&#xff0c;最近有项目涉及Linux&#xff0c;重新学习以下。 很多年前关于Linux的总结 一、入门 1.概念 (1) UNIX 1)定义&#xff1a;指的是一种遵循特定规范的计算机操作系统。 2)特点&#xff1a;简单性、集中性、可重用…

PostgreSQL 的历史

title: PostgreSQL 的历史 date: 2024/12/23 updated: 2024/12/23 author: cmdragon excerpt: PostgreSQL 是一款功能强大且广泛使用的开源关系型数据库管理系统。其历史可以追溯到1986年,当时由加州大学伯克利分校的一个研究团队开发。文章将深入探讨 PostgreSQL 的起源、…