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

【数据库】MySQL 详细安装与基础使用教程(8版本下载及安装)

前言

适用于 零基础新生,从下载安装到创建数据库、表的完整步骤。


第一部分:下载与安装 MySQL

1. 下载 MySQL

  • 最新版下载
  1. 访问 https://www.mysql.com/downloads/
  2. 点击 Download

学习是免费的,商用需要付费,进入下载界面,下载对应版本就行了。 

  •  历史版本下载

历史版本更稳定,我这里推荐下载 8.0+ 版本,本文也以8版本为示例,怎么下载历史版本呢,在开发区:

 https://dev.mysql.com/downloads/

然后:

 选择版本,和操作系统,下载完整包:


2. 安装 MySQL(Windows 示例)

安装过程,不要升级,不然就不是8版本了:

支持sql命令行的话,需要把shell也安装上:

 

设置 Root 密码,弱密码也可以过(测试用简单点方便,正式环境绝对不要这样用,如 123456)。

勾选 “Start the MySQL Server at System Startup”(开机自启)。

安装过程出现问题,可以查看log中的安装信息。

完成安装,勾选 “Launch MySQL Shell” 测试连接。


3. 验证安装

  1. 打开 MySQL Command Line Client
  2. 输入root 密码
    
    
  3. 输入之前设置的 root 密码,看到 mysql> 提示符即成功。


第二部分:数据库与表操作

1. 创建数据库

-- 查看所有数据库
SHOW DATABASES;-- 创建新数据库(例如 `student_db`)
CREATE DATABASE student_db;-- 使用数据库
USE student_db;

2. 创建表

-- 创建学生表(包含 id, 姓名, 年龄)
CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT,email VARCHAR(100)
);-- 查看当前数据库的表
SHOW TABLES;-- 查看表结构
DESCRIBE students;

3. 插入数据

-- 插入单条数据
INSERT INTO students (name, age, email) 
VALUES ('张三', 20, 'zhangsan@example.com');-- 插入多条数据
INSERT INTO students (name, age, email) 
VALUES ('李四', 22, 'lisi@example.com'),('王五', 21, 'wangwu@example.com');

4. 查询数据

-- 查询所有数据
SELECT * FROM students;-- 条件查询(年龄大于20的学生)
SELECT * FROM students WHERE age > 20;-- 排序查询(按年龄降序)
SELECT * FROM students ORDER BY age DESC;

5. 更新与删除数据

-- 更新数据(将李四的年龄改为23)
UPDATE students SET age = 23 WHERE name = '李四';-- 删除数据(删除王五的记录)
DELETE FROM students WHERE name = '王五';-- 清空表(谨慎使用!)
TRUNCATE TABLE students;

6. 备份与恢复数据库

备份(导出)
# 在终端执行(非 MySQL 命令行)
mysqldump -u root -p student_db > student_db_backup.sql
恢复(导入)
mysql -u root -p student_db < student_db_backup.sql

第三部分:图形化工具推荐(可选)

  1. MySQL Workbench

    • 官方工具,支持可视化操作数据库。
    • 下载地址:https://dev.mysql.com/downloads/workbench/
  2. DBeaver(免费通用数据库工具)

    • 下载地址:DBeaver Community | Free Universal Database Tool

常见问题解决

  1. 忘记 root 密码

    • 重置密码步骤:
      # 停止 MySQL 服务
      sudo systemctl stop mysql# 启动无密码模式
      sudo mysqld_safe --skip-grant-tables &# 登录并修改密码
      mysql -u root
      FLUSH PRIVILEGES;
      ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  2. 连接被拒绝(Access Denied)

    • 检查是否输入正确的用户名和密码。
    • 确保 MySQL 服务已启动:
      # Windows
      net start mysql# Linux/macOS
      sudo systemctl start mysql

总结

  • 安装:下载官方安装包,设置 root 密码。
  • 操作
    • 创建数据库:CREATE DATABASE
    • 创建表:CREATE TABLE
    • 增删改查:INSERTDELETEUPDATESELECT
  • 维护:备份用 mysqldump,恢复用 mysql < backup.sql

其他:PostgreSQL和mysql功能比较

PostgreSQL 和 MySQL 是两种最流行的开源关系型数据库,它们在功能、性能、适用场景等方面各有优劣。以下是详细比较:


1. 基本概述

表格

特性PostgreSQLMySQL
类型对象关系型数据库 (ORDBMS)纯关系型数据库 (RDBMS)
开发方开源社区 (PostgreSQL Global Development Group)Oracle 公司 (原属 Sun,后被收购)
许可协议PostgreSQL License (类 BSD)GPL (社区版) / 商用需付费
主要版本最新稳定版:16 (2023年)最新稳定版:8.0 (2023年)
默认存储引擎单一存储引擎 (基于表)多存储引擎 (InnoDB、MyISAM 等)

2. 功能对比

(1) SQL 标准支持

表格

特性PostgreSQLMySQL
ACID 事务✅ 完全支持✅ (仅 InnoDB)
窗口函数✅ 完善支持✅ 8.0+ 支持
CTE (WITH 子句)✅ 支持✅ 8.0+ 支持
JSON/JSONB 支持✅ (JSONB 支持索引)✅ (部分功能)
地理空间数据 (GIS)✅ PostGIS 扩展✅ 有限支持
自定义函数/存储过程✅ PL/pgSQL、Python、Perl 等✅ 存储过程语法较简单

(2) 高级功能

表格

特性PostgreSQLMySQL
物化视图✅ 支持❌ 不支持
递归查询✅ 支持✅ 有限支持
表继承✅ 支持❌ 不支持
并行查询✅ 支持 (优化复杂查询)✅ 有限支持
全文检索✅ TSVector/TSQuery✅ 全文索引

3. 性能对比

表格

场景PostgreSQLMySQL
OLTP (短事务)⚡ 优化较好,适合高并发写操作⚡ InnoDB 优化极佳,简单查询更快
OLAP (复杂分析)✅ 并行查询、CTE、高级聚合更强❌ 复杂分析性能较差
读性能较优 (但优化器复杂,查询计划可能不稳定)⚡ 简单查询极快
高并发写入✅ 支持行级锁、多版本并发控制 (MVCC)✅ InnoDB 支持,但锁竞争可能更明显
分区表性能✅ 原生分区表支持 (10+)✅ 8.0+ 支持,但功能较弱

4. 扩展性与生态系统

表格

特性PostgreSQLMySQL
扩展插件✅ 丰富 (PostGIS, TimescaleDB, Citus)❌ 较少
主从复制✅ 逻辑/物理复制 (WAL)✅ 基于 binlog
分片 (Sharding)✅ Citus 扩展❌ 需中间件 (Vitess)
云服务支持AWS RDS/Aurora、Azure DB、GCP Cloud SQL✅ AWS RDS/Aurora 更成熟
ORM 支持Django、SQLAlchemy、TypeORM 等✅ 几乎所有框架支持

5. 适用场景

✅ PostgreSQL 更适合:

  1. 复杂查询 & 分析:数据仓库、BI 分析、GIS 应用。
  2. 企业级应用:需要严格 ACID、高级 SQL 功能(如窗口函数)。
  3. 自定义扩展:需要 PostGIS (地理数据)、TimescaleDB (时序数据) 等插件。

✅ MySQL 更适合:

  1. Web 应用 & 高并发 CRUD:如电商、博客、CMS (WordPress)。
  2. 简单场景:不需要复杂 SQL、只需要快速读写。
  3. 云托管服务:AWS Aurora MySQL 优化极佳

6. 选择建议

表格

情况推荐数据库
需要高级 SQL (CTE/窗口函数)PostgreSQL
简单 Web 应用,高并发读写MySQL
GIS/地理数据处理PostgreSQL + PostGIS
金融系统 (严格 ACID)PostgreSQL
时序数据 (IoT/监控)PostgreSQL + TimescaleDB
需要轻量级、易管理MySQL

 PostgreSQL和mysql资源比较

以下是 PostgreSQL 和 MySQL 在 资源占用情况 和 硬件要求 方面的详细对比,帮助你根据实际环境选择最合适的数据库。


1. 内存占用

表格

方面PostgreSQLMySQL
默认配置通常占用较多内存(默认 shared_buffers 较大)InnoDB 默认 innodb_buffer_pool_size 较小
高负载优化需要手动调优 shared_bufferswork_mem 等InnoDB 自适应缓存机制更友好
简单查询内存占用较高(查询计划器复杂)较低(优化器轻量,适合短查询)
复杂查询内存占用可控(支持并行查询时可能更高)可能因复杂 join 占用较多临时表

结论

  • PostgreSQL 默认占用内存较高,但在复杂查询上更可控。
  • MySQL 短查询更省内存,但大表 join 时可能会有临时表问题。

2. CPU 需求

表格

方面PostgreSQLMySQL
OLTP (短事务)优化较好,但单核性能弱于 MySQL单核性能更优(InnoDB 引擎优化更好)
OLAP (复杂查询)并行查询优化更佳(多核利用更强)复杂分析查询性能较差
并发连接影响1 个连接 ≈ 10MB 内存占用较轻量(连接池优化更好)

结论

  • PostgreSQL 适合 多核 CPU(并行查询优化好)。
  • MySQL 在 单核高频 CPU 上表现更好(如 Web 服务)。

3. 磁盘 I/O 与存储

表格

方面PostgreSQLMySQL
默认存储引擎单一存储引擎(堆表 + TOAST 大对象)多引擎(InnoDB 适合事务,MyISAM 适合读密集型)
WAL/事务日志WAL (Write-Ahead Log) 保证数据安全redo log + binlog 双重保障
索引类型B-tree、Hash、GiST (地理索引)、GIN (全文索引)B-tree、Full-text、R-tree (MyISAM)
数据压缩支持 TOAST 自动压缩大字段InnoDB 表压缩(透明页压缩)

结论

  • PostgreSQL 适合 高频写入 & 复杂查询(WAL 优化好)。
  • MySQL InnoDB 更省 I/O(适配 SSD 优化更好)。

4. 网络与连接管理

表格

方面PostgreSQLMySQL
最大连接数受 max_connections 限制(默认 100)理论更高(连接池优化更成熟)
连接开销每个连接 ≈ 5-10MB 内存更轻量(连接池如 thread_pool
长连接优化需要定期维护(VACUUM连接池方案更成熟(如 ProxySQL)

结论

  • MySQL 更适合 高并发短连接(如 Web 应用)。
  • PostgreSQL 适合 长连接 & 复杂会话(如数据分析)。

5. 硬件推荐配置

(1) 小型应用(1-10万行数据)

表格

资源PostgreSQLMySQL
CPU2 核1-2 核
内存2-4 GB1-2 GB
存储20 GB SSD10 GB SSD

(2) 中型应用(100万行以上)

表格

资源PostgreSQLMySQL
CPU4-8 核4 核
内存8-16 GB4-8 GB
存储100 GB NVMe50 GB NVMe

(3) 大型企业级(千万行+)

表格

资源PostgreSQLMySQL
CPU16+ 核8-16 核
内存32-64 GB16-32 GB
存储1TB+ NVMe500GB+ NVMe

6. 优化建议

PostgreSQL 优化

  1. 内存优化
    • 调高 shared_buffers(25% 总内存)。
    • 设置 work_mem 优化排序/哈希操作。
  2. I/O 优化
    • 启用 effective_io_concurrency(NVMe SSD 可设 200+)。
    • 使用 pg_repack 减少表膨胀。
  3. 连接管理
    • 使用 PGBouncer 连接池。

MySQL 优化

  1. 内存优化
    • 调整 innodb_buffer_pool_size(70-80% 总内存)。
  2. I/O 优化
    • 启用 innodb_io_capacity(SSD 可设 2000+)。
  3. 连接管理
    • 使用 ProxySQL 或 MySQL Router。

总结

选型推荐

表格

场景推荐数据库理由
简单 Web 应用MySQL低资源占用,高并发短查询优化好
数据分析/GISPostgreSQL并行计算、扩展性强
金融/强一致性系统PostgreSQL严格 ACID,MVCC 支持更完善
超高并发 OLTPMySQLInnoDB 单核性能更优

关键结论

  • PostgreSQL 更吃内存(但复杂查询可控)。
  • MySQL 更省 CPU(简单查询极快)。
  • 存储方面,两者都依赖 SSD/NVMe,但 MySQL 的 InnoDB 对 SSD 优化更好。

 其他轻量级数据库

如果你的应用场景较为简单,数据量不大(几千到几十万行),并且希望 轻量级、低资源占用 的关系型数据库,以下是几种比 PostgreSQL 和 MySQL 更轻量 的推荐方案:


1. SQLite(嵌入式数据库,极致轻量)

✅ 最适合:单机应用、移动端、IoT、小型工具
❌ 不适合:高并发写入、多客户端访问

表格

特点说明
无服务架构无需安装数据库服务,直接读写本地文件(.db 或 .sqlite)。
零配置开箱即用,无需用户管理、连接池或权限控制。
超低资源占用内存占用 ≈ 几 MB,存储空间极小(数据库即单个文件)。
兼容性支持标准 SQL(包括事务、索引、触发器、视图)。

适用场景

  • 桌面应用(如 Electron 应用)
  • 移动端 App(Android/iOS 默认支持)
  • 小型工具或脚本的本地数据存储
  • 开发和测试环境快速原型

2. DuckDB(OLAP 嵌入式数据库,分析优化)

✅ 最适合:数据分析、轻量级 ETL、本地 BI
❌ 不适合:高频写入、多用户并发

表格

特点说明
列式存储针对分析查询优化(类似 SQLite,但更适合聚合操作)。
高性能在单机环境中比 SQLite 更擅长复杂分析。
兼容 PostgreSQL 语法学习成本低,支持窗口函数、CTE 等高级 SQL。

适用场景

  • 本地数据分析(替代 Excel 复杂操作)
  • 日志分析或轻量级数仓
  • 科学计算(Pandas 替代方案)

3. H2 Database(Java 嵌入式数据库)

✅ 最适合:Java/Kotlin 应用、Spring Boot 测试
❌ 不适合:非 Java 生态、超高并发

表格

特点说明
纯 Java 实现可作为内存数据库或文件存储,支持 JDBC。
内存模式启动快,适合单元测试(如 Spring Boot @DataJpaTest)。
Web 控制台内置管理界面(类似 PHPMyAdmin)。

适用场景

  • Java/Kotlin 应用的本地开发
  • 快速原型验证
  • 自动化测试(替代 MySQL 减少依赖)

Spring Boot 配置(application.properties


4. MariaDB Embedded(MySQL 轻量版)

✅ 最适合:需要兼容 MySQL 但资源有限
❌ 不适合:非嵌入式场景

表格

特点说明
兼容 MySQL 语法直接替代 MySQL,但更轻量(适合嵌入式设备)。
低内存占用比完整版 MySQL 节省约 30% 内存。

适用场景

  • 树莓派等嵌入式设备
  • 需要 MySQL 语法但资源受限的环境

5. 极致轻量方案对比

表格

数据库语言存储方式内存占用适用场景
SQLiteC单文件几 MB本地应用、移动端
DuckDBC++单文件/内存10-100 MB数据分析、BI
H2 DatabaseJava内存/单文件10-50 MBJava 应用、测试
MariaDB EmbeddedC文件/内存50-100 MB兼容 MySQL 的嵌入式环境

如何选择?

  1. 需要极致轻量 + 单机使用 → SQLite
  2. 数据分析 + 兼容 PostgreSQL → DuckDB
  3. Java 生态 + 快速测试 → H2 Database
  4. 兼容 MySQL + 嵌入式设备 → MariaDB Embedded

这些数据库在简单应用中完全可以替代 MySQL/PostgreSQL,资源占用降低 10 倍以上(如 SQLite 内存消耗 ≈ 5MB,而 MySQL 至少 100MB)。

http://www.lryc.cn/news/606277.html

相关文章:

  • RWA+AI算力賦能全球醫療数字產業升級高峰論壇——暨BitHive BTT 全球發佈會
  • C++面试5题--6day
  • wpf之ContentPresenter
  • PyTorch深度学习快速入门学习总结(三)
  • 【机器学习篇】01day.python机器学习篇Scikit-learn入门
  • 机器学习①【机器学习的定义以及核心思想、数据集:机器学习的“燃料”(组成和获取)】
  • 运行图生视频/文生视频(Wan2.X等)的显卡配置总结
  • 基于deepseek的文本解析 - 超长文本的md结构化
  • CNN卷积神经网络之LeNet和AlexNet经典网络模型(三)
  • 深入解析LLM层归一化:稳定训练的关键
  • 模型优化——在MacOS 上使用 Python 脚本批量大幅度精简 GLB 模型(通过 Blender 处理)
  • 基于PyTorch利用CNN实现MNIST的手写数字识别
  • 【源力觉醒 创作者计划】对比与实践:基于文心大模型 4.5 的 Ollama+CherryStudio 知识库搭建教程
  • 如何系统性了解程序
  • 【Java安全】CC1链
  • <RT1176系列13>LWIP Ping功能入门级应用和基础API解析
  • MySQL 8.0 OCP 1Z0-908 题目解析(41)
  • python制作的软件工具安装包
  • XL2422 无线收发芯片,可用于遥控玩具和智能家居等应用领域
  • 5G-A技术浪潮勾勒通信产业新局,微美全息加快以“5.5G+ AI”新势能深化场景应用
  • 贝锐蒲公英X4 Pro 5G新品路由器:异地组网+8网口+双频WiFi全都有
  • 5G毫米波射频前端设计:从GaN功放到混合信号集成方案
  • arm架构系统打包qt程序--麒麟操作系统为例
  • [GESP202506 五级] 奖品兑换
  • Python列表完全指南:从基础到实战(2025版)
  • 八股训练--Spring
  • C#反射的概念与实战
  • 网络编程-IP
  • TCP窗口缩放配置在云服务器高延迟网络中的参数调整测试
  • Android端RTMP低延迟播放器在工业与智能场景下的架构与落地