Linux下手动安装部署MySQL8.4
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进行修改.

浙公网安备 33010602011771号