准备工作
下载MySQL
https://dev.mysql.com/downloads/mysql/
MD5: 243d84f7eceef8564d49cbfa8b1d09de
检查系统环境
#检查cpu、内存、磁盘信息
lscpu
free -m
df -h
#检查操作系统版本
cat /etc/redhat-release
#检查系统glibc版本
ldd --version
关闭selinux,放行3306端口
#关闭selinux
sed -i 's/SELINUX\=enforcing/SELINUX\=disabled/g' /etc/selinux/config
setenforce 0
#放行3306端口
firewall-cmd --add-port=3306/tcp --permanent
#重启防火墙更新配置
firewall-cmd --reload
#验证
firewall-cmd --list-all
#编辑hosts文件
echo '192.168.0.38 mysql8' >> /etc/hosts
配置本地YUM
#挂载ISO
mount /dev/sr0 /mnt
df -h
#删除现有repo
cd /etc/yum.repos.d/
rm -rf *
#生成新的
cat >> /etc/yum.repos.d/centos.repo << "EOF"
[Centos7.9]
name=centos7.9
baseurl=file:///mnt
gpgcheck=0
EOF
#重新加载
yum repolist
删除mariadb
yum -y remove mariadb-libs
安装 MySQL 8.4
创建数据库用户、目录
#创建目录,3306为一个实例,如部署多实例请按照下面目录结构创建
mkdir -p /mysql/data/mysql3306
mkdir -p /mysql/app/
mkdir -p /mysql/conf/
mkdir -p /mysql/data/mysql3306/data/
mkdir -p /mysql/data/mysql3306/pid/
mkdir -p /mysql/data/mysql3306/socket/
mkdir -p /mysql/data/mysql3306/log/
mkdir -p /mysql/data/mysql3306/binlog/
mkdir -p /mysql/data/mysql3306/relaylog/
mkdir -p /mysql/data/mysql3306/slowlog/
mkdir -p /mysql/data/mysql3306/tmp/
#创建用户和用户组
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /mysql
passwd mysql
#检查用户和用户组
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
#将安装包上传放在/mysql/app目录下
mv mysql-8.4.0-linux-glibc2.17-x86_64.tar.xz /mysql/app
#修改文件所属用户
chown -R mysql:mysql mysql-8.4.0-linux-glibc2.17-x86_64.tar.xz
#切换到mysql用户
su - mysql
#解压安装包
cd /mysql/app
tar -xvf mysql-8.4.0-linux-glibc2.17-x86_64.tar.xz
#修改目录名
mv mysql-8.4.0-linux-glibc2.17-x86_64 mysql-8.4.0
配置环境变量(mysql用户操作)
cat >> /home/mysql/.bash_profile << "EOF"
MYSQL_HOME=/mysql/app/mysql-8.4
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$MYSQL_HOME/bin
EOF
source ~/.bash_profile
#查看确认
which mysql
#创建参数文件
vi /mysql/conf/my3306.cnf
[mysqld]
server_id = 100
default-storage-engine= InnoDB
basedir=/mysql/data/mysql3306
datadir=/mysql/data/mysql3306/data/
socket=/mysql/data/mysql3306/socket/mysql.sock
log-error=/mysql/data/mysql3306/log/mysqld.log
pid-file=/mysql/data/mysql3306/pid/mysqld.pid
mysql_native_password=ON
#default_authentication_plugin=mysql_native_password
#skip-grant-tables
port=3306
default-time_zone='+8:00'
transaction_isolation=READ-COMMITTED
max_connections=1500
back_log=500
wait_timeout=1800
max_user_connections=800
innodb_buffer_pool_size=1024M
innodb_log_file_size=512M
innodb_log_buffer_size=40M
max_connections=1500
slow_query_log=ON
long_query_time=5
初始化数据库(mysql用户操作)
#初始化数据库
mysqld --defaults-file=/mysql/conf/my3306.cnf --initialize --user=mysql --basedir=/mysql/app/mysql-8.4 --datadir=/mysql/data/mysql3306/data/
#启动数据库
mysqld_safe --defaults-file=/mysql/conf/my3306.cnf --user=mysql &
创建软连接(root用户操作)
su - root
#创建软连接
ln -s /mysql/data/mysql3306/socket/mysql.sock /tmp/mysql.sock
#查看创建情况
ls -l /tmp/mysql.sock
配置开机自启动(root用户操作)
#创建mysql3306.service文件
vi /usr/lib/systemd/system/mysql3306.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/mysql/app/mysql-8.4/bin/mysqld --defaults-file=/mysql/conf/my3306.cnf
LimitNOFILE = 65536
Restart=on-failure # 重启条件
#RestartPreventExitStatus=1 # 退出码为1不重启,即正常shutdown
#ReStartSec=10 # 重启条件满足后等多久自动重启(秒)
#StartLimitInterval=300 # 五分钟内只能重启两次,第三次不重启了
#StartLimitBurst=2 # 五分钟内只能重启两次,第三次不重启了
#TimeoutStartSec=30 # 服务启动的超时时间,单位秒
#TimeoutStopSec=30 # 服务关闭的超时时间,单位秒
#使配置生效
systemctl daemon-reload
systemctl enable mysql3306
systemctl start mysql3306
systemctl status mysql3306
配置 MySQL 8.4
#查看初始化密码
cat /mysql/data/mysql3306/log/mysqld.log | grep password
#首次登陆
mysql -uroot -p
#修改初始密码
alter user root@'localhost' identified by 'abc123';
#检查数据库版本
select version();
#配置远程登录
use mysql
update user set host='%' where user='root';
select user,host,plugin from user;
flush privileges;