在 CentOS 系统中通过编译源码安装 MySQL,可以提供高度的定制性和灵活性,以下是详细的步骤和说明:
准备工作
1、更新系统并安装必要的编译工具:
sudo yum update y sudo yum install y gccc++ cmake make
2、下载 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 之前,需要配置编译参数,这一步非常重要,因为它决定了 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" \ .
编译和安装
配置完成后,可以开始编译和安装 MySQL。
make j $(nproc) sudo make install
配置 MySQL
1、创建 MySQL 用户和组:
sudo groupadd mysql sudo useradd r g mysql mysql
2、初始化 MySQL 数据库:
sudo chown R mysql:mysql /usr/local/mysql sudo /usr/local/mysql/bin/mysqld initialize user=mysql
3、启动 MySQL 服务:
sudo /usr/local/mysql/bin/mysqld_safe user=mysql &
4、创建 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
5、启用并启动 MySQL 服务:
sudo systemctl enable mysqld sudo systemctl start mysqld
6、登录 MySQL:
sudo /usr/local/mysql/bin/mysql u root
7、设置 root 密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; EXIT;
与 RPM 包安装的比较
特性 | 编译源码安装 | RPM 包安装 |
灵活性 | 高,可以根据需要选择不同的编译选项 | 低,固定选项 |
兼容性 | 确保与现有系统环境的兼容性 | 通常兼容 |
复杂性 | 较高,需要更多时间和专业知识 | 较低,简单快捷 |
维护 | 较难,需要手动管理更新 | 容易,通过包管理器升级 |
社区支持 | 较少文档和问题解决支持 | 较多文档和问题解决支持 |
实践心得
1、备份:在进行任何重大操作前,确保备份重要的数据。
2、版本选择:选择适合你业务需求的 MySQL 版本。
3、安全性:确保设置强密码并限制 root 用户的远程访问。
4、性能调优:根据实际负载情况调整 MySQL 的配置文件。
常见问题解答(FAQs)
Q1:如何更改 MySQL 的默认字符集?
A1:在编译时使用DDEFAULT_CharSET=utf8mb4
参数来指定默认字符集为 utf8mb4。
Q2:如何在系统启动时自动启动 MySQL?
A2:创建 systemd 服务文件并启用服务,具体步骤如上述“创建 MySQL 服务”部分所示。