如何搭建mysql学习环境_mysql新手环境配置

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

用 Docker 一键跑起 MySQL 5.7 或 8.0

对新手来说,装原生 MySQL 容易卡在服务启动、权限配置、编码乱码这些环节。Docker 是最省事的选择——不用改系统环境变量,不污染本地端口(默认只开

3306
),镜像版本明确,删了重来也只要几秒。

实操建议:

先确认已安装
docker
docker-compose
(macOS / Windows 用户推荐用 Docker Desktop)
运行以下命令直接拉起 MySQL 8.0(带初始化数据库和用户):
docker run -d \
  --name mysql8 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root123 \
  -e MYSQL_DATABASE=testdb \
  -e MYSQL_USER=dev \
  -e MYSQL_PASSWORD=dev123 \
  -v $(pwd)/mysql-data:/var/lib/mysql \
  -d mysql:8.0
若想用更稳定的 MySQL 5.7(尤其配合旧教程或 PHP 项目),把镜像名换成
mysql:5.7
即可
$(pwd)/mysql-data
是本地持久化路径,第一次运行后会自动生成;别漏掉这个
-v
,否则容器重启数据就丢了

连接失败?重点检查这三处

执行

mysql -h 127.0.0.1 -P 3306 -u root -p
报错时,90% 出在这几个地方:

MySQL 8.0 默认用
caching_sha2_password
插件认证,老客户端(比如某些 Python 的
mysql-connector
8.0.11 之前版本)不支持 → 改成
mysql_native_password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123';
宿主机连不上容器?确认
-p 3306:3306
映射正确,且没被本机其他服务(如 MAMP、Homebrew MySQL)占着端口 → 查看占用:
lsof -i :3306
(macOS/Linux)或
netstat -ano | findstr :3306
(Windows)
远程连接被拒?MySQL 默认只允许
localhost
连接 → 进容器执行:
mysql -u root -proot123 -e "CREATE USER 'dev'@'%' IDENTIFIED BY 'dev123'; GRANT ALL ON *.* TO 'dev'@'%'; FLUSH PRIVILEGES;"

MySQL Workbench 或 DBeaver 怎么配才不报错

图形客户端比命令行友好,但新手常因驱动/SSL 设置栽跟头:

Workbench 连 MySQL 8.0:在 Connection → Advanced 里勾选
Use SSL
→ 设为
Require
Disable
(本地学习建议关掉,避免证书报错)
DBeaver 连接时,Driver properties 中必须设
allowPublicKeyRetrieval=true
(否则报
Public Key Retrieval is not allowed
如果提示
Unknown system variable 'query_cache_size'
,说明用了 MySQL 8.0 驱动连 5.7 实例(或反过来)→ 在 DBeaver 的 Driver Settings → Edit Driver → 切换对应版本的 JAR(如
mysql-connector-java-8.0.33.jar
对应 8.0,
mysql-connector-java-5.1.49.jar
对应 5.7)

中文存进去变问号?SET NAMES utf8mb4 才是正解

建库建表时指定了

CHARSET=utf8mb4
,但插入中文还是乱码,问题大概率出在连接层——MySQL 的
utf8
实际是阉割版(最多 3 字节),真正支持 emoji 和生僻字的是
utf8mb4

容器启动时加参数强制连接编码:
docker run ... -e MYSQL_INITDB_ARGS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" ...
进容器后手动设置(临时):
mysql -u root -proot123 -e "SET NAMES utf8mb4;"
永久生效需挂载自定义配置文件:
my.cnf
内容如下:
[client]
default-character-set = utf8mb4
<p>[mysql]
default-character-set = utf8mb4</p><p>[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
然后启动时加
-v $(pwd)/my.cnf:/etc/mysql/conf.d/my.cnf

字符集这事,服务端、连接层、客户端三者缺一不可,少设一处就白忙活。

相关推荐