在Linux操作系统中安装MySQL 5.5是一项经典的数据库部署任务,尽管当前MySQL已更新至8.0版本,但许多企业级核心业务仍运行在MySQL 5.5上,以确保最大的兼容性和稳定性。要在Linux系统上成功安装MySQL 5.5,核心在于正确处理编译依赖环境(特别是cmake工具)、规范配置编译参数、以及严谨的权限管理。 推荐采用源码编译安装的方式,这种方式虽然比二进制包安装复杂,但能根据服务器硬件特性进行深度定制优化,且具有最高的灵活性。

环境准备与依赖库安装
在开始安装之前,必须确保系统环境干净且依赖完整,MySQL 5.5的编译构建过程与5.1及之前版本不同,它不再使用configure脚本,而是全面转向了cmake。安装cmake是首要前提,为了支持MySQL的运行和编译,需要安装ncurses库、gcc编译器等。
通过包管理器安装基础依赖,以CentOS系统为例,执行以下命令:
yum install -y cmake gcc gcc-c++ ncurses-devel bison perl make
这一步至关重要,缺少ncurses-devel会导致编译报错,而缺少cmake则根本无法进行构建配置,对于Ubuntu/Debian系统,可使用apt-get安装对应的libncurses5-dev、cmake和build-essential等包。
为了防止端口冲突或残留文件影响新安装,建议检查系统中是否已存在MySQL或MariaDB的安装包或进程,如有,需彻底卸载并清理残留数据目录。
创建用户与目录结构
出于安全考虑,严禁使用root用户运行MySQL服务,我们需要创建一个专门用于运行MySQL的系统用户和组,并禁止其登录shell。
groupadd mysql useradd -r -g mysql -s /bin/false mysql
规划安装目录,通常将软件安装在/usr/local/mysql,数据目录放在/data/mysql(或/usr/local/mysql/data),创建目录并赋予正确的所有权:
mkdir -p /usr/local/mysql /data/mysql chown -R mysql:mysql /usr/local/mysql /data/mysql
权限的归属错误是导致MySQL无法启动或无法读写数据文件的常见原因,务必确保mysql用户对数据目录拥有读写执行权限。
源码下载、编译与安装
获取MySQL 5.5的官方源码包是保证软件可信度(E-E-A-T原则)的最佳方式,建议从MySQL官方归档站下载。

下载并解压后,进入源码目录。cmake的配置参数是决定MySQL性能的关键环节,以下是一组经过优化的经典配置参数示例:
cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DENABLED_LOCAL_INFILE=1 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=all \ -DWITH_DEBUG=0
参数解析: DCMAKE_INSTALL_PREFIX指定安装路径,DMYSQL_DATADIR指定数据存储位置,DDEFAULT_CHARSET和DDEFAULT_COLLATION统一了字符集为UTF-8,这对中文环境至关重要,配置完成后,执行make和make install。编译过程耗时较长,建议使用make -j参数(如make -j 4)调用多核CPU并行编译,以大幅缩短等待时间。
初始化数据库与配置文件
编译安装完成后,MySQL并未完全就绪,必须初始化系统数据库(生成mysql库和test库等),进入安装目录,执行初始化脚本:
cd /usr/local/mysql scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
注意: 在MySQL 5.5中,初始化脚本位于scripts目录下,这与5.7及之后版本位于bin目录下不同,初始化成功后,会在数据目录生成基础文件。
配置服务启动脚本和配置文件,将支持文件复制到系统服务目录:
cp support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on
关于my.cnf配置文件,建议复制源码包中的默认模板到/etc/my.cnf:
cp support-files/my-medium.cnf /etc/my.cnf
专业的运维建议: 在生产环境中,应根据服务器内存大小调整my.cnf中的innodb_buffer_pool_size参数,通常设置为物理内存的50%-70%。
启动服务与安全加固
执行service mysqld start(或systemctl start mysqld)启动服务,启动成功后,必须进行安全加固。MySQL 5.5默认root密码为空,这是极大的安全隐患。

将MySQL命令路径加入环境变量或使用绝对路径登录:
/usr/local/mysql/bin/mysql -u root
登录后,立即修改root密码:
UPDATE mysql.user SET Password=PASSWORD('YourStrongPassword') WHERE User='root';
FLUSH PRIVILEGES;
建议删除匿名用户、禁止root远程登录(除非必要)以及删除test数据库,这些操作虽然可以通过mysql_secure_installation脚本在较新版本中自动完成,但在5.5中手动执行SQL命令更为精准可控。
常见问题与专业解决方案
在实际部署中,可能会遇到libaio缺失错误,表现为启动时提示“Got error: 127 from storage engine”。解决方案是安装libaio和libaio-devel包,因为InnoDB引擎依赖此库进行异步I/O操作。
另一个常见问题是“Table ‘mysql.plugin’ doesn’t exist”,这通常是因为数据目录权限不正确或初始化未成功执行。检查/data/mysql目录下是否存在mysql文件夹,且所有文件的所有者是否为mysql用户,是排查此类问题的核心思路。
相关问答
Q1: MySQL 5.5 安装后启动失败,提示“Permission denied”,如何解决?
A1: 这是一个典型的权限问题,首先检查MySQL数据目录(如/data/mysql)及其子文件的属主是否为mysql用户,如果不是,请执行chown -R mysql:mysql /data/mysql,检查/tmp/mysql.sock文件的权限,确保MySQL用户有读写权限,查看SELinux状态,如果开启且配置不当,可能会阻止进程启动,可尝试临时关闭SELinux验证是否为该原因。
Q2: 编译安装MySQL 5.5时,提示“Could not find CMake_ROOT”怎么办?
A2: 这意味着系统未安装cmake或cmake未在环境变量PATH中,请先确认是否已安装:rpm -qa | grep cmake 或 dpkg -l | grep cmake,若未安装,请使用yum或apt-get安装cmake,如果已安装但仍报错,可能是环境变量配置问题,可以尝试使用cmake的绝对路径来执行配置命令,或者将cmake的bin目录添加到PATH环境变量中。

















