当前位置: 首页 > article >正文

MySQL基础入门:MySQL简介与环境搭建

引言

在数字化转型浪潮中,MySQL作为数据存储的"基石引擎",支撑着从电商交易到金融风控的各类核心业务。其高并发处理能力、灵活的架构设计及跨平台兼容性,使其成为开发者技术栈中的"常青树"。本章节将通过历史溯源、技术对比、环境实战、服务运维及工具精研五大维度,构建完整的MySQL认知体系,助你从"数据库小白"跃升为"全栈DBA"。💡✨


一、MySQL历史与版本演进

1.1 里程碑事件

  • 1995年开源:由Monty Widenius团队发布,采用GPL协议开启开源数据库时代
  • 2008年Sun收购:MySQL AB公司被Sun Microsystems以10亿美元收购,奠定企业级市场基础
  • 2010年Oracle并购:Oracle收购Sun后,MySQL进入双轨战略(社区版/企业版)
  • 2016年MySQL 8.0发布:引入原子DDL、窗口函数、CTE等革命性特性

1.2 版本特性对比

版本核心改进典型应用场景
5.7性能提升2倍,JSON支持,GIS增强传统Web应用、日志分析
8.0原子DDL,InnoDB集群,文档存储微服务架构、实时数据分析
社区版开源免费,适合中小型项目初创企业、开源项目
企业版高可用插件,审计日志,线程池金融、电信等核心业务系统

1.3 版本选择策略

  • 开发测试:优先使用最新稳定版(如8.0.33)
  • 生产环境:根据业务需求选择版本(如金融系统建议使用5.7 LTS)
  • 升级路径:5.6→5.7→8.0分阶段升级,规避兼容性问题

二、MySQL与其他数据库对比

2.1 功能维度对比矩阵

特性MySQLPostgreSQLOracleMongoDB
事务隔离级别支持READ COMMITTED等4级支持SERIALIZABLE最高级支持RAC集群事务多文档事务支持较弱
复杂查询依赖索引优化支持CTE、窗口函数支持分析函数聚合查询效率较低
扩展性分库分表+中间件扩展插件机制RAC集群水平分片+自动Sharding

2.2 典型场景选型建议

  • 电商秒杀系统:MySQL 8.0 + Redis缓存,通过SELECT * FROM orders WHERE user_id=1001 FOR UPDATE实现乐观锁
  • 金融对账系统:PostgreSQL 16 + JSONB字段,通过WITH RECURSIVE递归查询实现树形结构数据
  • 物联网设备监控:MongoDB 6.0 + 时序集合,通过$match+$group聚合管道实现分钟级数据统计

三、MySQL安装与配置

3.1 Windows平台

1. 准备工作

  • 系统要求
    • Windows 10/11 64位(建议专业版)
    • 至少4GB内存(生产环境建议8GB+)
    • 预留10GB磁盘空间(数据目录建议SSD)
  • 卸载残留(若重装):
    sc query mysql  # 检查服务是否存在
    net stop mysql  # 停止服务
    sc delete mysql  # 删除服务
    rd /s /q "C:\Program Files\MySQL\"  # 删除安装目录
    rd /s /q "C:\ProgramData\MySQL\"  # 删除数据目录(隐藏文件夹)
    

2. 安装步骤

  1. 下载安装包

    • 访问MySQL官网,选择:
      • Installer类型mysql-installer-community-8.4.25.0.msi(约420MB)
      • 版本:MySQL Community Server 8.4.25
  2. 安装配置

    • 安装类型:选择Custom(自定义安装)
    • 核心组件
      • MySQL Server 8.4.25-X64
      • MySQL Workbench 8.4 CE
      • MySQL Shell 8.4
    • 配置项
      • 连接方式Standalone MySQL Server
      • 字符集utf8mb4(支持完整Unicode)
      • 端口:默认3306(可修改为3307避免冲突)
      • 认证插件
        • 开发环境:mysql_native_password(兼容旧客户端)
        • 生产环境:caching_sha2_password(默认,安全性更高)
  3. 环境变量配置

    • 添加系统变量:
      • 变量名:MYSQL_HOME
      • 变量值:C:\Program Files\MySQL\MySQL Server 8.4
    • 修改Path变量,添加:
      %MYSQL_HOME%\bin
      
  4. 验证安装

    mysql --version  # 应显示8.4.25版本
    mysql -u root -p  # 输入密码后进入命令行
    

3.2 Linux(Ubuntu)平台

1. 环境准备(Ubuntu 22.04 LTS示例)

# 1. 更新系统
sudo apt update && sudo apt upgrade -y# 2. 安装依赖
sudo apt install -y wget gnupg2 lsb-release# 3. 添加MySQL APT仓库
wget https://dev.mysql.com/get/mysql-apt-config_0.8.25-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.25-1_all.deb
# 选择MySQL 8.4 Server,其他保持默认# 4. 更新仓库并安装
sudo apt update
sudo apt install -y mysql-server=8.4.25-1ubuntu22.04

2. 安全加固

sudo mysql_secure_installation
# 配置项:
# - 启用VALIDATE PASSWORD插件(强密码策略)
# - 移除匿名用户
# - 禁止root远程登录
# - 删除测试数据库
# - 刷新权限表

3. 配置文件优化

# /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# 基础配置
user = mysql
basedir = /usr
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid# 性能优化
innodb_buffer_pool_size = 4G  # 内存的50-70%
innodb_log_file_size = 1G
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
max_connections = 500# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci# 日志配置
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

4. 重启服务

sudo systemctl restart mysql
sudo systemctl enable mysql  # 开机自启

3.3 macOS平台

1. Homebrew安装(推荐)

# 1. 安装Homebrew(若未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# 2. 安装MySQL
brew install mysql@8.4# 3. 启动服务
brew services start mysql@8.4# 4. 安全配置
mysql_secure_installation
# 配置项:
# - 设置root密码
# - 移除匿名用户
# - 禁止root远程登录
# - 删除测试数据库

2. 配置文件路径

  • 配置文件:/opt/homebrew/etc/my.cnf
  • 数据目录:/opt/homebrew/var/mysql

3. 环境变量配置

echo 'export PATH="/opt/homebrew/opt/mysql@8.4/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

四、MySQL服务管理

4.1 服务控制命令集

场景Windows命令Linux/macOS命令
启动net start mysqlsystemctl start mysqld
停止net stop mysqlsystemctl stop mysqld
重启net restart mysqlsystemctl restart mysqld
查看状态sc query mysqlsystemctl status mysqld

4.2 常见故障解决方案

1. 错误1045(Access Denied)

  • 原因:密码错误或用户无权限
  • 解决方案
    # 1. 停止MySQL服务
    sudo systemctl stop mysql  # Linux/macOS
    net stop mysql  # Windows# 2. 跳过权限表启动
    sudo mysqld_safe --skip-grant-tables &  # Linux/macOS
    mysqld --skip-grant-tables  # Windows# 3. 修改密码
    mysql -u root
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewP@ssw0rd!';
    

2. 端口冲突(3306被占用)

  • 检查端口
    netstat -ano | findstr 3306  # Windows
    sudo lsof -i :3306  # Linux/macOS
    
  • 解决方案
    • 修改MySQL端口(my.cnf中设置port=3307
    • 终止占用进程

3. 字符集乱码

  • 配置项
    [mysqld]
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci[client]
    default-character-set = utf8mb4[mysql]
    default-character-set = utf8mb4
    

五、客户端工具使用

5.1 MySQL Workbench进阶使用

  • 可视化建模
    • 逆向工程:将现有数据库生成ER图
    • 正向工程:从ER图生成SQL脚本
  • 性能调优
    • 使用Visual Explain可视化执行计划
    • 通过Performance Dashboard监控实时指标

5.2 命令行客户端高阶技巧

  • 交互式提示符
    mysql -u root -p --pager="less -S"  # 分页显示长查询结果
    
  • 历史记录管理
    # 在~/.my.cnf中添加
    [mysql]
    prompt=\\u@\\h [\\d]>\\_
    
  • 批量执行
    mysql -u root -p < init_script.sql
    

5.3 第三方工具推荐

  • DBeaver:跨平台开源数据库工具,支持多种数据库
  • Navicat Premium:商业工具,提供数据迁移、报表生成等高级功能
  • Adminer:轻量级PHP应用,适合快速部署

总结 🎯

通过本次深度学习,我们完成了从MySQL"理论认知"到"实战部署"的完整闭环:

1️⃣ 历史演进:理解开源数据库的进化逻辑
2️⃣ 技术选型:掌握不同场景下的数据库决策树
3️⃣ 环境搭建:实现多平台自动化部署与优化
4️⃣ 运维监控:构建从启动到备份的全生命周期管理
5️⃣ 工具精研:掌握图形化与命令行的高效协作模式

愿你在MySQL的星辰大海中,持续精进,成为数据库领域的"架构大师"!🌌🚀


PS:如果你在学习过程中遇到问题,别慌!欢迎在评论区留言,我会尽力帮你解决!😄

相关文章:

MySQL基础入门:MySQL简介与环境搭建

引言 在数字化转型浪潮中&#xff0c;MySQL作为数据存储的"基石引擎"&#xff0c;支撑着从电商交易到金融风控的各类核心业务。其高并发处理能力、灵活的架构设计及跨平台兼容性&#xff0c;使其成为开发者技术栈中的"常青树"。本章节将通过历史溯源、技术…...

力扣-543.二叉树的直径

题目描述 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 class Solution { public:int maxLength(TreeNode *…...

Starrocks的主键表涉及到的MOR Delete+Insert更新策略

背景 写这个文章的作用主要是做一些总结和梳理&#xff0c;特别是正对大数据场景下的实时写入更新策略 COW 和 MOR 以及 DeleteInsert 的技术策略的演进&#xff0c; 这也适用于其他大数据的计算存储系统。该文章主要参考了Primary Key table. 分析总结 Starrocks 的主键表主…...

《操作系统真象还原》第十四章(2)——文件描述符、文件操作基础函数

文章目录 前言文件描述符简介文件描述符原理文件描述符实现修改thread.h修改thread.c 文件操作相关的基础函数inode操作相关函数文件相关函数编写file.h编写file.c 目录相关函数完善fs/dir.h编写fs/dir.c 路径解析相关函数实现文件检索功能修改fs.h继续完善fs.c makefile 结语 …...

EMQX v5.0通过连接器和规则同步数据

1 概述 EMQX数据集成功能&#xff0c;帮助用户将所有的业务数据无需额外编写代码即可快速完成处理与分发。 数据集成能力由连接器和规则两部分组成&#xff0c;用户可以使用数据桥接或 MQTT 主题来接入数据&#xff0c;使用规则处理数据后&#xff0c;再通过数据桥接将数据发…...

2. 盒模型/布局模块 - 响应式产品展示页_案例:电商产品网格布局

2. 盒模型/布局模块 - 响应式产品展示页 案例&#xff1a;电商产品网格布局 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">:root {--primary-color…...

LVGL的三层屏幕结构

文章目录 &#x1f31f; LVGL 的三层屏幕架构1. **Top Layer&#xff08;顶层&#xff09;**2. **System Layer&#xff08;系统层&#xff09;**3. **Active Screen&#xff08;当前屏幕层&#xff09;** &#x1f9e0; 总结对比&#x1f50d; 整体作用✅ 普通屏幕层对象&…...

【PDF】使用Adobe Acrobat dc添加水印和加密

【PDF】使用Adobe Acrobat dc添加水印和加密 文章目录 [TOC](文章目录) 前言一、添加保护加密口令二、添加水印三、实验四、参考文章总结 实验工具&#xff1a; 1.Adobe Acrobat dc 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、添加保护加…...

AI 搜索引擎 MindSearch

背景 RAG是一种利用文档减少大模型的幻觉&#xff0c;AI搜索也是 AI 搜索引擎 MindSearch 是一个开源的 AI 搜索引擎框架&#xff0c;具有与 Perplexity.ai Pro 相同的性能。您可以轻松部署它来构建您自己的搜索引擎&#xff0c;可以使用闭源 LLM&#xff08;如 GPT、Claude…...

Windows下安装mysql8.0

一、下载安装离线安装包 &#xff08;下载过了&#xff0c;可以跳过&#xff09; 下载网站&#xff1a;MySQL :: Download MySQL Installerhttps://dev.mysql.com/downloads/installer/ 二、安装mysql 三、安装完成验证...

【android bluetooth 框架分析 02】【Module详解 7】【VendorSpecificEventManager 模块介绍】

1. 背景 我们在 gd_shim_module 介绍章节中&#xff0c;看到 我们将 VendorSpecificEventManager 模块加入到了 modules 中。 // system/main/shim/stack.cc modules.add<hci::VendorSpecificEventManager>();在 ModuleRegistry::Start 函数中我们对 加入的所有 module…...

水滴Android面经及参考答案

static 关键字有什么作用&#xff0c;它修饰的方法可以使用非静态的成员变量吗&#xff1f; static关键字在 Java 中有多种作用。首先&#xff0c;它可以用来修饰变量&#xff0c;被static修饰的变量称为静态变量。静态变量属于类&#xff0c;而不属于类的某个具体实例&#xf…...

工程师必读! 3 个最常被忽略的 TDR 测试关键细节与原理

TDR真的是一个用来看阻抗跟Delay的好工具&#xff0c;通过一个Port的测试就可以看到通道各个位置的阻抗变化。 可是使用上其实没这么单纯&#xff0c;有很多细节需要非常地小心&#xff0c;才可以真正地看到您想看的信息&#xff01; 就让我们整理3个极为重要的TDR使用小细节&…...

C++中的各式类型转换

隐式转换&#xff1a; 基本类型的隐式转换&#xff1a; 当函数参数类型非精确匹配&#xff0c;但是可以转换的时候发生 如&#xff1a; void func1(double x){cout << x << endl; }void func2(char c){cout << c << endl; }int main(){func1(2);//…...

2025年阿里云ACP人工智能高级工程师认证模拟试题(附答案解析)

这篇文章的内容是阿里云ACP人工智能高级工程师认证考试的模拟试题。 所有模拟试题由AI自动生成&#xff0c;主要为了练习和巩固知识&#xff0c;并非所谓的 “题库”&#xff0c;考试中如果出现同样试题那真是纯属巧合。 1、在PAl-Studio实验运行完毕后&#xff0c;可以右键单…...

如何使用scp命令拉取其他虚拟机中的文件

使用 SCP 命令拉取远程虚拟机文件 scp&#xff08;Secure Copy&#xff09;是基于 SSH 协议的安全文件传输工具&#xff0c;可以在本地与远程主机之间复制文件。以下是使用scp从其他虚拟机拉取文件的详细指南&#xff1a; 一、基本语法 bash # 从远程主机复制到本地 scp [选…...

Nacos源码—9.Nacos升级gRPC分析七

大纲 10.gRPC客户端初始化分析 11.gRPC客户端的心跳机制(健康检查) 12.gRPC服务端如何处理客户端的建立连接请求 13.gRPC服务端如何映射各种请求与对应的Handler处理类 14.gRPC简单介绍 10.gRPC客户端初始化分析 (1)gRPC客户端代理初始化的源码 (2)gRPC客户端启动的源码…...

从入门到精通:Drools全攻略

目录 一、Drools 初相识二、快速上手 Drools2.1 环境搭建2.2 第一个 Drools 程序 三、深入理解 Drools 核心概念3.1 规则&#xff08;Rule&#xff09;3.2 工作内存&#xff08;Working Memory&#xff09;3.3 知识库&#xff08;Knowledge Base, KieBase&#xff09;3.4 会话&…...

最大子段和(递推)

题目描述 给出一个长度为 n 的序列 a&#xff0c;选出其中连续且非空的一段使得这段和最大。 输入格式 第一行是一个整数&#xff0c;表示序列的长度 n。 第二行有 n 个整数&#xff0c;第 i 个整数表示序列的第 i 个数字 ai​。 输出格式 输出一行一个整数表示答案。 输…...

【计算机视觉】基于深度学习的实时情绪检测系统:emotion-detection项目深度解析

基于深度学习的实时情绪检测系统&#xff1a;emotion-detection项目深度解析 1. 项目概述2. 技术原理与模型架构2.1 核心算法1) 数据预处理流程2) 改进型MobileNetV2 2.2 系统架构 3. 实战部署指南3.1 环境配置3.2 数据集准备3.3 模型训练3.4 实时推理 4. 常见问题与解决方案4.…...

Windows CMD通过adb检查触摸屏Linux驱动是否被编译

检查 CONFIG_TOUCHSCREEN_GT9XX 是否启用&#xff0c;检查内核是否编译了Goodix GT9XX系列触摸屏的驱动支持 Windows CMD.exe输入&#xff1a; adb shell “zcat /proc/config.gz | grep CONFIG_TOUCHSCREEN_GT9XX” 如果返回CONFIG_TOUCHSCREEN_GT9XXy&#xff0c;表示驱动已编…...

【图像处理基石】什么是油画感?

在图像处理中&#xff0c;“油画感”通常指图像呈现出类似油画的块状纹理、笔触痕迹或色彩过渡不自然的现象&#xff0c;表现为细节模糊、边缘不锐利、颜色断层或人工纹理明显。这种问题常见于照片处理、视频帧截图或压缩后的图像&#xff0c;本质是画质受损的一种表现。以下是…...

AD PCB布线的常用命令

PCB布线顺序&#xff1a;先信号&#xff0c;再电源&#xff0c;再GNG 1.多根走线的应用 将IC上的引脚分类 更改一类引脚以及引线的颜色&#xff0c;画出走线&#xff08;将脚引出&#xff09; 选中这些走线&#xff0c;点击‘交互式总线布线’&#xff0c;便可以多根拉线 shi…...

Python操作Elasticsearch实战指南:从安装到性能调优的全链路解析

一、引言:为什么选择Python+Elasticsearch? Elasticsearch作为分布式搜索引擎,在日志分析、全文检索等场景中表现卓越。Python凭借其简洁语法和丰富生态,成为操作ES的首选语言。本文将带您从环境搭建到性能调优,系统掌握Python操作ES的核心技能。 二、环境准备:三步完成…...

【3-2】HDLC

前言 前面我们提到了 PSTN&#xff08;Public Switched Telephone Network&#xff09; &#xff0c;今天介绍一种很少见的数据链路层的协议&#xff0c;HDLC&#xff01; 文章目录 前言1. 定义2. 帧边界3. 零比特填充4. 控制字段4.1. 信息帧&#xff08;I帧&#xff09;4.2. …...

MySQL 学习(八)如何打开binlog日志

目录 一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启&#xff08;重启后失效&#xff09;3.2 永久开启&#xff08;需修改配置文件&#xff09;3.3 验证是否开启成功3.4 查看 binlog 内容 四、高级配置建议五、注意事项六、开启后的日常维护 知识回顾&a…...

《数据库原理》部分习题解析

《数据库原理》部分习题解析 1. 课本pg196.第1题。 &#xff08;1&#xff09;函数依赖 若对关系模式 R(U) 的任何可能的关系 r&#xff0c;对于任意两个元组 t₁ 和 t₂&#xff0c;若 t₁[X] t₂[X]&#xff0c;则必须有 t₁[Y] t₂[Y]&#xff0c;则称属性集 Y 函数依赖…...

OpenCV进阶操作:光流估计

文章目录 前言一、光流估计1、光流估计是什么&#xff1f;2、光流估计的前提&#xff1f;1&#xff09;亮度恒定2&#xff09;小运动3&#xff09;空间一致 3、OpenCV中的经典光流算法1&#xff09;Lucas-Kanade方法&#xff08;稀疏光流&#xff09;2&#xff09; Farneback方…...

uniapp+vue3开发项目之引入vuex状态管理工具

前言&#xff1a; 我们在vue2的时候常用的状态管理工具就是vuex&#xff0c;vue3开发以后&#xff0c;又多了一个pinia的选项&#xff0c;相对更轻便&#xff0c;但是vuex也用的非常多的&#xff0c;这里简单说下在uni-app中vuex的使用。 实现步骤&#xff1a; 1、安装&#x…...

SparkSQL 连接 MySQL 并添加新数据:实战指南

SparkSQL 连接 MySQL 并添加新数据&#xff1a;实战指南 在大数据处理中&#xff0c;SparkSQL 作为 Apache Spark 的重要组件&#xff0c;能够方便地与外部数据源进行交互。MySQL 作为广泛使用的关系型数据库&#xff0c;与 SparkSQL 的结合可以充分发挥两者的优势。本文将详细…...