这次我们来看 MySQL 8 的安装和使用。对于开发者、数据分析师或者任何需要本地数据库环境的人来说,MySQL 8 是目前最主流的选择之一。它性能强、功能丰富,但很多人在初次安装配置时,容易被官网下载、环境变量、服务启动、密码设置和时区问题这几个环节卡住,导致“10分钟”变成“一上午”。
这篇文章的目标很直接:让你在10分钟内,从零开始,完成 MySQL 8 的下载、安装、配置,并成功连接使用。我们会重点关注 Windows 和 macOS 两大主流桌面系统的安装流程,并解决安装后最常见的几个连接和配置问题。无论你是为了学习 Java Web 开发、搭建个人项目,还是进行数据分析,一个稳定可用的本地 MySQL 环境都是第一步。
1. 核心能力速览
在动手之前,先快速了解 MySQL 8 的核心特性和本次部署的关键信息。
| 能力项 | 说明 |
|---|---|
| 项目类型 | 开源关系型数据库管理系统 (RDBMS) |
| 最新稳定版 | MySQL 8.0.x (建议安装最新稳定版,如 8.0.37) |
| 核心功能 | 数据存储、SQL查询、事务处理、用户权限管理、主从复制等 |
| 系统支持 | Windows, macOS, Linux 等主流操作系统 |
| 安装方式 | 官方安装包(MSI/DMG)、压缩包、Docker 容器 |
| 内存需求 | 基础运行约 200MB+,根据数据量和连接数增长 |
| 管理工具 | 命令行mysql,图形化工具如 MySQL Workbench, Navicat, DBeaver |
| 本文演示 | Windows 10/11 及 macOS 通过官方安装包进行安装和基础配置 |
2. 适用场景与使用边界
MySQL 8 是一个通用型数据库,但在开始前,需要明确它最适合什么,以及需要注意什么。
适合场景:
- 本地学习与开发:学习 SQL 语法、进行 Java/Python/PHP 等后端开发练习、搭建个人博客或小型项目。
- 原型验证与测试:在将应用部署到生产环境前,在本地进行功能测试和数据模型验证。
- 数据分析与处理:本地处理中小规模数据集,进行数据清洗、转换和查询分析。
- 微服务或组件依赖:某些需要数据库支撑的软件(如某些 CMS、论坛系统)可以在本地快速搭建环境。
使用边界与注意事项:
- 非生产环境:本文的安装配置主要面向本地开发测试环境。生产环境的部署涉及高可用、备份、监控和安全加固,复杂得多。
- 数据安全:安装后务必设置强密码,并理解 root 用户的权限。不要在公网服务器上使用弱密码或默认配置。
- 版本兼容性:MySQL 8.0 与旧版(如 5.7)在默认身份验证插件、字符集等方面有差异,老项目迁移时需注意。
- 资源占用:虽然轻量,但长期运行的服务仍需内存和磁盘空间。如果只是偶尔用,可以考虑用 Docker 临时启动。
3. 环境准备与前置条件
安装前,请确保你的系统满足基本条件,并做好准备工作。
1. 操作系统确认:
- Windows: Windows 10 或 Windows 11 系统。确保有管理员权限。
- macOS: macOS 10.14 或更高版本。同样需要管理员权限。
2. 磁盘空间:
- 安装程序本身约 500MB - 1GB。
- 建议预留至少 2GB 的可用空间用于数据库文件和日志。
3. 网络连接:
- 需要网络以下载 MySQL 安装包。如果网络环境特殊,可提前下载好安装包。
4. 端口确认:
- MySQL 默认使用3306端口。安装前,检查该端口是否被占用。
- Windows: 打开命令提示符或 PowerShell,运行
netstat -ano | findstr :3306。 - macOS/Linux: 打开终端,运行
lsof -i :3306。
- Windows: 打开命令提示符或 PowerShell,运行
- 如果端口被占用(常见于已安装的 MySQL 或其他服务),安装时可以选择其他端口,或先停止占用端口的服务。
5. 卸载旧版本(如有):
- 如果系统里存在旧版本的 MySQL(如 5.7),建议先彻底卸载,包括删除数据目录,以避免冲突。卸载过程请参考官方文档。
4. Windows 系统安装 MySQL 8
我们首先演示在 Windows 系统上通过官方安装包进行安装,这是最直观的方式。
4.1 下载安装包
- 访问 MySQL 官方网站的下载页面:
https://dev.mysql.com/downloads/mysql/。 - 在 “MySQL Community (GPL) Downloads” 部分,点击MySQL Community Server。
- 在 “Select Operating System” 下拉菜单中,选择Microsoft Windows。
- 你会看到两个主要的安装包选项:
- MySQL Installer for Windows (大小约 400MB+): 这是一个图形化安装工具,可以安装 MySQL Server、Workbench、Shell 等多种产品。推荐新手使用。
- Windows (x86, 64-bit), ZIP Archive: 这是压缩包,需要手动配置,更灵活但步骤稍多。
- 本文以MySQL Installer为例。点击对应的 “Download” 按钮。通常网站会提示你登录或注册,你可以直接点击下方的 “No thanks, just start my download.” 链接开始下载。
4.2 运行安装向导
- 双击下载好的
mysql-installer-web-community-*.msi文件。 - 如果系统弹出用户账户控制(UAC)提示,点击“是”。
- 安装向导启动后,在 “Choosing a Setup Type” 页面,选择Developer Default。这个选项会安装 MySQL Server 和常用的客户端工具(如 MySQL Workbench)。
- 点击 “Next”,安装程序会检查所需依赖。如果有缺失的组件(如 .NET Framework, Python),它会提示你安装,按照提示操作即可。
- 在 “Installation” 页面,点击 “Execute” 开始安装。这个过程会下载并安装所选组件,需要一些时间,请保持网络畅通。
4.3 产品配置
安装完成后,会自动进入配置向导。
- High Availability: 选择Standalone MySQL Server / Classic MySQL Replication。我们只需要单机版。
- Type and Networking:
- Config Type: 选择Development Computer。
- Connectivity: 确保TCP/IP被选中,端口是3306。可以勾选 “Open Windows Firewall ports for network access” 以便其他机器连接(仅测试环境建议)。
- Authentication Method:重要!这里选择Use Strong Password Encryption for Authentication (RECOMMENDED)。这是 MySQL 8 默认的
caching_sha2_password插件,安全性更高,大多数现代客户端都支持。 - Accounts and Roles:
- 这是设置 root 用户密码的地方。输入一个你记得住的强密码,并牢记它。例如:
MyStrongPass123!。 - 可以点击 “Add User” 创建额外用户,这里我们先跳过。
- 这是设置 root 用户密码的地方。输入一个你记得住的强密码,并牢记它。例如:
- Windows Service:
- 确保Configure MySQL Server as a Windows Service被选中。
- Windows Service Name 保持默认
MySQL80。 - 建议选择Start the MySQL Server at System Startup,这样开机后服务会自动运行。
- Apply Configuration: 点击 “Execute”,让安装程序应用上述所有配置。完成后点击 “Finish”。
4.4 验证安装
- 打开 Windows 搜索,输入 “服务”,打开“服务”应用。
- 在服务列表中找到
MySQL80(或你自定义的服务名),查看其状态是否为“正在运行”。 - 打开命令提示符(CMD)或 PowerShell。
- 输入以下命令尝试连接数据库:
mysql -u root -p - 按回车后,会提示你输入密码。输入刚才设置的 root 密码。
- 如果成功,你会看到 MySQL 的命令行提示符
mysql>。输入SELECT VERSION();并回车,如果显示 MySQL 8.0.x 的版本号,则说明安装成功。mysql> SELECT VERSION(); +-----------+ | VERSION() | +-----------+ | 8.0.37 | +-----------+ 1 row in set (0.00 sec) - 输入
exit;退出。
5. macOS 系统安装 MySQL 8
在 macOS 上,我们通常使用官方 DMG 安装包或 Homebrew。这里介绍 DMG 安装包方式。
5.1 下载安装包
- 同样访问
https://dev.mysql.com/downloads/mysql/。 - 在 “Select Operating System” 下拉菜单中,选择macOS。
- 你会看到适用于 Apple Silicon (ARM) 和 Intel 芯片的不同版本。根据你的 Mac 芯片类型选择正确的 DMG 文件下载。通常文件名会包含
arm64或x86_64。 - 点击 “Download” 按钮,并选择 “No thanks, just start my download.”。
5.2 安装与配置
- 双击下载好的
.dmg文件,会打开一个包含mysql-8.0.37-macos13-arm64.pkg(名称可能不同)的窗口。 - 双击这个
.pkg文件,启动安装程序。 - 跟随安装向导的提示进行操作,大部分步骤只需点击“继续”、“同意”、“安装”。
- 安装过程中会提示你输入 macOS 的管理员密码。
- 安装完成后,会弹出一个对话框,提示你root 用户的临时密码。务必立即复制或记下这个密码!这个密码是随机生成的,只会显示这一次。
- 关闭安装程序。
5.3 配置环境变量与启动服务
安装包通常会自动安装一个“MySQL”偏好设置面板,并尝试启动服务。但我们仍需配置命令行环境。
启动/停止服务:
- 打开“系统设置”,找到并打开“MySQL”面板。你可以在这里启动、停止 MySQL 服务,以及设置是否开机自启。
- 或者使用终端命令:
# 启动 MySQL 服务 sudo /usr/local/mysql/support-files/mysql.server start # 停止 MySQL 服务 sudo /usr/local/mysql/support-files/mysql.server stop # 查看状态 sudo /usr/local/mysql/support-files/mysql.server status
配置环境变量(方便在任意目录使用
mysql命令):- 打开终端。
- 根据你使用的 Shell(通常是 zsh),编辑对应的配置文件。
# 如果是 zsh (macOS Catalina 及以后默认) nano ~/.zshrc # 如果是 bash nano ~/.bash_profile - 在文件末尾添加以下行(请根据你的实际安装路径调整,通常是
/usr/local/mysql):export PATH=$PATH:/usr/local/mysql/bin - 按
Ctrl + O保存,按Ctrl + X退出 nano。 - 让配置生效:
source ~/.zshrc # 或 source ~/.bash_profile
5.4 修改 root 密码并验证
由于安装时给的是随机密码,第一步是修改它。
- 使用临时密码登录:
输入之前记下的临时密码。mysql -u root -p - 登录成功后,立即修改密码:
例如:ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewStrongPass456!'; - 执行刷新权限命令:
FLUSH PRIVILEGES; - 验证安装和连接:
看到版本号即表示成功。输入SELECT VERSION();exit;退出。
6. 基础使用与核心操作
安装完成后,我们来快速过一遍最核心的数据库操作。这些命令在 Windows 和 macOS 的 MySQL 命令行客户端中通用。
6.1 数据库操作
-- 1. 显示所有数据库 SHOW DATABASES; -- 2. 创建一个新的数据库,并指定字符集为 utf8mb4(支持存储Emoji等字符) CREATE DATABASE mytestdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 3. 使用(切换)到某个数据库 USE mytestdb; -- 4. 删除数据库(谨慎操作!) -- DROP DATABASE mytestdb;6.2 表操作
假设我们要创建一个用户表。
-- 在使用 `USE mytestdb;` 后,执行以下命令 -- 1. 创建表 CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, -- 自增主键 username VARCHAR(50) NOT NULL UNIQUE, -- 用户名,不能为空且唯一 email VARCHAR(100) NOT NULL, age INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 创建时间,默认为当前时间 ); -- 2. 显示当前数据库中的所有表 SHOW TABLES; -- 3. 查看表的结构 DESCRIBE users; -- 或 SHOW CREATE TABLE users;6.3 数据操作(增删改查 - CRUD)
-- 1. 插入数据 (Create) INSERT INTO users (username, email, age) VALUES ('alice', 'alice@example.com', 25); INSERT INTO users (username, email, age) VALUES ('bob', 'bob@example.org', 30); -- 2. 查询数据 (Read) -- 查询所有列 SELECT * FROM users; -- 查询特定列 SELECT username, email FROM users; -- 带条件的查询 SELECT * FROM users WHERE age > 26; -- 排序 SELECT * FROM users ORDER BY created_at DESC; -- 限制结果数量 SELECT * FROM users LIMIT 1; -- 3. 更新数据 (Update) UPDATE users SET age = 26 WHERE username = 'alice'; -- 4. 删除数据 (Delete) DELETE FROM users WHERE username = 'bob'; -- 清空表(删除所有数据,但保留表结构) -- TRUNCATE TABLE users;7. 使用图形化工具连接(MySQL Workbench)
命令行适合快速操作,但图形化工具更直观。MySQL 官方提供的 Workbench 是一个强大的选择。
- 打开/安装 Workbench:
- 如果在 Windows 上使用了
Developer Default安装类型,Workbench 应该已经安装好了。 - 也可以在官网单独下载安装。
- 如果在 Windows 上使用了
- 创建新连接:
- 打开 MySQL Workbench。
- 点击 “+” 图标,添加一个新的连接。
- 配置连接参数:
- Connection Name: 任意,如
My Local MySQL。 - Hostname:
127.0.0.1或localhost。 - Port:
3306。 - Username:
root。 - Password: 点击 “Store in Vault…”,输入你的 root 密码并保存。
- Connection Name: 任意,如
- 测试连接:
- 点击 “Test Connection”。如果出现 “Successfully made the MySQL connection”,说明配置正确。
- 连接并使用:
- 双击新创建的连接,进入主界面。
- 在左侧 “Navigator” 的 “Schemas” 选项卡中,你可以看到所有数据库。
- 右键点击数据库或表,可以进行创建、查询、修改等所有操作。
- 在中间的查询编辑器里,你可以编写 SQL 语句,点击闪电图标执行。
8. 必须解决的常见配置问题
安装后,以下几个问题几乎一定会遇到,提前解决可以避免后续开发中的坑。
8.1 时区问题
使用 JDBC 或其他编程语言连接时,如果遇到时间差 8 小时的问题,需要设置时区。
解决方案:
- 临时设置(每次连接):在连接字符串或配置中指定时区。
- JDBC URL 示例:
jdbc:mysql://localhost:3306/mytestdb?serverTimezone=Asia/Shanghai
- JDBC URL 示例:
- 永久设置(修改MySQL配置):
- 找到 MySQL 的配置文件
my.ini(Windows) 或my.cnf(macOS/Linux)。- Windows: 通常在
C:\ProgramData\MySQL\MySQL Server 8.0\下。 - macOS: 可能在
/usr/local/mysql-8.0.37-macos13-arm64/support-files/下有模板,或已存在于/etc/my.cnf或/etc/mysql/my.cnf。
- Windows: 通常在
- 在
[mysqld]部分添加一行:default-time-zone = '+08:00' - 保存文件,并重启 MySQL 服务。
- 找到 MySQL 的配置文件
- 通过SQL命令设置(无需重启):
SET GLOBAL time_zone = '+08:00'; SET time_zone = '+08:00'; -- 验证 SELECT @@global.time_zone, @@session.time_zone;
8.2 身份验证插件问题
如果你用旧的客户端或驱动连接 MySQL 8,可能会报错caching_sha2_password相关错误,因为 MySQL 8 默认使用了新的插件。
解决方案:
- 推荐:升级客户端/驱动。确保你的应用(如 Navicat、DBeaver、Python的
mysql-connector-python、Java的 Connector/J)版本支持caching_sha2_password。 - 修改用户插件(不推荐,降低安全性):如果必须使用旧客户端,可以修改 root 用户的认证插件为旧的
mysql_native_password。ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;
8.3 忘记 root 密码
这是一个常见问题,可以通过“跳过授权表”的方式重置。
重置步骤(Windows/macOS 思路类似):
- 停止 MySQL 服务。
- Windows: 在服务管理器中停止
MySQL80,或以管理员运行CMD:net stop MySQL80 - macOS:
sudo /usr/local/mysql/support-files/mysql.server stop
- Windows: 在服务管理器中停止
- 以安全模式(跳过权限检查)启动 MySQL。
- 打开命令行终端。
- Windows: 导航到 MySQL 的
bin目录,例如cd C:\Program Files\MySQL\MySQL Server 8.0\bin,然后执行:mysqld --console --skip-grant-tables --shared-memory - macOS: 执行:
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables - 此时终端会挂起,表示服务已以特殊模式启动。不要关闭这个窗口。
- 打开另一个新的命令行终端,无密码登录 MySQL。
mysql -u root - 在 MySQL 命令行中,清空 root 密码并刷新权限。
-- 先切换到 mysql 系统数据库 USE mysql; -- 更新 root 用户的密码为空(注意,MySQL 8.0 后密码存储在 authentication_string 字段) UPDATE user SET authentication_string='' WHERE user='root'; -- 刷新权限 FLUSH PRIVILEGES; -- 退出 exit; - 关闭第一步中启动的 MySQL 服务进程。回到第一个终端窗口,按
Ctrl + C终止进程。 - 正常启动 MySQL 服务。
- 再次登录 MySQL,此时无需密码:
mysql -u root - 重新设置一个强密码。
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新强密码'; FLUSH PRIVILEGES; exit; - 完成。之后使用新密码登录。
9. 进阶配置与优化建议
当你的项目开始变得复杂,或者需要更好的性能时,可以考虑以下调整。
9.1 配置文件 (my.ini/my.cnf) 基础调整
找到配置文件后,你可以调整以下常用参数(在[mysqld]部分):
[mysqld] # 设置默认字符集,避免中文乱码 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci # 设置最大连接数,默认151,可根据需要调高 max_connections=200 # 设置查询缓存(注意:MySQL 8.0 已移除查询缓存,此配置无效) # query_cache_type=0 # InnoDB 缓冲池大小,对于开发机,可以设置为物理内存的 50%-70% # 例如,8GB内存的机器可以设置为 4G innodb_buffer_pool_size=4G # 表名大小写敏感。0-敏感(Unix默认),1-不敏感(Windows默认),2-按文件系统 # 建议开发环境统一设置为2,避免跨平台问题 lower_case_table_names=2注意:修改lower_case_table_names必须在初始化数据库之前。如果数据库已存在数据,修改此参数可能导致问题。修改任何配置后,都需要重启 MySQL 服务生效。
9.2 创建专用应用用户
永远不要在生产环境或重要项目中直接使用 root 用户。为每个应用创建独立的数据库用户,并授予最小必要权限。
-- 1. 创建新用户,并设置密码 CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'AppUserPass123!'; -- 2. 授予用户对特定数据库的所有权限 GRANT ALL PRIVILEGES ON mytestdb.* TO 'myapp_user'@'localhost'; -- 3. 刷新权限 FLUSH PRIVILEGES; -- 4. 此后,你的应用就可以使用 myapp_user 这个账号连接 mytestdb 数据库了。9.3 定期备份数据
对于重要数据,备份是必须的。最简单的备份方式是使用mysqldump工具。
# 备份整个数据库到文件 mysqldump -u root -p mytestdb > mytestdb_backup_$(date +%Y%m%d).sql # 备份单个表 mysqldump -u root -p mytestdb users > users_backup.sql # 恢复数据库 # 首先,在MySQL中创建一个空数据库(如果需要) # CREATE DATABASE mytestdb_restore; # 然后,使用mysql命令恢复 mysql -u root -p mytestdb_restore < mytestdb_backup_20240527.sql10. 总结与下一步
通过以上步骤,你应该已经成功在 Windows 或 macOS 上安装并运行了 MySQL 8,掌握了通过命令行和图形化工具进行基本操作的方法,并解决了时区、身份验证等初期常见问题。
最值得尝试的下一步:
- 连接你的第一个项目:尝试用 Python (
pymysql或mysql-connector-python)、Java (JDBC)、Node.js (mysql2) 或 PHP (PDO) 写一段简单的代码,连接你刚创建的数据库,执行一次插入和查询操作。这是从“安装”到“使用”的关键一步。 - 探索图形化工具:花点时间熟悉 MySQL Workbench 的“数据建模”、“性能仪表板”、“用户管理”等功能,它们能极大提升效率。
- 理解事务:在命令行中尝试
BEGIN;、COMMIT;和ROLLBACK;,理解数据库事务的基本概念。
最容易踩的坑:
- 安装后忘记 root 密码:务必在安装完成后立即用
mysql -u root -p测试登录,并考虑将密码保存在安全的地方。 - 时区不一致:在开始任何涉及时间字段的开发前,先按本文方法统一时区设置。
- 端口冲突:如果 3306 端口被占用,安装或启动会失败。学会用
netstat或lsof命令检查端口。
MySQL 8 的功能远不止于此,包括窗口函数、通用表表达式 (CTE)、JSON 支持、性能模式等高级特性,都值得在后续深入探索。但对于本地开发和测试环境,你现在已经拥有了一个完全可用的起点。建议将本文中关于配置修改和问题排查的部分收藏,在遇到问题时快速回顾。