尽管通常我们可能会通过YUM或DNF等包管理器来安装MySQL,但在某些特定需求下,编译安装提供了更高的灵活性和定制性
本文将详细介绍如何在CentOS系统上,结合pip(Python的包管理工具),从源码编译安装MySQL
需要注意的是,虽然pip本身主要用于安装Python包,但在整个过程中,我们可以利用Python脚本来自动化部分任务,提高安装效率
一、准备工作 1. 系统更新 首先,确保你的CentOS系统是最新的
运行以下命令来更新系统: bash sudo yum update -y 2. 安装必要的依赖 编译MySQL需要一系列依赖库和开发工具
使用以下命令安装这些依赖: bash sudo yum groupinstall Development Tools -y sudo yum install cmake gcc-c++ ncurses-devel bison -y 3. 创建MySQL用户和组 为了安全和管理上的便利,建议创建一个专门的MySQL用户和组: bash sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql 二、下载MySQL源码 MySQL的源码可以从MySQL官方网站(https://dev.mysql.com/downloads/mysql/)下载
访问网站后,选择适合的版本,下载源码压缩包
例如,下载MySQL8.0的源码包: bash wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.xx.tar.gz 将`xx`替换为具体的版本号
三、解压源码并进入目录 下载完成后,解压源码包并进入解压后的目录: bash tar -zxvf mysql-8.0.xx.tar.gz cd mysql-8.0.xx 四、配置MySQL编译选项 使用cmake来配置MySQL的编译选项
cmake是一个跨平台的自动化构建系统,它使用一个名为`CMakeLists.txt`的文件来定义项目的构建过程
以下是一个基本的cmake配置命令示例: bash cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc/mysql -DWITH_BOOST=boost -DWITH_SSL=system -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -`-DCMAKE_INSTALL_PREFIX`:指定MySQL的安装目录
-`-DMYSQL_DATADIR`:指定MySQL数据文件的存放目录
-`-DSYSCONFDIR`:指定MySQL配置文件的存放目录
-`-DWITH_BOOST`:指定Boost库的路径(如果源码包中包含Boost库,则使用`boost`)
-`-DWITH_SSL`:启用SSL支持,并指定系统SSL库
-`-DDEFAULT_CHARSET`和`-DDEFAULT_COLLATION`:设置默认字符集和排序规则
注意:如果你的系统中没有预安装Boost库,你可能需要从源码编译Boost库,或者从系统中安装Boost开发包(如`boost-devel`)
五、编译和安装MySQL 配置完成后,开始编译MySQL源码: bash make 编译过程可能需要一些时间,具体取决于你的系统性能
编译完成后,使用以下命令安装MySQL: bash sudo make install 六、设置MySQL目录权限 安装完成后,需要设置MySQL目录的权限,确保MySQL用户能够访问: bash cd /usr/local/mysql sudo chown -R mysql:mysql 七、初始化数据库 在启动MySQL服务之前,需要初始化数据库
使用`mysqld --initialize`命令来完成这一步: bash sudo bin/mysqld --initialize --user=mysql 此命令会在数据目录中生成系统表和其他必要的文件
注意,`--initialize`选项会在MySQL5.7及更高版本中使用
对于MySQL5.6及以下版本,应使用`mysql_install_db`脚本
八、配置MySQL服务 为了方便管理,可以创建一个systemd服务文件来管理MySQL服务
以下是一个示例服务文件`/etc/systemd/system/mysqld.service`: ini 【Unit】 Description=MySQL Server After=network.target After=syslog.target 【Service】 User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/mysql/my.cnf PIDFile=/usr/local/mysql/data/mysqld.pid LimitNOFILE =5000 【Install】 WantedBy=multi-user.target 确保将`ExecStart`路径设置为你的MySQL可执行文件路径,并将配置文件路径设置为你的MySQL配置文件路径
然后,重新加载systemd配置并启动MySQL服务: bash sudo systemctl daemon-reload sudo systemctl start mysqld 设置MySQL服务开机自启: bash sudo systemctl enable mysqld 九、安全配置 MySQL安装完成后,建议运行`mysql_secure_installation`脚本来进行