- 下载并解压 MySQL 源码包:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.41.tar.gz
tar -zxvf mysql-5.7.41.tar.gz
cd mysql-5.7.41
- 安装编译 MySQL 所需的依赖包:
yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel libarchive
- 创建 MySQL 登录用户:
useradd -s /sbin/nologin mysql
- 使用 cmake 进行编译配置:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=all \
-DWITH_DEBUG=0 \
-DWITH_SSL=yes \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_BOOST:PATH=/usr/include/boost/
- cmake可能会出现的问题:
报错:cmake: symbol lookup error: cmake: undefined symbol: archive_write_add_filter_zstd
解决方法:需要安装yum install -y libarchive
报错:CMake Error at cmake/boost.cmake:88 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>
解决方法:报这个错时,打开mysql安装文件的CMakeCache.txt,因为这个安装文件太老,和centos8不匹配,需要从这个文件中找到'WITH_BOOST:'改成WITH_BOOST:PATH=/usr/include/boost/即可
报错:CMake Error at rapid/plugin/group_replication/rpcgen.cmake:100 (MESSAGE): Could not find rpcgen
解决方法:表示没有找到rpcgen,建议从https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz
下载一个rpcsvc-proto的源码包进行编译安装,安装完成后重新cmake即可
wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz
tar xf rpcsvc-proto-1.4.tar.gz
cd rpcsvc-proto-1.4
./configure
make && make install
- 编译安装 MySQL:
make && make install
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
- 环境变量配置:
vim /etc/profile
在行尾加入:
export PATH=$PATH:/usr/local/mysql/bin/
保存后刷新
source /etc/profile
- 数据库初始化:
mkdir -pv /data/mysql
chown -R mysql:mysql /usr/local/mysql /data/mysql/
yum install -y perl-Module-Install
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysql/
- 使用systemd管理服务:
vim /etc/systemd/system/mysql.service
[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/mysqld start
[Install]
WantedBy=multi-user.target
保存后执行重新加载
systemctl daemon-reload
最后尝试启动:
systemctl start mysql