折腾Linux服务器的人,十有八九都绕不开MySQL这道坎。不管是给网站配数据库,还是跑个开源程序,MySQL几乎是标配。但说实话,每次新装一台机器,重新走一遍安装流程,总会冒出点小意外——不是依赖包冲突,就是权限没设对,要么就是字符集乱码。今天这篇就聊聊我在Linux下装MySQL的实战经验,从零开始,一步步把坑填平。

先说明白,我这里讲的是Ubuntu和CentOS这两个最常见的发行版。为什么强调这个?因为它们的包管理器不一样,安装命令天差地别。你用Ubuntu的apt去装,换到CentOS上就得用yum或者dnf,搞混了直接报错。我自己就干过这事,在CentOS上敲apt-get,结果提示command not found,当时还愣了半天。所以第一步,先确认你的系统是哪个家族,用看一眼,稳当。
在Ubuntu上装MySQL,最省心的方式是直接用官方APT仓库。默认的Ubuntu源里也有MySQL,但版本往往偏老,而且更新不及时。我推荐你先把MySQL官方的仓库加进来。怎么加?先装个wget,然后下载MySQL的APT配置包。具体命令大概是,然后这个文件。装的时候它会弹个蓝屏界面,让你选要装哪个版本,一般默认就行,选MySQL 8.0。接下来刷新源,再,基本就搞定了。整个过程大概十分钟,比编译源码省心一百倍。
CentOS那边稍微有点区别。CentOS 7默认用yum,CentOS 8以上用dnf。但不管哪个,你都可以先检查一下系统自带的MySQL源。CentOS默认带的MySQL是MariaDB的分支,如果你非要用纯正MySQL,得先禁用掉系统自带的模块,命令是(CentOS 8以上)。然后从MySQL官网下载对应系统的rpm包,比如,装上去之后。装的过程会给你装一堆依赖,耐心等就行。
装完之后,别忘了启动服务。Ubuntu上直接用,CentOS上是。注意名字不一样,一个少个d,多个d。刚装完第一次启动,MySQL会生成一个临时root密码,存在日志里。你拿(CentOS)或者(Ubuntu)去找。找到后用这个密码登录,然后立刻改密码,因为默认密码策略很严格,不改根本没法用。
改密码这一步,很多人会卡住。MySQL 8.0默认的密码策略要求长度至少8位,还要包含大小写字母、数字和特殊字符。你要是设个,直接给你报错。解决办法有两个:要么老老实实设个强密码,要么修改validatepassword组件的策略。我建议第一次就设个强密码,省得后面麻烦。登录进去后执行,注意MySQL 8.0默认用cachingsha2password,但有些老客户端不认,用mysqlnativepassword兼容性更好。
接下来就是安全设置了。MySQL自带的脚本能帮你做基础加固,包括删匿名用户、禁止root远程登录、删测试数据库。跑一遍这个脚本,虽然不能保证绝对安全,但能堵住大部分常见漏洞。我每次装完都会跑一遍,花不了两分钟,心里踏实。跑的时候它会问你几个yes/no,全选是就行。注意如果你在Ubuntu上装的是MySQL 8.0,这个脚本可能不默认安装,需要额外装工具,或者直接用试试,没有的话手动删匿名用户也行。
远程访问这块,是个大坑。默认情况下MySQL只允许localhost连接,你要是想从别的机器连过来,得手动改配置。用登录,然后执行,再,。另外还得改配置文件,Ubuntu在,CentOS在,找到那行,把127.0.0.1改成0.0.0.0,重启服务。改完记得防火墙放行3306端口,不然白搭。
字符集问题也常被人忽略。装完MySQL默认用latin1,存中文直接变问号。我建议装好之后立刻改utf8mb4,这个编码支持emoji,兼容性最好。登录MySQL后执行,同时修改配置文件里的和。改完重启,再创建数据库时指定,就再也不会出现乱码了。我最早没注意这个,结果项目上线后用户反馈中文全乱,折腾半天才查出来是编码问题,教训深刻。
说说卸载重装。有时候装坏了,或者版本冲突,干脆卸了重来。Ubuntu上用,CentOS上。但光卸包不够,数据目录还在,得手动删掉。注意删之前备份,不然数据全没了。删完再重新装,就能有个干净环境。我干过几次这种事,每次都是删完数据目录才彻底干净,不然老是残留旧配置导致新装的服务起不来。
总结一下,Linux下装MySQL其实不复杂,但细节多。记住几个关键点:先确认系统版本,选对安装方式;装完看日志拿临时密码;立刻改密码和跑安全脚本;远程访问要改bind-address和防火墙;字符集一定要设utf8mb4。把这些都走一遍,基本就不会出幺蛾子了。当然,每个人遇到的具体情况可能不一样,比如编译安装、用Docker跑MySQL,又是另一套玩法。但核心思路是通用的——先装好,再调优,做安全加固。


