在Linux操作系统上安装MySQL 5.5数据库,由于该版本较为经典且现代Linux发行版默认软件源已不再提供,采用源码编译安装是确保环境兼容性、功能完整性以及性能优化的最佳方案,核心过程涵盖了环境依赖检查、源码编译、参数配置以及服务启动四个关键阶段,通过精细化的操作步骤,可以构建一个稳定、高效且符合生产环境要求的数据库系统,以下将基于CentOS/RedHat系列系统,详细阐述从依赖安装到服务启动的全流程专业解决方案。

环境依赖与用户权限准备
在进行MySQL 5.5源码编译之前,必须确保系统具备完善的编译环境和依赖库,MySQL 5.5开始引入了CMake作为构建系统,因此传统的configure脚本已被取代,安装CMake是编译的前提条件,MySQL服务不应以root用户身份运行,以降低安全风险,需预先创建专用的系统用户和组。
通过包管理器安装编译所需的依赖包,包括gcc编译器、ncurses库(用于终端控制)、make工具以及CMake,执行命令如下:
yum install -y cmake gcc gcc-c++ ncurses-devel make perl
创建mysql系统组和用户,如果系统已存在相关用户,建议先清理或确认其UID/GID的一致性,执行以下命令创建无登录权限的用户:
groupadd mysql
useradd -g mysql -s /sbin/nologin -M mysql
这一步的关键在于权限隔离,确保数据库进程被限制在特定用户权限下,防止系统级漏洞被利用。
源码获取与编译参数配置
获取MySQL 5.5的源码包建议从MySQL官方归档或可信的开源镜像站下载,以确保文件的完整性和安全性,下载后,使用tar命令解压源码包,进入解压后的目录,CMake的配置阶段是决定MySQL功能特性的核心环节。
在执行cmake命令时,需要指定一系列关键参数以满足生产环境需求。-DCMAKE_INSTALL_PREFIX用于指定安装路径,通常设为/usr/local/mysql;-DMYSQL_DATADIR指定数据目录;-DDEFAULT_CHARSET和-DDEFAULT_COLLATION分别设置默认字符集为utf8和排序规则,这对中文环境至关重要。
一个典型的专业配置命令如下:
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1
在此配置中,显式启用InnoDB存储引擎是必须的,因为它是MySQL中最常用且支持事务的引擎,启用ENABLED_LOCAL_INFILE允许客户端通过LOAD DATA LOCAL INFILE导入数据,但在生产环境中需权衡安全风险,配置完成后,执行make进行编译,这一步耗时较长,建议使用make -j结合CPU核心数加速编译,编译无误后,执行make install将文件安装至指定目录。

初始化数据库与配置文件设置
安装完成后,数据库的初始化是生成默认数据表和系统库的关键步骤,MySQL 5.5提供了mysql_install_db脚本进行初始化,在执行前,需修改安装目录的所有权,将属主改为mysql,属组改为mysql,确保服务进程有读写权限。
chown -R mysql:mysql /usr/local/mysql
执行初始化脚本:
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
初始化成功后,需要建立配置文件my.cnf,MySQL 5.5源码包中提供了多个模板文件(如my-small.cnf, my-medium.cnf, my-large.cnf),根据服务器物理内存选择合适的模板复制到/etc/my.cnf,对于生产环境,建议手动编辑/etc/my.cnf进行深度优化,设置max_connections(最大连接数)、innodb_buffer_pool_size(InnoDB缓冲池大小,通常设为物理内存的50%-70%)以及skip-name-resolve(跳过域名解析,提升连接速度),这些参数直接关系到数据库在高并发场景下的性能表现。
服务启动、安全加固与验证
为了方便管理MySQL服务,应将MySQL的服务启动脚本复制到系统初始化目录中,并赋予执行权限。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
可以使用service mysqld start启动服务,启动成功后,必须进行安全加固,MySQL 5.5默认root用户无密码,且允许匿名登录,存在极大安全隐患,执行/usr/local/mysql/bin/mysql_secure_installation脚本,按照提示设置root密码、移除匿名用户、禁止root远程登录以及删除测试数据库。
将MySQL的bin目录加入系统环境变量PATH中,以便全局调用mysql命令,验证安装是否成功,可通过执行mysql -u root -p输入密码后登录,并执行show variables like 'version';查看当前版本信息,若输出显示为5.5.x系列,则说明安装与配置完全成功。

常见问题与专业解决方案
在安装过程中,可能会遇到CMake Error: The source directory does not appear to contain CMakeLists.txt错误,这通常是因为未进入解压后的源码根目录执行cmake命令所致,解决方法是确保当前目录下存在CMakeLists.txt文件。
另一个常见问题是初始化时提示FATAL ERROR: Could not find ./bin/my_print_defaults,这是因为basedir路径识别错误,在执行mysql_install_db时,务必显式指定--basedir=/usr/local/mysql参数,避免脚本自动查找路径出错。
编译过程中如果出现ncurses.h not found错误,说明系统缺少ncurses-devel包,需重新安装依赖并清理CMake缓存(rm CMakeCache.txt)后再次编译,这些细节处理体现了在Linux环境下部署软件对依赖环境准确性的严苛要求。
相关问答
Q1:在编译安装MySQL 5.5时,为什么要指定字符集为utf8而不是latin1?
A: MySQL 5.5的默认字符集是latin1(瑞典语),该字符集仅支持单字节字符,无法存储中文等多字节语言,如果在安装时不显式指定-DDEFAULT_CHARSET=utf8,后续数据库在存储中文数据时会出现乱码,虽然可以在配置文件中修改,但编译时指定能确保底层元数据(如表结构定义)的字符集一致性,避免因字符集转换带来的性能损耗和潜在错误,是专业部署的标准做法。
Q2:为什么源码编译安装比使用YUM/RPM包安装更适合MySQL 5.5?
A: 现代Linux发行版(如CentOS 7/8、Ubuntu 18.04+)的默认软件源中,MySQL版本通常更新至5.7或8.0,甚至被MariaDB取代,无法直接通过YUM安装5.5版本,即使使用旧的RPM包,也面临系统库依赖不兼容(如glibc版本过高)的风险。源码编译安装允许我们在当前系统环境下动态链接库文件,通过调整编译参数灵活定制功能(如禁用不需要的存储引擎),并指定特定的安装目录,从而实现高度的兼容性和性能优化,这是二进制包无法比拟的优势。
互动环节
如果您在Linux环境下安装MySQL 5.5的过程中遇到关于编译参数优化或内存配置的具体问题,欢迎在下方留言,我们将为您提供更具针对性的技术建议。

















