MySQL的基本使用

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL的基本使用

1.安装下载

关于MySQL的安装与配置在之前的博客已经发表过文章了,具体详情请看:

2.用户管理

三种权限,三个环境

在这里和大家分享一下我们一般的在公司中的实际操作人员会分为哪些权限才能够保证我们数据的安全性以及公司的利益:

1、项目经理:  数据库而言:增删改查,Create、drop等权限,一般具备所有权限

2、项目组长:  数据库而言:只具备增删改查

3、开发人员:数据库而言:查询(select)

一般来说会分为这三种开发人员分为三种不同的操作权限

对于实际我们的操作人员来说,三个环境

线网、生产环境:系统开发完毕,客户使用的那个环境

测试环境:公司内部模拟客户现场,搭建而成的环境

开发环境:本地电脑

不同的权限的划分,针对的是生产环境

3.MySQL数据库引擎

★★★MySQl的核心就是数据库引擎★★★

3.1定义

★★MySQL数据库引擎是指存储和管理数据的核心组件,它决定了如何组织、存储和操作数据库中的数据。MySQL支持多种数据库引擎,每个引擎都有自己的特点和适用场景。★★

以下是几种常见的MySQL数据库引擎:

  1. ★InnoDB引擎★:InnoDB是MySQL默认的事务型引擎,它支持事务、行级锁和外键约束等特性,适合处理并发读写操作和大量的事务处理。InnoDB引擎还提供了崩溃恢复和数据完整性的保护机制。
  2. ★MyISAM引擎★:MyISAM是MySQL最早的数据库引擎,它不支持事务和行级锁,但在处理大量读操作时性能较高。MyISAM引擎适用于读密集型应用,例如数据仓库、日志记录等。
  3. Memory引擎:Memory引擎(也叫作Heap引擎)将数据存储在内存中,因此读写速度非常快。但是,由于数据存储在内存中,一旦MySQL服务器关闭,数据将丢失。Memory引擎适用于临时表、缓存和计数器等场景。
  4. Archive引擎:Archive引擎用于存储和查询大量的归档数据,它采用高度压缩的存储格式,具有极高的写入性能和较低的存储空间需求,但查询性能相对较低。

除了上述引擎之外,MySQL还支持其他引擎如CSV引擎、Blackhole引擎等。根据应用的需求和特点,选择合适的数据库引擎对于实现高性能和数据一致性非常重要。

下面是我navicat下的引擎列表以及是否支持引擎的状态:

然后Support右边则是描述,比如支持事务,回滚,外键等......

InnoDB是事务型数据的首选引擎,支持事务安全表(ACID),支持锁定和外键。InnoDB是默认的MySQL引擎。

3.2ACID事务

ACID是指数据库事务的四个基本特性,它们分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这些特性确保了数据库事务的正确性和可靠性。

  1. ★原子性(Atomicity)★:原子性要求一个事务中的所有操作要么全部执行成功,要么全部不执行,即是一个不可分割的操作单元。如果事务执行过程中发生错误,系统会将事务中的所有修改操作全部回滚,使数据保持一致状态。
  2. ★一致性(Consistency)★:一致性确保了在事务开始和结束时数据的完整性和一致性。事务执行前后,数据库必须处于一致的状态,即满足事先定义的完整性约束条件。
  3. ★隔离性(Isolation)★:隔离性指在多个事务并发执行时,每个事务都应该感受不到其他事务的存在。每个事务的操作都应该像是在独立运行,给用户带来了一种串行执行的错觉。通过隔离性,可以避免并发事务执行时出现各种数据并发问题(如脏读、不可重复读、幻读)。
  4. ★持久性(Durability)★:持久性指一旦事务提交成功,其所做的修改将被永久保存在数据库中,即使在系统发生故障或重启时也能够恢复。数据库通过将事务的操作记录到日志文件中,保证了数据的持久性。

ACID事务保证了数据库操作的一致性和可靠性,使得多个并发事务能够协同工作而不会产生数据冲突或错误。开发人员可以依靠ACID属性来设计和实现可靠的数据库应用程序。然而,ACID事务的强一致性和隔离性也可能会对性能产生一定的影响,因此在实际应用中需要权衡事务的粒度和性能需求。

3.3四种隔离级别

在MySQL中,有四种常见的隔离级别,用于控制并发事务的隔离程度。这些隔离级别是:

  1. 读未提交(Read Uncommitted):最低的隔离级别,事务可以读取其他事务未提交的数据,可能导致脏读(Dirty Read)问题,即读到了未提交事务的数据。
  2. 读提交(Read Committed):事务只能读取已经提交的数据,解决了脏读问题。但是,由于其他事务可能会在当前事务中查询之前提交,所以会出现不可重复读(Non-repeatable Read)问题,即在同一事务中,多次查询同一数据,结果可能不一致。
  3. 可重复读(Repeatable Read):MySQL的默认隔离级别。保证在同一事务中多次读取同一个数据时,结果始终一致。其他事务的插入、更新操作在当前事务结束前不可见,避免了不可重复读问题。但是,仍然存在幻读(Phantom Read)问题,即在同一事务中多次查询同一条件的记录,结果可能不一致。
  4. 串行化(Serializable):最高的隔离级别,使用了悲观并发控制,对数据进行加锁,确保事务之间完全隔离,避免了脏读、不可重复读、幻读的问题。但是,由于锁竞争可能导致性能下降,并发性较低。

可以使用以下语句设置隔离级别:

SET TRANSACTION ISOLATION LEVEL <隔离级别>;

需要根据具体的业务需求和并发情况选择合适的隔离级别,权衡事务的隔离程度和性能要求。

3.4何为脏读,幻读和不可重复读

在MySQL中,脏读(Dirty Read)、幻读(Phantom Read)和不可重复读(Non-repeatable Read)是指在并发事务中可能出现的数据访问问题。

  1. 脏读(Dirty Read):脏读是指一个事务读取了另一个事务未提交的数据。当一个事务读取到另一个事务尚未提交的数据时,如果这个事务最终回滚,那么读取到的数据就是无效的(脏数据)。脏读可能会导致事务读取到不一致、不正确的数据。
  2. 幻读(Phantom Read):幻读是指在同一事务的两次查询中,由于其他事务插入或删除了符合第一次查询条件的数据,导致第二次查询返回不同的结果集。幻读一般发生在并发事务中的插入和删除操作,破坏了事务之间的一致性。
  3. 不可重复读(Non-repeatable Read):不可重复读是指在同一事务中,多次读取同一个数据,在多次读取之间,其他事务修改或删除了该数据,导致多次读取的结果不一致。不可重复读一般发生在并发事务中的更新操作,破坏了事务内部的一致性。

为了能让大家更加理解。下面是对脏读、幻读和不可重复读问题的图解说明:

假设有两个事务:事务A和事务B。

  • 脏读(Dirty Read)
事务A:
-------------
| 读取数据X |
-------------
事务B:
--------------
| 修改数据X |
--------------
事务B修改了数据X,但还没有提交。
此时,事务A读取到了事务B未提交的数据X,即脏读。
  • 幻读(Phantom Read)
事务A:
-----------------
| 查询条件1的数据 |
-----------------
事务B:
---------------------
| 插入符合条件1的数据 |
---------------------
事务A继续查询条件1的数据,发现有新插入的数据,导致结果集发生变化。此时,就发生了幻读。
  • 不可重复读(Non-repeatable Read)
事务A:
-----------------
| 读取数据X |
-----------------
事务B:
--------------
| 修改数据X |
--------------
事务B修改了数据X,但还没有提交。
事务A再次读取相同的数据X,发现数据发生了变化。此时,就发生了不可重复读。

上述示例说明了脏读、幻读和不可重复读在并发事务中的情况。为了避免这些问题,可以通过设置合适的隔离级别来控制并发事务之间的数据访问和操作。

4.数据库授权

在进行新增用户以及后面的一系列操作之前我们需要查看一下我们的数据库版本,因为版本不同,语句也可能发生改变。博主这边的是8.0版本的。如下:

4.1新增用户

新增一个用户的步骤如下:

新增用户,只有mybatis_ssm的使用权限(组长权限):

1.创建用户

2.用户设置密码

3.用户要赋权

4.删除用户

5.增加权限

6.收回部分权限

4.1.1创建用户

CREATE USER <用户> [ IDENTIFIED BY [ PASSWORD ] 'password' ] [ ,用户 [ IDENTIFIED BY [ PASSWORD ] 'password' ]]

结果如下:

我们在创建完后测试连接,如下:

可以看到我们列表里已经有了’zuzhang‘,如下:

4.1.2赋权用户

GRANT priv_type [(column_list)] ON database.table
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user[IDENTIFIED BY [PASSWORD] 'password']] ...
[WITH with_option [with_option]...]

如下:

执行之后的效果:

成功赋权。

4.1.3收回权限

语法如下:

REVOKE priv_type [(column_list)]...
ON database.table
FROM user [, user]...

代码如下:

执行之后的效果:

4.1.4删除用户

语法如下:

DROP USER <用户1> [ , <用户2> ]…

代码如下:

效果图:

ok列表里找不到我们的zuzhang用户了。


最后MySQL的基本使用就到这里,祝大家在敲代码的路上一路通畅!

感谢大家的观看 !


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
关系型数据库 MySQL Linux
CentOS7 MySQL 数据库基本使用
CentOS7 MySQL 数据库基本使用
846 0
CentOS7 MySQL 数据库基本使用
|
存储 SQL 关系型数据库
关于初识MySQL数据库以及MySQL的基本使用
关于初识MySQL数据库以及MySQL的基本使用
111 0
|
SQL 安全 数据可视化
MySQL基本使用
MySQL基本使用
|
SQL Java 关系型数据库
about MySQL Workbench的基本使用及运用操作
http://blog.csdn.net/dongdong9223/article/details/48318877   服务,有MySQL启动中,就证明安装完成了. (各种启动不成功时百度一下,1,安装选项时没有对firewall port 打勾 2,端口冲突 3,系统框架没有安装 .
2088 0
|
关系型数据库 MySQL
|
关系型数据库 MySQL 数据库
|
SQL 关系型数据库 MySQL
MySql WorkBench基本使用以及基本sql语句
原文http://www.2cto.com/database/201301/187110.html 导读: 本篇文章会教你如何使用My Sql WorkBench 5.2 进行数据库的基本操作(建库建表等) 前言 MySql是甲骨文公司的产物,所以有些地方跟Oracle挺相似,比如“服务器实例”这个概念,当初由sqlserver转Oracle的时候,一开始就不理解这个服务器实例是个什么东西,因为在SqlServer里,就只有一个服务器,登录之后就是操作数据库,基本上就是一个项目对应一个数据库。
2976 0
|
9天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
23 4
|
7天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
20 1
|
16天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
82 1