【MySQL】MySQL安装 和 配置

文章目录

  • 一、数据库基础
    • [1. 为什么使用数据库](#1. 为什么使用数据库)
    • [2. 主流数据库](#2. 主流数据库)
  • [二、MySQL的安装 和 配置](#二、MySQL的安装 和 配置)
    • [1. 安装教程](#1. 安装教程)
    • [2. mysql-server安装包 含MySQL客户端和服务端](#2. mysql-server安装包 含MySQL客户端和服务端)
    • [3. 对MySQL服务端的配置文件进行配置](#3. 对MySQL服务端的配置文件进行配置)
  • 三、MySQL的基本使用
    • [1. 登录MySOL客户端,并与MySQL服务器建立连接](#1. 登录MySOL客户端,并与MySQL服务器建立连接)
    • [2. 服务器,数据库,表关系](#2. 服务器,数据库,表关系)
  • 四、MySQL架构
  • 五、存储引擎
  • 六、SQL操作分类

一、数据库基础

1. 为什么使用数据库

存储数据用文件就可以了,为什么还要弄个数据库?

(1)文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

(2)数据库存储介质:

  • 磁盘
  • 内存

为了解决上述问题,专家们设计出更加利于管理数据的东西 ------ 数据库,它能更有效的管理数据。

2. 主流数据库

  • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
  • MySQL: 世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
  • PostgreSQL: 加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

二、MySQL的安装 和 配置

1. 安装教程

我的云服务器是 Ubuntu24.04,于是参照 CSDN网站上 Albert Edison博主的文章: 【2025最新】Ubuntu22.04 安装 MySQL8.0 教程,安装了 MySQL8.0

使用root用户登录MySQL客户端即可(首次登录无需密码),进入MySQL客户端后修改登录密码,此过程完全参照上述链接中的博客内容即可。
后续直接以root用户登录进行MySQL的操作学习,当然使用root用户操作权限过高,是存在安全隐患,等操作熟练后,补充用户管理的知识,切换到普通用户进行操作。

2. mysql-server安装包 含MySQL客户端和服务端

标准的mysql-server安装包是包含了服务端核心程序以及一个基础的命令行客户端工具。用户通过客户端(如mysql命令行或图形化工具)发送SQL指令,这些指令通过网络或本地套接字传输至MySQL服务进程(mysqld),由服务端执行具体的数据库创建、修改、查询等操作,并将结果返回给客户端。

MySQL客户端:mysql
MySQL服务端:mysqld

3. 对MySQL服务端的配置文件进行配置

MySQL8.0 的配置文件在 /etc/mysql/mysql.conf.d/ 目录文件下:

bash 复制代码
ubuntu@VM-0-4-ubuntu:~$ ls /etc/mysql/mysql.conf.d
mysql.cnf  mysqld.cnf

一共有两个配置文件,一个是 mysql.cnf 是MySQL客户端 的配置文件mysqld.cnf 是MySQL服务端(mysqld) 的配置文件

MySQL客户端只是一个命令行客户端工具,负责在用户 和 MySQL服务端间进行数据传输,所以它的配置文件一般无需修改,使用默认即可

  • 接下来对 MySQL服务端(mysqld) 的配置文件 mysqld.cnf 进行配置:

三、MySQL的基本使用

1. 登录MySOL客户端,并与MySQL服务器建立连接

MySOL服务端默认运行在本地的3306端口(在它的配置文件中有相关信息)
登录MySOL客户端时,要与MySOL服务端建立连接

  • 在bash命令行输入:
bash 复制代码
mysql -h 127.0.0.1 -P 3306 -u root -p

以 root 身份登录MySOL客户端,并与本地 3306端口的MySQL服务器建立连接,这样用户在MySOL客户端的图形化界面输入SQL语句时,MySOL客户端就能把语句传递给服务端!

还可以这样输入(省略ip和端口号,MySOL客户端默认会与本地 3306端口的MySQL服务器建立连接):

bash 复制代码
mysql -u root -p
  • 输出内容:

(输入密码后,进入MySOL客户端,后续用户在MySOL客户端的命令行输入SQL语句)

2. 服务器,数据库,表关系

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多

    个数据库,一般开发人员会针对每一个应用创建一个数据库。

  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

数据库服务器、数据库 和 表的关系如下:

用户通过客户端(如mysql命令行或图形化工具)发送SQL指令,这些指令通过网络或本地套接字传输至MySQL服务进程(mysqld),由服务端执行具体的数据库创建、修改、查询等操作,并将结果返回给客户端。

  • 创建数据库,实际就是在 /var/lib/mysql 目录下,创建一个文件夹
bash 复制代码
# 查看MySQL服务端(mysqld)的配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf

创建一个名为 test_db 的数据库,/var/lib/mysql 目录下 就会新增一个名为 test_db 的文件夹

  • 在数据库下创建表格,实际就是在 数据库对应的目录文件下,创建文件

四、MySQL架构

MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。 各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

五、存储引擎

存储引擎是 数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

MySQL的核心就是 插件式存储引擎,支持多种存储引擎。

  • 查看存储引擎的指令
bash 复制代码
show engines;
  • 存储引擎对比

MySQL 8.0 目前最常用的存储引擎主要是 InnoDB 和 MyISAM,其中InnoDB是默认存储引擎,也是绝大多数业务场景的首选

  • 最常用的 InnoDB vs MyISAM 核心差异对比
对比项 InnoDB MyISAM
事务支持 ✅ 支持完整ACID事务 ❌ 不支持事务
锁机制 行级锁+表级锁,并发高 仅表级锁,并发写性能差
外键约束 ✅ 支持 ❌ 不支持
崩溃恢复 ✅ 日志自动恢复 ❌ 易损坏,修复复杂
COUNT(*)性能 需要全表扫描,较慢 缓存总行数,极快
适用场景 核心业务、高并发读写 读多写少、无事务需求

(1)InnoDB:

  • MySQL 5.5+版本的默认存储引擎,专为事务处理、高并发场景设计,核心特性包括:支持完整的ACID事务、行级锁+MVCC多版本并发控制、外键约束,依靠redo/undo日志实现崩溃后自动恢复,数据可靠性高。
  • 适用场景: 几乎所有核心业务表,比如电商订单、支付流水、用户账户等对数据一致性要求高、并发读写频繁的场景。你做电池管理系统时,存储电池状态、运行数据这类核心业务表,默认用InnoDB即可。

(2)MyISAM:

  • MySQL早期版本的默认存储引擎,不支持事务和外键,仅支持表级锁,优势是查询速度快、占用磁盘空间小,SELECT COUNT(*)性能极高(直接缓存总行数),原生支持全文索引。劣势是宕机后容易出现表损坏,修复复杂,并发写性能差。
  • 适用场景: 仅适合读多写少、不需要事务保障的场景,比如网站访问日志统计、静态配置表、只读报表等场景,核心业务不推荐使用。

六、SQL操作分类

  • DDL【data definition language】 数据定义语言 ,用来维护存储数据的结构

    代表指令: create, drop, alter

  • DML【data manipulation language】 数据操纵语言 ,用来对数据进行操作

    代表指令: insert,delete,update

DML中又单独分了一个 DQL,数据查询语言,代表指令: select

  • DCL【Data Control Language】 数据控制语言 ,主要负责权限管理和事务
    代表指令: grant,revoke,commit

相关推荐
小马爱打代码1 小时前
Redis 和 MySQL 双写一致性:延迟双删、读写锁、MQ、Canal 怎么选?
数据库·redis·mysql
数智顾问2 小时前
(133页PPT)数据中心基础设施规划设计(附下载方式)
大数据·数据库·人工智能
l1t2 小时前
DeepSeek总结的PostgreSQL 的开源 TDE:pg_tde
数据库·postgresql·开源
南极企鹅2 小时前
深入理解 MVCC:数据库并发控制的基石
java·数据库·mysql
欧神附体1232 小时前
MYSQL数据库集群高可用和数据监控平台项目
数据库·mysql
abcy0712132 小时前
python在models定义了一个对象,接口调用时报错对象不存在models.xx.DoesNotExist
数据库·sqlite
無限進步D2 小时前
MySQL 数据处理之增删改
数据库·mysql
我,也来自江湖2 小时前
Redis的持久化有哪些方式
数据库·redis·缓存