MySQL的版本已经更新到8.4.8LTS, 这是一个长期支持版本, 在工作框架需求不是特别死板的情况下,我们可以考虑使用最新的MySQL版本,尝试使用其新功能特性.下面楼主我介绍一种比较方便的安装MySQL的方法, 比起手动编译更简单, 比起在线安装更便捷.
MySQL可以到(MySQL :: Download MySQL Community Server)这里下载,选择最新稳定版mysql-8.4.8-linux-glibc2.28-x86_64-minimal.tar.xz, 也可以选择mysql-8.4.8-linux-glibc2.28-x86_64, 但这个版本包含了其他用不到的嵌入式版本,所有这里以简便为主.如图:
系统选择最新的Rocky Linux Rocky-10.1-x86_64-minimal, 安装镜像可以到各大高校的同步镜像去下载.安装rocky的过程这里不是重点,不进行赘述.事实上的情况是, 只要linux系统的glibc的版本大于或者等于MySQL使用的glibc编译版本就可以.查看glibc版本号的方法如下命令:
# ldd --version
在Redhat Enterprise系, 系统glibc的版本分布如下
|----------------------------------------|---------------------|--------------------------------|
| Redhat Enterprise(CentOS/Rocky/Alma)版本 | Gblic版本 | 支持MySQL的glibc编译依赖包的版本 |
| 6.X | ldd (GNU libc) 2.12 | 最高mysql-5.7.44-linux-glibc2.12 |
| 7.X | ldd (GNU libc) 2.17 | 向下兼容, 最高glibc2.17编译的版本 |
| 8.X | ldd (GNU libc) 2.28 | 向下兼容, 最高glibc2.28编译的版本 |
| 9.X | ldd (GNU libc) 2.34 | 向下兼容, 最高glibc2.34编译的版本 |
| 10.X | ldd (GNU libc) 2.39 | 向下兼容, 最高glibc2.39编译的版本 |
接下来开始安装mysql
上传压缩包mysql-8.4.8-linux-glibc2.28-x86_64-minimal.tar.xz到rocky的/opt目录下
解压,做链接:
cd /opt/
xz -d mysql-8.4.8-linux-glibc2.28-x86_64-minimal.tar.xz
tar xvf mysql-8.4.8-linux-glibc2.28-x86_64-minimal.tar
ln -s /opt/mysql-8.4.8-linux-glibc2.28-x86_64-minimal /opt/mysql
创建mysql用户
useradd -r -s /sbin/nologin mysql
创建工作目录:
mkdir -p /opt/mysql/run ; mkdir -p /opt/mysql/data
mkdir -p /opt/mysql/logs; mkdir -p /opt/mysql/etc
授权工作目录
chown -R mysql.mysql /opt/mysql/run ; chown -R mysql.mysql /opt/mysql/logs
chown -R mysql.mysql /opt/mysql/data; chown -R mysql.mysql /opt/mysql/etc
生成配置文件
cat > /opt/mysql/etc/my.cnf << EOF
client
socket = /opt/mysql/run/mysql.sock
mysql
mysqld
port = 3306
socket = /opt/mysql/run/mysql.sock
pid-file=/opt/mysql/run/mysqld.pid
log-error=/opt/mysql/logs/mysqld.log
basedir=/opt/mysql
datadir=/opt/mysql/data
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-external-locking
lower_case_table_names=1
#skip-grant-tables
EOF
ln -s /opt/mysql/etc/my.cnf /etc/my.cnf
--8.x及以上的rhel linux版本,都要做库连接
ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
ln -s /usr/lib64/libncurses.so.6 /usr/lib/libncurses.so.5
ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
ln -s /usr/lib64/libtinfo.so.6 /usr/lib/libtinfo.so.5
把命令行加入PATH
echo "export PATH=$PATH:/opt/mysql/bin" > /etc/profile.d/mysql.sh && chmod a+x /etc/profile.d/mysql.sh && source /etc/profile.d/mysql.sh
mysql --version
初始化数据库
mysqld --initialize-insecure --lower-case-table-names=1 --defaults-file=/opt/mysql/etc/my.cnf --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data
mysql_ssl_rsa_setup --datadir=/opt/mysql/data
#构建MySQL服务
cat > /etc/systemd/system/mysqld.service << EOF
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=/opt/mysql/bin/mysqld --defaults-file=/opt/mysql/etc/my.cnf
LimitNOFILE = 5000
EOF
--启动服务
systemctl daemon-reload
systemctl enable --now mysqld
systemctl restart mysqld
systemctl status mysqld
-- 修改密码,允许远程登录
password='fj#ka98uBW2jimfw38fh'
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY '{password}';ALTER USER 'root'@'localhost' IDENTIFIED BY '{password}' PASSWORD EXPIRE NEVER;UPDATE mysql.user SET host='%' WHERE User='root' AND Host='localhost';"|mysql -u"root"
--检查结果
echo "select host,user from mysql.user"|mysql -uroot -p"${password}"
--防火墙开放端口
firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload && firewall-cmd --list-all
到这里mysql的基本安装过程已经完成. 其他的各类mysql应用场景(olap/oltp)优化可以在此基础上对my.cnf进行修改.