MySQL 安装与配置教程:从零到上手

1. 引言

MySQL 是目前最流行的开源关系型数据库之一,广泛应用于 Web 开发、数据分析、企业应用等场景。无论是搭建个人博客、开发企业系统,还是学习数据库原理,MySQL 都是绕不开的基础技能。

本教程将从零开始,带你完成 MySQL 的下载、安装、基础配置与验证,覆盖 Windows 和 Linux 两大主流平台,并补充常见问题的排查思路。即使你从未接触过数据库,也能跟着一步步跑通。

2. 安装前的准备

在开始安装之前,建议先确认以下几点:

  • 操作系统:确认你的系统是 Windows、macOS 还是 Linux,不同平台的安装方式差异较大。
  • 硬件要求:MySQL 对硬件要求不高,2GB 内存、10GB 磁盘即可满足学习和中小型项目需求。
  • 权限准备 :Windows 下需要管理员权限,Linux 下建议使用 sudo 或 root 用户执行安装命令。
  • 端口占用:MySQL 默认监听 3306 端口,安装前可检查该端口是否被占用。

检查端口是否被占用的命令:

bash 复制代码
# Windows
netstat -ano | findstr 3306

# Linux / macOS
lsof -i :3306

如果 3306 端口已被占用,可以在后续配置中修改端口号。

3. Windows 平台安装

3.1 下载安装包

访问 MySQL 官方下载页面,或者通过网盘下载,如果闲麻烦可以直接下载安装包,傻瓜式安装。

百度网盘下载:https://pan.baidu.com/s/1-aw1Z-UQ3T4yEwHEnJHrgw?pwd=tkev

夸克网盘下载:https://pan.quark.cn/s/54c1daac1d55?pwd=i7Tp

选择与系统匹配的版本,例如 mysql-8.0.xx-winx64.zip。

3.2 解压与初始化

将压缩包解压到指定目录,例如 D:\mysql。解压后目录结构如下:

复制代码
D:\mysql
├── bin
├── docs
├── include
├── lib
└── share

接下来初始化数据目录。以管理员身份打开命令提示符,进入 bin 目录执行:

bash 复制代码
cd D:\mysql\bin
mysqld --initialize-insecure

--initialize-insecure 会生成一个无密码的 root 用户,方便首次登录后自行设置密码。如果希望生成随机密码,可使用 mysqld --initialize,密码会记录在数据目录的 *.err 日志文件中。

3.3 安装为 Windows 服务

为了方便启动和开机自启,将 MySQL 注册为 Windows 服务:

bash 复制代码
mysqld --install MySQL

启动服务:

bash 复制代码
net start MySQL

3.4 登录并设置密码

使用 root 用户登录(初始无密码):

bash 复制代码
mysql -u root

登录成功后,设置 root 密码:

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;

退出:

sql 复制代码
EXIT;

4. Linux 平台安装

Linux 下推荐使用系统包管理器安装,简单且便于维护。以下以 Ubuntu / Debian 和 CentOS / RHEL 为例。

4.1 Ubuntu / Debian

更新软件源并安装:

bash 复制代码
sudo apt update
sudo apt install mysql-server

安装完成后,服务会自动启动。检查状态:

bash 复制代码
sudo systemctl status mysql

4.2 CentOS / RHEL

bash 复制代码
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld

CentOS 7 及以上版本默认使用 MariaDB 作为替代,如需安装官方 MySQL,可先添加官方 YUM 源:

bash 复制代码
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum install mysql-community-server

4.3 安全初始化

Linux 安装完成后,建议运行安全初始化脚本:

bash 复制代码
sudo mysql_secure_installation

该脚本会引导你完成以下设置:

  • 设置 root 密码
  • 移除匿名用户
  • 禁止 root 远程登录
  • 删除测试数据库
  • 刷新权限表

5. 基础配置

5.1 配置文件位置

MySQL 的配置文件名为 my.cnf(Linux / macOS)或 my.ini(Windows),常见位置:

平台 路径
Windows D:\mysql\my.ini
Ubuntu / Debian /etc/mysql/mysql.conf.d/mysqld.cnf
CentOS /etc/my.cnf

5.2 常用配置项

以下是一份常用的基础配置示例:

ini 复制代码
[mysqld]
# 监听端口
port = 3306

# 数据目录
datadir = /var/lib/mysql

# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 最大连接数
max_connections = 200

# 默认存储引擎
default-storage-engine = InnoDB

# 时区
default-time-zone = '+08:00'

修改配置后,需要重启 MySQL 服务才能生效:

bash 复制代码
# Windows
net stop MySQL
net start MySQL

# Linux
sudo systemctl restart mysql

5.3 字符集说明

推荐使用 utf8mb4 字符集,它完整支持 Unicode,包括 emoji 表情和生僻字。utf8 只是 utf8mb4 的子集,无法存储四字节字符,新项目建议直接使用 utf8mb4。

6. 验证安装

安装配置完成后,通过以下步骤验证 MySQL 是否正常工作。

6.1 检查服务状态

bash 复制代码
# Windows
net start | findstr MySQL

# Linux
sudo systemctl status mysql

6.2 登录测试

bash 复制代码
mysql -u root -p

输入密码后,看到 mysql> 提示符即表示登录成功。

6.3 查看版本与基本操作

sql 复制代码
-- 查看版本
SELECT VERSION();

-- 查看当前用户
SELECT CURRENT_USER();

-- 查看所有数据库
SHOW DATABASES;

输出示例:

复制代码
+-----------+
| VERSION() |
+-----------+
| 8.0.36    |
+-----------+
1 row in set (0.00 sec)

7. 常见问题排查

7.1 无法启动服务

  • 检查数据目录是否已初始化,未初始化时执行 mysqld --initialize-insecure。
  • 查看错误日志,Windows 下位于数据目录的 *.err 文件,Linux 下可通过 journalctl -u mysql 查看。
  • 确认 3306 端口未被占用。

7.2 忘记 root 密码

以跳过权限表方式启动 MySQL:

bash 复制代码
# 先停止服务,再以跳过授权表方式启动
mysqld --skip-grant-tables

然后登录并重置密码:

sql 复制代码
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

重置后正常重启服务即可。

7.3 中文乱码

确认客户端、服务端、数据库三处字符集均为 utf8mb4:

sql 复制代码
SHOW VARIABLES LIKE 'character_set%';

如不一致,在配置文件中统一设置并重启服务。

8. 总结

本文从零开始,介绍了 MySQL 在 Windows 和 Linux 两大平台上的安装、初始化、基础配置与验证方法,并整理了常见问题的排查思路。核心要点如下:

  • Windows 推荐使用 ZIP 包 + 服务注册方式安装,Linux 推荐使用系统包管理器。
  • 安装后务必执行安全初始化,设置 root 密码并移除匿名用户。
  • 字符集统一使用 utf8mb4,避免中文和 emoji 乱码。
  • 修改配置文件后需重启服务才能生效。

MySQL 的安装只是第一步,后续建议继续学习用户与权限管理、SQL 基础、索引优化等内容,逐步构建完整的数据库知识体系。

相关推荐
小白男神5 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶5 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G5 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备5 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远5 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
kybs19915 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
2601_962218615 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
程序猿_极客5 天前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统
张洛闻Eren5 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安5 天前
MySQL-触发器
数据库·mysql