1.基础准备(防火墙/SELinux/常用工具)
# 可选:关闭防火墙(实验环境)
systemctl stop firewalld
systemctl disable firewalld
# 可选:关闭 SELinux(需要重启一次)
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
[root@server2 ~]# cat /etc/yum.repos.d/CentOS-Vault.repo
[base]
name=CentOS-7 - Base
baseurl=http://vault.centos.org/7.9.2009/os/x86_64/
gpgcheck=0
enabled=1
gpgkey=http://vault.centos.org/7.9.2009/os/x86_64/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-7 - Updates
baseurl=http://vault.centos.org/7.9.2009/updates/x86_64/
gpgcheck=0
enabled=1
gpgkey=http://vault.centos.org/7.9.2009/os/x86_64/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-7 - Extras
baseurl=http://vault.centos.org/7.9.2009/extras/x86_64/
gpgcheck=0
enabled=1
gpgkey=http://vault.centos.org/7.9.2009/os/x86_64/RPM-GPG-KEY-CentOS-7
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://vault.centos.org/7.9.2009/sclo/x86_64/rh/
gpgcheck=0
enabled=1
gpgkey=http://vault.centos.org/7.9.2009/os/x86_64/RPM-GPG-KEY-CentOS-7
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://vault.centos.org/7.9.2009/sclo/x86_64/sclo/
gpgcheck=0
enabled=1
gpgkey=http://vault.centos.org/7.9.2009/os/x86_64/RPM-GPG-KEY-CentOS-7
# 常用工具
yum install -y vim bash-completion net-tools wget bzip2 ncurses-devel openssl* devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils
#启用 devtoolset-11
scl enable devtoolset-11 bash
gcc --version
gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
cd /usr/local/src
wget https://archives.boost.io/release/1.77.0/source/boost_1_77_0.tar.bz2
tar xvf boost_1_77_0.tar.bz2
mv boost_1_77_0 boost
tar zxvf cmake-3.27.9.tar.gz
cd cmake-3.27.9
./bootstrap
make -j$(nproc)
make install
[root@server2 cmake-3.27.9]# cmake --version
cmake version 3.27.9
2.安装 cmake3 boost
3.编译MySQL
cd /usr/local/src
tar zxvf mysql-8.0.40.tar.gz
mkdir -p mysql_build
cd mysql_build
cmake ../mysql-8.0.40 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DWITH_SSL=system -DWITH_ZLIB=bundled -DWITH_BOOST=/usr/local/src/boost -DDOWNLOAD_BOOST=OFF -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_0900_ai_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_DEBUG=0
make -j 6 && make install
4.编辑配置文件
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql #mysql安装目录
datadir=/data/mysql/data #mysql数据存放目录
port=3306 #mysql监听端口
socket=/usr/local/mysql/mysql.sock #mysql.sock文件存放目录
symbolic-links=0 #关闭mysql的符号链接
character-set-server=utf8 #指定mysql的字符集为utf8
log-error=/data/mysql/log/mysqld.log #指定mysql的错误日志存放路径
pid-file=/usr/local/mysql/mysqld.pid #mysql的pid文件存放目录 #default_authentication_plugin=mysql_native_password #设置默认认证插件 authentication_policy=mysql_native_password #控制多因素认证策略
[client]
socket=/usr/local/mysql/mysql.sock port=3306
5.设置服务启动用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /data/mysql/data
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql
6.初始化数据库
mkdir -p /data/mysql/{log,data}
chown -R mysql:mysql /data/mysql
cd /usr/local/mysql/bin
./mysqld --initialize \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/data/mysql/data
7.编辑服务管理脚本
sudo tee /etc/systemd/system/mysqld.service << 'EOF'
[Unit]
Description=MySQL Server 8.0
After=network.target syslog.target
[Service]
Type=notify
User=mysql
Group=mysql
# 直接以 mysqld 启动,最稳定
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
ExecStop=/usr/local/mysql/bin/mysqladmin --defaults-file=/etc/my.cnf -u root shutdown
LimitNOFILE=65535
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl restart mysqld
systemctl status mysqld
ln -s /usr/local/mysql/bin/* /usr/bin/
查看初始密码
cat /data/mysql/log/mysqld.log |grep root@localhost
修改root密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '654321';