这事儿得从上周说起。我一个朋友刚转行做运维,兴致勃勃在服务器上装 MySQL,结果折腾了一整天也没搞定,半夜给我发消息求救。我远程一看,他是照着网上教程一步步操作的,却卡在启动服务那一步,报错信息全是英文,直接懵了。其实在 Linux 下装 MySQL,说难不难,说简单吧,坑是真不少。今天我把这些年踩过的坑、总结的经验,掰开揉碎地跟你聊聊。

很多人一上来就想着用源码编译安装,觉得那样最“正宗”。但说实话,除非你有特殊需求——比如要定制某个功能模块——否则真没必要跟自己过不去。Linux 发行版那么多,Ubuntu、CentOS、Debian,各自的包管理器都不一样,源码编译不仅耗时,还容易因为依赖库版本不匹配而翻车。我见过最离谱的一次,有人编译 MySQL 5.7,结果系统自带的 gcc 版本太低,编译到一半直接卡死,只能重装系统。所以,对大多数人来说,使用系统自带的包管理器安装,或者下载官方的二进制包,才是最稳妥的选择。
先说最省事的办法:用包管理器直接装。比如在 Ubuntu 上,一条 就能搞定。但这里有个细节,很多人装完就直接用,结果发现根本不知道 root 密码。新版本的 MySQL 安装时会自动生成一个临时密码,保存在日志文件里。你需要用 查找,然后立刻登录并修改密码。我那个朋友就是没查日志,直接用空密码登录,试了十几次都失败,气得差点砸键盘。记住,装完第一步不是急着建库,而是先看日志。
如果你用的是 CentOS 或者 RHEL 系列,就得用 yum 或 dnf 来装。但 CentOS 默认的 yum 源里,MySQL 版本往往比较老,甚至可能根本没有。这时需要先添加 MySQL 官方的 yum 仓库:去官网下载对应的 rpm 包,然后 装上,再 。这一步容易踩的坑是,你可能会同时装了 MariaDB 和 MySQL,导致端口冲突。我之前在一台测试机上就遇到过,装了 MySQL 后一直启动不了,检查才发现 MariaDB 占着 3306 端口。所以装之前最好先检查服务状态, 看看有没有冲突。
还有一种更灵活的方式:使用通用二进制包。适合对版本有特殊要求,或者系统比较老、包管理器不支持的情况。先下载 MySQL 的 tar 包,解压到 下,然后创建 mysql 用户和组,设置目录权限。关键步骤是初始化数据目录,执行 。很多人会在这里卡住,因为初始化后会生成一个临时密码,必须记下来,否则后面登录不了。我习惯把它复制到一个文本文件里,或者直接截图保存。随后编辑配置文件,把 basedir、datadir 等路径写对,再启动服务。流程看似繁琐,但走过一遍后,后面装其他版本就轻车熟路了。
关于配置文件,很多人觉得默认的就够用,其实不然。默认配置通常是为了兼容大多数场景,性能上比较保守。比如缓冲池大小 ,默认只有 128 M,跑个稍大点的项目时,查询会慢成蜗牛。我一般会根据服务器内存大小来调节,16 G 内存的机器会设到 4 G 甚至 8 G。还有日志文件大小 ,默认 48 M,写操作频繁的场景很快就会写满,导致频繁切换日志文件,性能大幅下降。把这些参数调一调,效果立竿见影。
安全方面也不能忽视。装好 MySQL 后,第一件事就是运行 脚本。它会帮你移除匿名用户、禁止 root 远程登录、删除测试数据库。很多人嫌麻烦,或者觉得只是在内部测试无所谓。但说实话,黑客最喜欢的就是这种裸奔的数据库。我见过一个真实案例:一家初创公司把 MySQL 装在公网服务器上,root 密码设成 123456,结果第二天数据库就被勒索病毒加密,数据全没了。所以,别图省事,安全加固一步都不能少。
说说日常维护。MySQL 装好只是开始,后面的监控和备份才是重头戏。建议在安装 时,顺便把 也装上,方便使用命令行。定期检查慢查询日志,找出运行慢的 SQL 并优化索引或改写语句。备份方面,我习惯用 做逻辑备份,每天凌晨跑一次,备份文件再传到另一台机器上。虽然现在有各种自动化工具,但最原始的方式往往最可靠。别等到数据丢了才后悔,那时候已经太晚。
回到我那个朋友,他后来在我的指导下,用官方二进制包的方式装好了 MySQL,还顺手做了安全配置。第二天他发消息说,感觉数据库跑得挺顺,心里踏实多了。其实在 Linux 下装 MySQL,就像学骑自行车,第一次可能会摔跤,但掌握技巧后,你会发现它不过是个工具。关键是别怕踩坑,每个坑都是经验。


