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 基础、索引优化等内容,逐步构建完整的数据库知识体系。

相关推荐
yi.Ist4 小时前
数据定义语言-DDL操作
数据库·学习·mysql·oracle·大海豚
阿kun要赚马内5 小时前
MySQL 索引基础
后端·mysql
2601_963282776 小时前
工程项目、政企采购为什么优先选择对讲机批量采购?
数据库
Doraemomo6 小时前
SQLite数据库
数据库·sqlite
2601_962177136 小时前
【MySQL篇】聚合查询,联合查询
android·java·mysql
云贝教育-郑老师6 小时前
MySQL 的“黑匣子“:Performance Schema 把数据库内部变成一张可查的表
数据库·mysql
这个DBA有点耶8 小时前
同城双活落地的三座山:网络延迟、脑裂预防、反向同步
数据库·架构·dba
青春之我_XP8 小时前
MySQL 常用日期函数 实战指南
数据库·sql·mysql·数据分析·数据库开发·日期函数
Nturmoils8 小时前
sys_dump 备了库,角色和权限别漏在外面
数据库