在Linux环境下安装MySQL 5.5版本,源码编译安装是解决现代Linux发行版依赖冲突、确保数据库运行稳定且符合特定业务需求的最佳方案,尽管MySQL 5.5已属旧版本,但在许多遗留系统中仍占据核心地位,通过源码编译,管理员不仅可以精确控制安装路径和字符集,还能针对服务器硬件进行性能优化,规避直接使用RPM包可能产生的库文件版本不兼容问题。

环境准备与依赖解决
在开始安装之前,必须确保操作系统环境具备编译MySQL 5.5所需的基础工具和库文件,MySQL 5.5的编译机制与早期版本不同,它不再使用configure脚本,而是强制要求使用CMake进行构建,首要任务是安装CMake及必要的开发包。
对于CentOS/RedHat系列系统,需执行以下命令安装依赖:
yum install -y cmake gcc gcc-c++ ncurses-devel bison perl make
对于Ubuntu/Debian系列系统,依赖包如下:
apt-get install -y cmake build-essential libncurses5-dev bison perl make
特别需要注意的是,ncurses-devel(或libncurses5-dev)是终端图形库,缺失它会导致MySQL编译报错;而bison则是MySQL语法解析器生成所必需的工具,确保这些依赖正确安装,是后续编译顺利进行的基础。
创建MySQL用户与目录
出于安全考虑,严禁使用root用户运行MySQL服务,我们需要创建一个专门用于运行MySQL的系统用户和组,并规划好安装目录。
首先创建mysql用户组和用户:
groupadd mysql useradd -r -g mysql mysql
建议将MySQL安装在/usr/local/mysql目录下,这是业界通用的标准路径,便于后续维护和脚本编写,需要创建数据目录,通常放在/data/mysql或/usr/local/mysql/data,赋予mysql用户对这些目录的所有权是至关重要的步骤:
chown -R mysql:mysql /usr/local/mysql chown -R mysql:mysql /data/mysql
获取源码包与编译安装
获取官方纯净的源码包是保证软件安全性的关键,建议从MySQL官方归档站点下载mysql-5.5.xx.tar.gz,下载完成后,解压并进入源码目录。

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 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1
上述参数中,-DCMAKE_INSTALL_PREFIX指定了安装路径,-DMYSQL_DATADIR指定了数据存储位置,-DDEFAULT_CHARSET=utf8则确保了数据库对中文的良好支持,配置完成后,执行make和make install进行编译和安装,根据服务器性能,这一过程可能需要10到30分钟不等。
初始化数据库与配置文件
编译安装完成后,MySQL并不能直接使用,必须进行初始化以生成默认的系统表和权限数据。
进入安装目录,执行初始化脚本:
cd /usr/local/mysql scripts/mysql_install_db --user=mysql --datadir=/data/mysql
初始化成功的关键标志是输出信息中包含“OK”字样,且在/data/mysql目录下生成了mysql和performance_schema等系统数据库。
接下来是配置文件的设置,虽然源码包中提供了默认的配置模板(如my-medium.cnf),但建议根据服务器内存大小进行定制,在/etc/my.cnf中,必须明确指定[mysqld]模块下的basedir(安装目录)、datadir(数据目录)以及socket文件路径,防止服务启动时因找不到文件而报错。
启动服务与安全加固
将MySQL服务加入系统管理是运维的最后一步,可以将支持脚本复制到init.d目录:
cp support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld
可以使用service mysqld start启动数据库。

启动成功后,首要任务是进行安全加固,MySQL 5.5默认的root密码为空,且存在匿名用户,执行mysql_secure_installation脚本,按照提示设置root密码、删除匿名用户、禁止root远程登录并删除测试数据库,这一步对于生产环境的安全性至关重要,能有效防止绝大多数基础的网络攻击。
常见问题与专业解决方案
在实际部署中,可能会遇到CMake Error: The source directory does not appear to contain CMakeLists.txt,这通常是因为在解压后的目录外执行了cmake命令,请确保进入源码根目录操作,如果启动时报错Table 'mysql.plugin' doesn't exist,这往往是datadir路径下的数据未正确初始化,或者my.cnf中配置的路径与实际初始化路径不一致,需仔细核对权限与路径配置。
通过以上严谨的源码编译流程,我们不仅获得了一个高度定制化的MySQL 5.5环境,更在底层解决了依赖冲突问题,这种方法虽然比YUM或APT安装复杂,但在需要特定性能调优或兼容旧版业务逻辑的场景下,是最专业、最可控的部署方式。
相关问答
Q1: 在编译安装MySQL 5.5时,如果报错“Could NOT find Curses”该如何解决?
A1: 这个错误表示系统缺少Curses库,这是MySQL编译所需的终端界面开发库,在CentOS系统下,请执行yum install ncurses-devel;在Ubuntu/Debian系统下,请执行apt-get install libncurses5-dev,安装完成后,删除源码目录下生成的CMakeCache.txt文件,然后重新运行cmake命令即可解决。
Q2: MySQL 5.5安装后忘记root密码,如何在Linux环境下重置?
A2: 可以通过安全模式跳过权限验证来重置,执行service mysqld stop停止服务,使用mysqld_safe --skip-grant-tables &命令启动MySQL(此命令会跳过权限表),然后直接输入mysql -u root登录数据库,执行SQL语句:UPDATE mysql.user SET Password=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES;,退出数据库,重启MySQL服务即可使用新密码登录。
如果您在按照上述步骤操作的过程中遇到任何报错,或者对编译参数有更个性化的需求,欢迎在评论区留言,我会第一时间为您提供专业的技术支持。