前两天有个做运维的朋友跟我吐槽,说他刚接手一个项目,客户那边非要装 MySQL 5.7,理由是老系统的兼容性要求。他翻了半天网上的教程,要么太老,要么太简略,根本找不到靠谱的步骤。我听完笑了,这玩意儿我装过不下几十次,从踩坑到熟练,积累了不少经验。其实 5.7 这个版本现在用的人还挺多,毕竟很多企业系统跑了好几年,升级成本高,宁愿守着老版本。但安装它说简单也简单,说麻烦也麻烦,关键是要知道那些坑在哪儿。今天我就把这套流程掰开揉碎地讲一遍,保准你看完能自己动手装起来,而且不出错。

第一步肯定是下载安装包,千万别去官网随便点那个 “Download” 按钮,它默认推荐最新的 8.0 版本,5.7 必须往下翻。正确的路径是 MySQL 官网的存档页面,选择 “MySQL Community Server 5.7”,再根据你的系统挑版本。Windows 用户就选 .msi 安装包,Linux 用户则看是 Ubuntu 还是 CentOS,包格式不同。我见过不少人图省事直接下通用二进制包,结果装到一半发现缺依赖库,卡在那儿进退两难。最好选对应系统的包管理器版本,像 Ubuntu 用 apt,CentOS 用 yum,这样后续依赖问题少很多。下载时留意文件名里的版本号,例如 5.7.40,别下了 5.6 或者 5.8,那可就乌龙了。
装 Windows 版时,很多人习惯一路 “Next”,结果装完发现连密码都没设,服务启动不了,日志里报一堆错。关键在安装向导的 “Type and Networking” 页面,默认选的是 “Developer Default”,会装一堆用不上的组件,比如 MySQL Workbench、Connector 等。如果只想要数据库引擎跑业务,选 “Server only” 就够了。随后到 “Accounts and Roles” 那一步,记得设个强密码,别用 123456 之类的;弱密码不仅不安全,有些框架连接时还会报错。还有端口,默认 3306,但如果机器上已经跑了一个 MySQL 实例,必须改成 3307 或其他,否则端口冲突服务起不来。装完后去服务管理器查看,确认 “MySQL57” 服务处于 “正在运行” 状态,若未启动手动点一下。
Linux 用户装起来其实比 Windows 简单,但坑也不少。以 Ubuntu 为例,先更新包列表,然后执行 。如果提示找不到包,说明软件源里没有 5.7 版本,需要先添加 MySQL 官方的 APT 仓库。很多人忘记这一步,结果装成了 8.0,还纳闷为什么和教程不一样。添加仓库的命令网上有现成的,照着敲就行,但要把 Ubuntu 版本代号换成对应的,比如 20.04 是 focal,22.04 是 jammy。装完后运行 ,该脚本会引导你设置密码、删除匿名用户、禁用 root 远程登录,新手一定要跑一遍,否则数据库裸奔在公网上,被攻击都不知道。还有一点,默认的认证插件是 authsocket,导致只能用 进入控制台,想用客户端远程连接还得改成 ,否则连不上。
配置这块最常出问题的是字符集和内存。很多人装完后发现插入中文数据变成乱码,或者服务跑着跑着突然挂掉,往往是配置文件没调好。5.7 的配置文件在 Windows 下是 my.ini,Linux 下是 my.cnf,一般放在 /etc/mysql/ 目录。打开它,在 下加几行: 和 ,中文存储就不会乱码。内存方面,如果是 1 核 2 GB 的云服务器,建议把 调整为 256 M‑512 M,默认的 128 M 太小;如果是大机器,按比例增大但不要超过机器内存的 70%。 默认 151,业务并发高时可以改成 500 或 1000,但别贪心,设太大内存吃不消。修改完配置记得重启服务,Windows 在服务管理器里重启,Linux 用 。
数据迁移也是容易翻车的地方。如果是从旧版本升级到 5.7,或者从别的数据库导数据,最稳妥的做法是用 mysqldump 导出 SQL 文件,再在新环境里 source 导入。有些人图快直接复制 data 目录下的物理文件,结果因为版本不兼容或表引擎不同,导入后表打不开。mysqldump 命令很简单:。导出的文件要检查大小,若只有几 KB 则说明导出失败,需查看错误日志。导入时使用 ,如果数据量大可以加上 参数,防止包被截断。还有个小技巧,导入前先关闭二进制日志:,可以显著提升速度,导入完再打开,避免日志文件撑爆磁盘。
安全这块不能马虎,尤其是数据库暴露在公网时。5.7 默认只监听 localhost,但很多人为了方便会改成监听 0.0.0.0,结果招来大量扫描器。建议除非有远程管理的硬需求,否则不要开放远程访问。真的需要开放,至少在防火墙上加规则,只允许特定 IP 访问 3306 端口。root 账户千万别直接给业务使用,建普通用户并只授予业务需要的库权限,例如。定期备份也是必须的,写个 crontab 脚本,每天凌晨自动执行 mysqldump,备份文件按日期命名,保留最近 7 天,旧的自动删除。我见过一家公司的数据库崩了才发现备份文件是空的,结果欲哭无泪。
说点掏心窝子的话。MySQL 5.7 虽然老了,但胜在稳定,社区支持成熟,网上的解决方案一大把。装这个版本,关键是别着急,每走一步都确认一下,别想着一步到位。我刚开始装时图省事跳过字符集配置,结果项目上线两周后用户全是乱码,改都改不回来,只能重建数据库重新导数据,惨不忍睹。所以说,装数据库这事儿跟做菜一样,配料准备齐了,火候到位了,味道自然不会差。按我上面的步骤来,装完后跑起来稳稳的,再也不用半夜爬起来修数据库了。


