mysql-8.3.0-linux-glibc2.17-x86_64 .tar.xz 安装
1.准备
# 1. 确认 CPU 与 glibc 版本
uname -r # 3.10 及以上即可
ldd --version # 需 ≥ 2.17
# 2. 卸载系统自带 mariadb / 旧 mysql
yum remove -y mariadb* mysql*
# 3. 安装依赖
yum install -y libaio numactl-libs
2.下载 & 解压
cd /usr/local
# 已提前下载好 mysql-8.3.0-linux-glibc2.17-x86_64.tar.xz
tar -xf mysql-8.3.0-linux-glibc2.17-x86_64.tar.xz
mv mysql-8.3.0-linux-glibc2.17-x86_64 mysql
# 以后 /usr/local/mysql 就是 $MYSQL_HOME
3.创建用户与目录
groupadd -g 3306 mysql
useradd -r -g 3306 -u 3306 -s /bin/false mysql
mkdir -p /data/mysql/{data,log,tmp,run}
chown -R mysql:mysql /data/mysql /usr/local/mysql
4.写最小化配置文件
cat > /etc/my.cnf <<'EOF'
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/data/mysql/run/mysql.sock
pid-file=/data/mysql/run/mysqld.pid
port=3306
server_id=1
log_error=/data/mysql/log/error.log
slow_query_log=1
slow_query_log_file=/data/mysql/log/slow.log
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
default_authentication_plugin=mysql_native_password
[client]
socket=/data/mysql/run/mysql.sock
EOF
5.初始化系统表
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
# 末尾会打印临时 root 密码,例如:A temporary password is generated for root@localhost: xxxxxx
6.注册系统服务(可选,但推荐)
# 1. 复制启动脚本
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# 2. systemd 方式(CentOS 7+ 推荐)
cat > /etc/systemd/system/mysqld.service <<'EOF'
[Unit]
Description=MySQL Server 8.3.0
After=network.target
[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/etc/init.d/mysqld start
ExecStop=/etc/init.d/mysqld stop
ExecReload=/etc/init.d/mysqld reload
PrivateTmp=false
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now mysqld
systemctl status mysqld
7.改密码 + 安全设置
# 1. 取得临时密码
grep 'temporary password' /data/mysql/log/error.log
# 2. 登录并改密
/usr/local/mysql/bin/mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass8!';
8.加环境变量(方便直接敲 mysql)
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
9.放行远程(可选)
CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'RemotePass8!';
GRANT ALL ON *.* TO 'admin'@'%' WITH GRANT OPTION;
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
10.验证
mysql -uroot -p -e "SELECT @@version,@@datadir;"
# 应返回 8.3.0 和 /data/mysql/data
11.卸载(如需)
systemctl stop mysqld
systemctl disable mysqld
rm -rf /usr/local/mysql /data/mysql /etc/my.cnf /etc/systemd/system/mysqld.service
userdel -r mysql 2>/dev/null
一条命令合集(复制即可)
# 最小化全自动(已下载 tar.xz 到 /root)
sudo -i
yum remove -y mariadb* mysql*;yum install -y libaio numactl-libs
cd /usr/local && tar -xf /root/mysql-8.3.0-linux-glibc2.17-x86_64.tar.xz
mv mysql-8.3.0-linux-glibc2.17-x86_64 mysql
groupadd -g 3306 mysql && useradd -r -g 3306 -u 3306 -s /bin/false mysql
mkdir -p /data/mysql/{data,log,run} && chown -R mysql:mysql /data/mysql /usr/local/mysql
cat >/etc/my.cnf<<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/data/mysql/run/mysql.sock
port=3306
log_error=/data/mysql/log/error.log
default_authentication_plugin=mysql_native_password
EOF
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && chmod +x /etc/init.d/mysqld
systemctl daemon-reload && systemctl enable --now mysqld
echo 'export PATH=/usr/local/mysql/bin:$PATH'>>/etc/profile && source /etc/profile
THE END

