1. 安装必要的依赖包
首先,确保系统已安装构建MySQL所需的依赖包:
sudo yum install centos-release-scl#启用SCL(Software Collections)仓库
sudo yum update -y
sudo yum groupinstall -y "Development Tools"
sudo yum install -y cmake3 ncurses-devel openssl-devel libaio-devel bison wget
sudo yum install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils #安装Devtoolset-11
scl enable devtoolset-11 bash #每次使用时都需要启用Devtoolset-11
echo "source /opt/rh/devtoolset-11/enable" >> ~/.bashrc #为了方便,可以将其添加到shell启动脚本中,例如~/.bashrc
source ~/.bashrc
2. 下载MySQL源码
从MySQL官方网站下载最新的MySQL源码包:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.30.tar.gz
tar -zxvf mysql-8.0.30.tar.gz
cd mysql-8.0.30
3. 编译和安装MySQL
创建构建目录并配置MySQL:
mkdir build
cd build
cmake3 .. -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost
make
sudo make install
4. 初始化数据库
创建MySQL的用户和组:
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
初始化MySQL数据目录:
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql
sudo chmod 750 /usr/local/mysql/data
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data
5. 配置字符编码
编辑MySQL的配置文件my.cnf
,确保字符编码为UTF-8:
sudo vi /etc/my.cnf
添加以下内容:
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
socket=/var/lib/mysql/mysql.sock
[mysql]
socket=/var/lib/mysql/mysql.sock
6. 配置MySQL为系统服务
创建MySQL的systemd服务文件:
sudo vi /etc/systemd/system/mysql.service
添加以下内容:
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
[Install]
WantedBy=multi-user.target
重新加载systemd配置,启动并启用MySQL服务:
sudo systemctl daemon-reload
sudo systemctl start mysql
sudo systemctl enable mysql
7. 设置MySQL root用户密码
使用临时生成的密码登录并修改root用户密码:
sudo /usr/local/mysql/bin/mysql_secure_installation
按照提示进行操作,设置root用户的新密码,并完成安全性设置。
8. 验证字符编码
登录MySQL并验证字符编码设置是否正确:
/usr/local/mysql/bin/mysql -u root -p
运行以下SQL命令:
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
确保输出结果显示utf8mb4
和utf8mb4_unicode_ci
。