如何快速搭建mysql开发环境_mysql环境准备指南

来源:这里教程网 时间:2026-02-28 20:50:32 作者:

用 Docker 三行命令启动 MySQL 5.7 或 8.0

本地开发最省事的方式就是跳过安装、配置、权限初始化这些步骤,直接拉一个官方镜像跑起来。MySQL 官方镜像在 Docker Hub 上维护良好,

mysql:5.7
mysql:8.0
都能一键启动,连
my.cnf
都不用碰。

常见错误是没指定

MYSQL_ROOT_PASSWORD
,导致容器启动后无法连接;或者映射了空目录但权限不对,容器直接退出。

启动 MySQL 5.7(默认端口 3306,数据卷持久化到当前目录
./mysql-data
):
docker run -d \
  --name mysql-dev \
  -p 3306:3306 \
  -v $(pwd)/mysql-data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=dev123 \
  -e MYSQL_DATABASE=testdb \
  -e MYSQL_USER=devuser \
  -e MYSQL_PASSWORD=devpass \
  mysql:5.7
如果要用 MySQL 8.0,把镜像名换成
mysql:8.0
即可,但注意客户端连接时可能报
Authentication plugin 'caching_sha2_password' cannot be loaded
—— 这是因为 8.0 默认认证方式变了,临时解决可在连接时加参数
--default-auth=mysql_native_password
,或启动时加
-e MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password
确认是否跑起来:
docker logs mysql-dev
看有没有
mysqld: ready for connections
;再试连:
mysql -h 127.0.0.1 -P 3306 -u root -pdev123

Mac 上用 Homebrew 装 MySQL 并绕过 launchd 自启陷阱

Homebrew 安装快,但默认会用

brew services start mysql
注册为系统服务,这在开发中反而容易冲突:比如你改了
my.cnf
,重启服务不生效,因为实际读的是 launchd 加载的配置路径(
/usr/local/etc/my.cnf
),不是你手改的那个。

更可控的做法是手动管理进程,避免和系统服务混在一起。

安装:
brew install mysql
(别用
brew install mysql@5.7
,它已归档,新版 Homebrew 只维护
mysql
主干)
初始化数据目录:
mysql_install_db --basedir=$(brew --prefix mysql) --datadir=/usr/local/var/mysql
手动启动(不走 launchd):
mysqld --defaults-file=/usr/local/etc/my.cnf --user=$(whoami)
;这样所有日志、错误、配置都按你预期走
首次登录后立刻改 root 密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'dev123'; FLUSH PRIVILEGES;
,否则某些 GUI 工具(如 TablePlus)连不上

Windows 下免安装版 MySQL 的 PATH 和服务注册要点

MySQL 官网提供 ZIP 包(

mysql-8.0.xx-winx64.zip
),解压即用,但 Windows 用户常卡在两处:命令行找不到
mysql
,或注册成服务后启动失败。

根本原因是 ZIP 版不自动配置环境变量,也不帮你生成服务项;而服务注册时若没指定

--defaults-file
,它会去 C:\my.ini 找配置,但这个文件通常不存在。

bin/
目录加进系统 PATH(比如
C:\mysql\bin
),之后才能在任意位置敲
mysql -u root -p
用管理员权限打开 CMD,执行注册服务命令(关键要带
--defaults-file
):
mysqld --install MySQLDev --defaults-file="C:\mysql\my.ini"
其中
C:\mysql\my.ini
是你手动创建的配置文件,至少包含:
[mysqld]
port=3307
datadir=C:/mysql/data
default_authentication_plugin=mysql_native_password
启动服务:
net start MySQLDev
;如果失败,看事件查看器里的错误日志,90% 是
datadir
权限不对或路径里有中文/空格

验证环境是否真正可用:不只是能连上

很多开发者看到

mysql>
提示符就以为搞定了,结果一建表就报错,比如
ERROR 1036 (HY000): Table is read only
ERROR 1118 (42000): Row size too large
—— 这说明配置没生效,或引擎、字符集、SQL mode 不匹配开发需求。

建议用这几条语句快速扫一遍关键状态:

查当前模式:
SELECT @@sql_mode;
,开发环境建议去掉
STRICT_TRANS_TABLES
,否则 INSERT 缺字段直接报错
查默认引擎:
SELECT @@default_storage_engine;
,确保是
InnoDB
(不是
MyISAM
查字符集:
SHOW VARIABLES LIKE 'character_set%';
,重点看
character_set_server
collation_server
,推荐设为
utf8mb4
+
utf8mb4_0900_ai_ci
(MySQL 8.0)或
utf8mb4_unicode_ci
(5.7)
查最大连接数:
SHOW VARIABLES LIKE 'max_connections';
,本地开发设成 200 就够,别用默认 151

这些值一旦写死在配置文件里,就必须重启 MySQL 才生效;Docker 启动时用

-e
设的环境变量只影响初始用户和库,不影响运行时全局变量。

相关推荐