在CentOS上编译安装MySQL是一个相对复杂但灵活的过程,它允许用户根据需求定制MySQL的安装,下面将详细介绍如何在CentOS上编译安装MySQL 8.0,包括准备工作、下载源码、编译安装、配置服务以及登录设置等步骤。
一、准备工作
1、更新系统并安装必要的编译工具:确保CentOS系统已更新到最新状态,并安装了必要的编译工具,执行以下命令进行更新和安装:
sudo yum update y sudo yum install y gccc++ cmake make wget openssldevel ncursesdevel bisondevel zlibdevel libaiodevel
2、检查gcc版本:MySQL 8.0要求gcc的版本在4.8以上,如果版本低于4.8,需要自行升级。
3、安装依赖包:除了上述编译工具外,还需要安装一些其他依赖包,如pcredevel、zlibdevel、bisondevel等。
二、下载MySQL源码包
从MySQL官方网站下载MySQL的源代码包,假设我们要安装MySQL 8.0.29,可以使用以下命令:
wget https://cdn.mysql.com//Downloads/MySQL8.0/mysql8.0.29.tar.gz tar xzvf mysql8.0.29.tar.gz cd mysql8.0.29
三、编译安装MySQL
1、配置编译参数:在编译MySQL之前,需要配置编译参数,这些参数决定了MySQL的功能和性能。
cmake \ DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ DDEFAULT_CHARSET=utf8mb4 \ DDEFAULT_COLLATION=utf8mb4_unicode_ci \ DWITH_EXTRA_CHARSETS=all \ DWITH_MYISAM_STORAGE_ENGINE=1 \ DWITH_INNOBASE_STORAGE_ENGINE=1 \ DWITH_PARTITION_STORAGE_ENGINE=1 \ DWITH_READLINE=1 \ DWITH_ZLIB=system \ DWITH_LIBWRAP=0 \ DWITH_DEBUG=0 \ DENABLED_LOCAL_INFILE=1 \ DWITH_SSL=system \ DWITH_EMBEDDED_SERVER=1 \ DWITH_PLUGIN_DIR="/usr/local/mysql/lib/plugin" \ .
注意:这里的DENABLED_LOCAL_INFILE=1
表示启用本地文件导入功能,这在某些情况下可能是不安全的,请根据实际需求调整。
2、编译和安装:配置完成后,开始编译和安装MySQL,这个过程可能需要一些时间,具体取决于计算机的性能。
make j $(nproc) sudo make install
j $(nproc)
表示使用所有可用处理器进行并行编译。
四、配置MySQL
1、创建MySQL用户和组:为了安全起见,为MySQL创建一个专用的用户和组。
sudo groupadd mysql sudo useradd r g mysql mysql
2、初始化MySQL数据库:在安装完成后,需要初始化MySQL数据库。
sudo chown R mysql:mysql /usr/local/mysql sudo /usr/local/mysql/bin/mysqld initialize user=mysql
注意:初始化过程中会生成一个临时密码,请妥善保管。
3、启动MySQL服务:为了方便管理MySQL服务,可以创建一个systemd服务文件。
sudo cat > /etc/systemd/system/mysqld.service <<EOF [Unit] Description=MySQL Server After=network.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld_safe Restart=always RestartSec=10 [Install] WantedBy=multiuser.target EOF
然后启用并启动MySQL服务:
sudo systemctl enable mysqld sudo systemctl start mysqld
4、登录MySQL并设置root密码:使用初始化时生成的临时密码登录MySQL,并设置新的root密码。
sudo /usr/local/mysql/bin/mysql u root p ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; EXIT;
五、与RPM包安装的比较
通过编译源码安装MySQL与使用RPM包安装相比,有以下区别:
方面 | 编译源码安装 | RPM包安装 |
灵活性 | 高,可以根据需要选择不同的编译选项 | 低,通常只能安装预编译好的包 |
兼容性 | 可以确保MySQL与现有系统环境的兼容性 | 可能受限于预编译包的兼容性 |
复杂性 | 相对复杂,需要更多的时间和专业知识 | 简单快捷,适合初学者 |
维护 | 需要手动管理更新和补丁 | 可以通过包管理器轻松升级和维护 |
社区支持 | 相对较少,但可以获得更深入的定制和支持 | 通常更好,包括文档和问题解决 |
六、实践心得与注意事项
1、备份:在进行任何重大操作前,确保备份重要的数据。
2、版本选择:选择适合你业务需求的MySQL版本。
3、安全性:确保设置强密码并限制root用户的远程访问。
4、性能调优:根据实际负载情况调整MySQL的配置文件。
5、日志监控:定期检查MySQL的错误日志和慢查询日志,以便及时发现和解决问题。
七、相关问题FAQs
Q1:为什么选择编译源码安装MySQL而不是使用RPM包安装?
A1: 编译源码安装MySQL提供了更高的灵活性和定制性,用户可以根据自己的需求选择不同的编译选项,从而获得更符合需求的功能和性能,编译源码安装还可以确保MySQL与现有系统环境的兼容性,这种方法相对复杂,需要更多的时间和专业知识,对于需要高度定制化安装的场景,编译源码安装无疑是一个很好的选择。
Q2:在编译安装MySQL过程中遇到“gcc版本过低”的问题怎么办?
A2: 如果遇到“gcc版本过低”的问题,首先需要检查当前系统中gcc的版本,如果版本确实低于MySQL 8.0的要求(4.8以上),则需要升级gcc,可以通过以下步骤进行升级:
1、下载新版本的gcc源码包;
2、解压源码包并进入目录;
3、配置编译参数(如指定安装路径、启用或禁用某些功能等);
4、编译并安装新版本的gcc;
5、将新版本的gcc添加到系统环境变量中,以便后续编译MySQL时能够找到并使用新版本的gcc。