【MySQL篇】从零开始:安装与基础概念

张开发
2026/4/8 0:52:17 15 分钟阅读

分享文章

【MySQL篇】从零开始:安装与基础概念
文章目录MySQL 从零开始安装与基础概念一、前言为什么需要数据库二、文件存储的缺陷2.1 文件存储的四大问题1. 安全性问题2. 查询与管理不便3. 海量数据存储4. 程序控制困难三、什么是数据库3.1 数据库的三个关键特性3.2 数据库的存储介质四、主流数据库对比4.1 主要数据库产品4.2 为什么选择 MySQL五、Ubuntu 22.04 安装 MySQL5.1 检查系统环境5.2 更新包管理器5.3 检查是否有旧版本 MySQL5.4 安装 MySQL Server5.5 验证安装5.6 启动 MySQL 服务5.7 设置开机自启六、首次登录 MySQL6.1 第一次连接6.2 检查当前用户6.3 设置 root 密码可选6.4 退出 MySQL七、MySQL 连接命令详解7.1 完整连接语法7.2 常见连接示例八、数据库、表与服务器的关系8.1 三层架构8.2 快速上手示例九、MySQL 架构简述9.1 逻辑架构9.2 跨平台兼容性十、SQL 语言分类10.1 SQL 的四大分类1. DDL数据定义语言2. DML数据操纵语言3. DQL数据查询语言4. DCL数据控制语言10.2 SQL 分类在实际开发中的应用十一、存储引擎11.1 什么是存储引擎11.2 查看可用的存储引擎11.3 主流存储引擎对比11.4 InnoDB vs MyISAM 详细对比InnoDB推荐MyISAMMEMORY11.5 查看表使用的存储引擎11.6 修改存储引擎十二、MySQL 配置文件详解12.1 配置文件位置12.2 查看当前配置12.3 常见配置项12.4 修改配置文件十三、总结与下一步MySQL 从零开始安装与基础概念一、前言为什么需要数据库核心问题程序如何存储和管理数据思考用文件存储数据不就行了吗为什么还要数据库数据库和数据库管理系统有什么区别MySQL 在众多数据库中有什么特点二、文件存储的缺陷在深入数据库之前先理解为什么需要它。用文件保存数据看似简单但存在几个根本性问题。2.1 文件存储的四大问题1. 安全性问题文件存储在操作系统中没有访问控制机制。任何有文件访问权限的程序或用户都能随意读取、修改甚至删除数据。如果多个程序同时访问同一个文件无法保证数据的一致性。举例来说两个程序同时修改一个文件中的账户余额可能导致数据混乱。2. 查询与管理不便用文件存储数据时要查找特定内容需要遍历整个文件。如果要统计、排序或关联多个文件的数据工作量极大。比如从 100 万条用户记录中找出某个城市的用户用文件处理会非常低效。3. 海量数据存储文件的组织方式不适合存储大规模数据。当数据量超过内存大小时程序的运行效率会急剧下降。文件系统也没有为大数据存储进行优化。4. 程序控制困难用文件存储数据时程序需要自己处理数据的读写、校验、备份等所有逻辑。这大大增加了开发难度和维护成本。如果要实现事务控制确保一组操作要么全部成功要么全部失败文件方式无法支持。三、什么是数据库为了解决文件存储的这些问题专家们设计了数据库。数据库是一个有组织、可控制的数据集合它提供了统一的接口来安全地存储、检索和管理数据。3.1 数据库的三个关键特性特性说明安全性通过用户权限控制只有授权用户才能访问数据高效查询支持 SQL 语言快速查询和统计数据海量存储能存储 TB 级甚至更大规模的数据并保持高效访问3.2 数据库的存储介质数据库的数据最终还是存储在物理介质上主要有两种磁盘存储大容量、低成本、持久化但速度相对较慢。内存存储速度快但容量有限断电数据丢失。实际应用中数据库通常采用磁盘 内存的混合方式热数据存在内存中以提高访问速度冷数据存在磁盘上以节省成本。四、主流数据库对比4.1 主要数据库产品数据库厂商应用场景特点MySQL甲骨文中小型项目、电商、论坛开源、高并发、易上手不适合复杂业务逻辑Oracle甲骨文大型项目功能强大、稳定性高、学习成本大、价格昂贵SQL Server微软企业应用、.NET 项目Windows 系统优化、与微软技术栈兼容PostgreSQL开源社区学术研究、高可靠应用功能完整、完全免费、并发性能好SQLite开源嵌入式应用、手机 App轻量级、无需服务器、占用资源少4.2 为什么选择 MySQL在这个教程中我们学习 MySQL 的原因是世界最流行全球超过 50% 的网站使用 MySQL包括 Facebook、Twitter、YouTube 等。入门友好相比 Oracle 的复杂性MySQL 学习曲线平缓适合初学者。高并发性能特别适合 Web 应用能处理大量并发请求。校招必考几乎所有 Java、后端开发的笔试面试都会考 MySQL 基础。开源免费无需付费源代码公开社区活跃。五、Ubuntu 22.04 安装 MySQL5.1 检查系统环境首先确认你的 Ubuntu 版本cat/etc/os-release输出应该包含Ubuntu 22.04 LTS。5.2 更新包管理器在安装任何软件前先更新系统包列表sudoaptupdate5.3 检查是否有旧版本 MySQL如果之前安装过 MySQL 或 MariaDB需要先清理# 检查是否有 MySQL 进程运行psaux|grepmysql# 如果有停止服务sudosystemctl stop mysql# 卸载旧版本sudoaptremove mysql-server mysql-client mysql-common-y5.4 安装 MySQL Server在 Ubuntu 22.04 上直接使用官方仓库安装 MySQL 8.0sudoaptinstallmysql-server-y等待安装完成。Ubuntu 官方仓库中的 MySQL 已经是最新的 8.0 版本比 CentOS 中的 5.7 更稳定。5.5 验证安装检查 MySQL 是否正确安装mysql--version输出示例mysql Ver8.0.45-0ubuntu0.22.04.1forLinux on x86_64((Ubuntu))5.6 启动 MySQL 服务sudosystemctl start mysql检查服务状态sudosystemctl status mysql输出应该显示active (running)。5.7 设置开机自启这样每次重启系统时 MySQL 会自动启动sudosystemctlenablemysql六、首次登录 MySQL6.1 第一次连接在 Ubuntu 22.04 中MySQL 8.0 的 root 用户初始状态是没有密码的。直接登录sudomysql-uroot如果输出以下类似内容说明登录成功Welcome to the MySQL monitor. Commands end with;or\g. Your MySQL connectionidis8Server version:8.0.45-0ubuntu0.22.04.1(Ubuntu)Copyright(c)2000,2026, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Typehelp;or\hforhelp. Type\ctoclearthe current input statement. mysql6.2 检查当前用户在 MySQL 命令行中输入SELECTuser,hostFROMmysql.user;这会显示数据库中所有的用户及其可以连接的主机。6.3 设置 root 密码可选虽然初期学习不需要密码但为了安全起见建议设置一个ALTERUSERrootlocalhostIDENTIFIEDBYyour_password;FLUSHPRIVILEGES;将your_password替换为你的密码。6.4 退出 MySQL输入exit或quit退出 MySQL 命令行exit;七、MySQL 连接命令详解7.1 完整连接语法mysql-hhost-Pport-uusername-p各参数说明参数说明默认值-h服务器地址127.0.0.1本地-P服务器端口3306-u用户名root-p密码后面接密码或交互输入无7.2 常见连接示例本地连接使用默认值mysql-uroot-p输入密码后按回车。指定主机和端口mysql-h10.2.0.12-P3306-uroot-p不提示输入密码直接写在命令中不推荐用于生产环境mysql-uroot-pYourPassword注意-p后面直接跟密码中间没有空格。八、数据库、表与服务器的关系8.1 三层架构MySQL 采用三层架构来组织数据[MySQL Server 数据库服务器]↓[多个 Database数据库]↓[每个数据库包含多个 Table表]↓[每个表包含多行数据]数据库服务器安装在机器上的 MySQL 程序负责管理所有数据库。一个服务器可以管理多个数据库。数据库一个逻辑容器用来组织相关的表。通常为每个应用创建一个数据库。比如一个电商系统可能有shop_db数据库。表数据库中的基本存储单位以行和列的形式存储数据。类似于 Excel 表格。8.2 快速上手示例现在通过一个简单的例子体验数据库的基本操作。登录 MySQL 后输入以下命令创建数据库CREATEDATABASEhelloworld;切换到这个数据库USEhelloworld;创建表CREATETABLEstudent(idINT,nameVARCHAR(32),genderVARCHAR(2));插入数据INSERTINTOstudent(id,name,gender)VALUES(1,张三,男);INSERTINTOstudent(id,name,gender)VALUES(2,李四,女);INSERTINTOstudent(id,name,gender)VALUES(3,王五,男);查询数据SELECT*FROMstudent;输出结果--------------------|id|name|gender|--------------------|1|张三|男||2|李四|女||3|王五|男|--------------------九、MySQL 架构简述9.1 逻辑架构MySQL 采用C/S客户端-服务器架构。客户端如 mysql 命令行工具通过 TCP 连接向服务器发送 SQL 语句服务器接收、解析、执行后返回结果。[客户端 mysql CLI]↓(SQL 语句)[MySQL Server]↓(处理流程)1. 连接认证2. SQL 解析3. 优化执行4. 调用存储引擎 ↓(返回结果)[客户端展示结果]9.2 跨平台兼容性MySQL 的代码用 C 语言编写具有良好的可移植性支持几乎所有操作系统Linux / UnixWindowsmacOSSolaris无论在哪个平台上运行MySQL 的行为和命令语法都是一致的。十、SQL 语言分类10.1 SQL 的四大分类SQLStructured Query Language结构化查询语言是操作数据库的标准语言。根据功能不同SQL 分为四大类1. DDL数据定义语言Data Definition Language用来定义和维护数据库对象的结构。命令功能CREATE创建数据库、表、索引等ALTER修改数据库、表的结构DROP删除数据库、表等对象TRUNCATE清空表中数据保留表结构示例CREATETABLEusers(idINT,nameVARCHAR(50));ALTERTABLEusersADDageINT;DROPTABLEusers;2. DML数据操纵语言Data Manipulation Language用来操作表中的数据。命令功能INSERT向表中插入新数据UPDATE修改表中的数据DELETE删除表中的数据示例INSERTINTOusers(id,name)VALUES(1,Alice);UPDATEusersSETnameBobWHEREid1;DELETEFROMusersWHEREid1;3. DQL数据查询语言Data Query Language用来查询数据。虽然严格来说 DQL 是 DML 的一部分但因为查询操作最常用通常单独列出。命令功能SELECT查询表中的数据示例SELECT*FROMusers;SELECTnameFROMusersWHEREid1;4. DCL数据控制语言Data Control Language用来控制用户权限和事务。命令功能GRANT授予用户权限REVOKE撤销用户权限COMMIT提交事务ROLLBACK回滚事务示例GRANTSELECTONdatabase.*TOuserlocalhost;REVOKESELECTONdatabase.*FROMuserlocalhost;COMMIT;ROLLBACK;10.2 SQL 分类在实际开发中的应用系统管理员主要使用 DDL 和 DCL创建数据库、管理用户权限。应用开发者主要使用 DML 和 DQL增删改查数据。数据库优化人员需要理解所有四类进行性能调优。十一、存储引擎11.1 什么是存储引擎存储引擎是 MySQL 的核心组件负责具体实现数据的存储方式、索引机制和查询性能。MySQL 采用插件式架构支持多种存储引擎用户可以根据应用场景选择合适的引擎。11.2 查看可用的存储引擎登录 MySQL 后运行SHOWENGINES;输出示例Ubuntu 22.04 MySQL 8.011.3 主流存储引擎对比特性InnoDBMyISAMMEMORY事务支持✅ 支持❌ 不支持❌ 不支持行级锁✅ 是❌ 表级锁❌ 表级锁崩溃恢复✅ 好❌ 差❌ 数据丢失外键支持✅ 支持❌ 不支持❌ 不支持存储位置磁盘磁盘内存查询速度较快快无事务开销极快使用场景大多数应用读多写少临时表、缓存11.4 InnoDB vs MyISAM 详细对比InnoDB推荐特点支持事务确保数据的一致性和完整性。行级锁多个用户可以同时修改不同行的数据并发性强。自动崩溃恢复服务器意外宕机时能恢复数据。支持外键约束适合复杂的数据关系。应用场景绝大多数生产环境应用。需要数据可靠性的应用。高并发场景。MyISAM特点不支持事务性能比 InnoDB 略快。表级锁一个用户写入时其他用户必须等待。适合读多写少的场景。不支持外键。应用场景仅查询的表如日志表。旧版本遗留系统。MEMORY特点数据存储在内存中速度最快。数据库关闭或系统重启时数据丢失。表的大小受内存限制。应用场景临时数据表。会话数据。高速缓存。11.5 查看表使用的存储引擎SHOWCREATETABLEtable_name;或者SHOWTABLESTATUSLIKEtable_name\G11.6 修改存储引擎ALTERTABLEtable_nameENGINEInnoDB;从 MySQL 5.5.5 开始InnoDB 成为默认存储引擎新建表会自动使用 InnoDB。十二、MySQL 配置文件详解12.1 配置文件位置在 Ubuntu 22.04 中MySQL 的主配置文件通常是/etc/mysql/mysql.conf.d/mysqld.cnf你也可以查看所有配置文件sudols-la/etc/mysql/12.2 查看当前配置sudocat/etc/mysql/mysql.conf.d/mysqld.cnf12.3 常见配置项配置项说明示例值portMySQL 服务端口3306datadir数据存储目录/var/lib/mysqlsocketUnix socket 文件位置/var/run/mysqld/mysqld.sockcharacter_set_server默认字符集utf8mb4default_storage_engine默认存储引擎InnoDBmax_connections最大连接数15112.4 修改配置文件如需修改配置使用编辑器打开配置文件sudovim/etc/mysql/mysql.conf.d/mysqld.cnf修改后保存重启 MySQL 服务生效sudosystemctl restart mysql十三、总结与下一步现在你已经掌握了✅环境搭建在 Ubuntu 22.04 上安装并启动 MySQL 8.0✅基础概念理解数据库、表、存储引擎的含义✅SQL 语言了解 DDL、DML、DQL、DCL 的区别✅实际操作能创建数据库、表插入和查询数据下一篇我们将深入学习如何操作

更多文章