准备工作与环境说明
MySQL 5.1 属于经典老版本,目前在某些遗留业务系统、老旧服务器迁移或特定兼容性测试中仍然占有一席之地。通过源码编译安装最大的优势在于能彻底摆脱发行版默认仓库的版本限制,精准控制字符集、存储引擎和功能模块。本教程基于主流 Linux 系统编写,所有命令均经过实战验证,按步骤操作即可平稳部署。
第一步:安装基础编译依赖
源码编译对底层工具链要求较高,缺失任何开发库都会导致中途报错。请在终端执行以下命令一次性补齐所需组件。如果使用的是 Debian 系系统,请将 yum 替换为 apt-get。
yum install gcc gcc-c++ make cmake ncurses-devel openssl-devel bison libxml2-devel -y
其中 gcc 系列负责代码翻译,ncurses 提供终端交互界面,openssl 保障加密通信,bison 处理词法分析。安装完毕后输入 gcc --version 和 make --version 确认版本号正常输出,环境即告就绪。
第二步:获取源码并解压
前往 MySQL 官方历史版本归档地址或使用国内镜像源下载 mysql-5.1.73.tar.gz。推荐使用 wget 指令直接拉取至服务器当前目录,避免跨平台传输导致的文件损坏。
wget https://cdn.mysql.com/archives/mysql-5.1/mysql-5.1.73.tar.gz
文件下载结束后,执行 tar -zxvf mysql-5.1.73.tar.gz 进行解压。随后 cd mysql-5.1.73 进入源码根目录,此时可以看到完整的 Makefile 和 configure 脚本,准备进入配置阶段。
第三步:执行编译参数配置
这是决定最终功能形态的关键一步。直接运行 ./configure 会加载默认值,但生产环境建议显式指定路径和特性。将以下参数组合粘贴到终端:
./configure
--prefix=/usr/local/mysql
--with-mysqld-user=mysql
--with-unix-socket-path=/tmp/mysql.sock
--with-charset=utf8
--with-extra-charsets=all
--enable-assembler
--with-plugins=partition,innodb_plugin
这些参数分别设定了安装根目录、后台运行账户、Socket 通信路径、主从字符集以及启用的高级插件。配置过程会自动检测系统环境,末尾出现 Configuring MySQL 完成字样即代表校验通过。
第四步:编译与正式安装
调用 make 命令启动构建流程。该过程会根据 CPU 核心数自动分发任务,通常需要十到二十分钟。期间保持网络畅通,切勿强制终止。若出现 fatal error 提示,请对照日志检查是否遗漏了某项 devel 结尾的开发包。
make && make install
两条命令连续执行完毕后会生成标准的二进制目录结构。此时 MySQL 核心程序已经部署到位,但数据目录和系统权限尚未初始化,还需要进行后续收尾工作。
第五步:初始化数据库与创建用户
出于安全考虑,数据库绝不应以 root 身份运行。先创建专用的 mysql 用户和组:groupadd mysql 和 useradd -r -g mysql mysql。接着切换到安装目录的 scripts 子目录,执行初始化脚本:
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
该命令会在 data 目录下生成系统表空间和基础权限表。初始化成功后,将启动管理脚本拷贝至系统服务目录 cp support-files/mysql.server /etc/init.d/mysqld,并给予执行权限 chmod +x /etc/init.d/mysqld。最后建立软链接方便全局调用 ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql。
第六步:启动验证与安全加固
运行 service mysqld start 拉起服务进程。检查日志 tail -f /var/log/mysqld.log 确认 InnoDB 引擎正常加载且无崩溃记录。使用 mysql -u root -p 尝试登录,初次安装默认管理员密码为空。进入控制台后务必执行 SET PASSWORD FOR 'root'@'localhost'=PASSWORD('your_strong_password'); 修改凭证,并删除匿名账号 delete from mysql.user where user=''; 防止未授权访问。
日常维护与故障排除
编译安装的版本不会随系统更新自动升级,需自行备份 my.cnf 配置文件。若启动时提示 port bind failed,通常是 3306 端口被占用,使用 netstat -tlnp 查杀冲突进程。内存不足导致 OOM 时,可在 my.cnf 的 [mysqld] 段落下调大 innodb_buffer_pool_size 至物理内存的百分之五十左右。遇到段错误或乱码,优先核对字符集变量 show variables like character_set; 是否与业务预期一致。掌握上述要点后,即可稳定驾驭该版本的核心功能。



