Mysql 8.4.3LTS 的离线部署

打印 上一主题 下一主题

主题 826|帖子 826|积分 2480

一、部署情况

软件:mysql8.4.3LTS
体系:ubuntu24.04
资源设置

   资源分配的巨细与业务体系的体量有关系;所以没有固定
  CPU: 2核
内存: 4 GB
磁盘: 50 GB sda[体系盘] 50GB, 默认分区
sdc[数据盘] 100GB 挂载点 /dcdata
二、下载地址

MySQL :: Download MySQL Community Server

版本选择

由于我的操纵体系比较新, 通过 ldd --version 命令查看glibc版本为2.39,所以选择了 glibc 2.28的版本
**注:**假如操纵体系支持的话还是选择新的;但是思量兼容性和维护性,我个人的部署脚本中目前选择的还是glibc2.17的包;
演示利用的是glibc2.28版本的包,后续我也将这个版本的Mysql部署到开发和测试情况中利用,组员一起体验他的稳定性和性能。
三、部署详情

1. 上传安装包

将安装包上传到服务器中,利用root用户安装,上传路径
/root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz

2. 解压软件包

安装包上传后,执行解压到/dcsm目次下
  1. # 新建dcsm文件夹
  2. mkdir /dcsm
  3. tar -xvf /root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz -C /dcsm
  4. cd /dcsm && mv mysql-8.4.3-linux-glibc2.28-x86_64/ mysql
复制代码
3. 安装mysql

3.3.1 创建mysql用户与用户组

查询体系中是否存在mysql用户
  1. cat /etc/passwd | cut -f1 -d':' | grep -w "mysql" -c
  2. groupadd mysql && useradd -r -g mysql -s /bin/false mysql
复制代码

3.3.2 授权安装文件夹

  1. # 创建相关文件夹
  2. mkdir -p /dcdata/mysql/log && mkdir -p /dcdata/mysql/data && mkdir -p /dcdata/mysql/run && mkdir -p /dcdata/mysql/lib
  3. # 授权
  4. chown -R mysql:mysql /dcsm/mysql && chown -R mysql:mysql /dcdata/mysql
复制代码

3.3.3 安装libaio依赖 (坑)

这个依赖是和你操纵体系版本有关系的;
ubuntu24.04 中关于libaio的坑

该体系在安装后自带libaio

固然whereis搜不到libaio.so.1 这个文件; 但体系中确实安装了 libaio;
这也是我后续初始化依然报错的缘故原由;解决办法就是创建超链接,让mysql在初始化的时间找到这个命令
  1. ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1
复制代码

这里先容查找方法;
找一台和你镜像一样,或者操纵体系版本一样的可以联网的机器;
apt search libaio

去/var/cache/apt/archives/ 下找到这个离线deb包; 在离线情况下就可以直接dpkg -i 安装这个依赖包了
注:假如不安装此依赖,后续初始化mysql数据库时会提示缺少此依赖,官网教程中也特意提到要安装这个依赖。
3.3.4 初始化Mysql数据库

  1. cd /dcsm/mysql
  2. # 初始化
  3. bin/mysqld --initialize --user=mysql --basedir=/dcsm/mysql --datadir=/dcdata/mysql/data --log-error=/dcdata/mysql/log/mysqld.log
复制代码

注:这是ubuntu24.04 上的坑。体系的 libaio.so.1 软毗连的地址不存在;
解决方法就是重新创建一个软链接
  1. ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1
复制代码
3.3.5 编辑my.cnf

/etc/my.cnf
  1. [mysqld]
  2. # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
  3. #innodb_buffer_pool_size = 128M
  4. # join_buffer_size = 128M
  5. # sort_buffer_size = 2M
  6. # read_rnd_buffer_size = 2M
  7. basedir=/dcsm/mysql
  8. datadir=/dcdata/mysql/data
  9. socket=/dcdata/mysql/lib/mysql.sock
  10. port=3306
  11. log-error=/dcdata/mysql/log/mysqld.log
  12. pid-file=/dcdata/mysql/run/mysqld.pid
  13. # 开启远程,类似dblink
  14. federated
  15. log_bin_trust_function_creators=1
  16. # 时间跟随本地
  17. log_timestamps=system
  18. # 允许最大连接数
  19. max_connections=2000
  20. # 关闭binlog日志
  21. skip-log-bin
  22. [mysql]
  23. socket=/dcdata/mysql/lib/mysql.sock
复制代码
3.3.6 设置情况变量

  1. ### 添加到系统服务中
  2. cp /dcsm/mysql/support-files/mysql.server /etc/init.d/mysql  && chmod +x /etc/init.d/mysql
  3. ### 配置到环境变量中
  4. echo "/dcsm/mysql/lib" >>/etc/ld.so.conf &&
  5. echo "#MYSQL ENVIRONMENT" >>/etc/profile &&
  6. echo "export PATH=/dcsm/mysql/bin:/dcsm/mysql/lib:\$PATH" >>/etc/profile &&
  7. source /etc/profile
复制代码
3.3.7 启动mysql

  1. ### 重新加载systemd的配置信息
  2. systemctl daemon-reload
  3. systemctl start mysql
复制代码

设置开机启动

systemctl enable mysql
3.3.8 登录mysql

获取初始化暗码
  1. grep 'temporary password' /dcdata/mysql/log/mysqld.log | awk '{print $NF}'
复制代码

3.3.8.1 创建root

创建mysql账号root,并设置暗码
mysql --connect-expired-password -uroot -p
然后输入上述暗码;
连上mysql后,修改root暗码,
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘MyNewPass’;

缘故原由参考:[MySQL8.0.34 开始被弃用mysql_native_password插件](https://dev.mysql.com/doc/refman/8.4/en/native-pluggable-authentication.html#:~:text=MySQL client programs in MySQL 8.4 (and later),what is desired%2C like this%3A %24> mysql --default-auth%3Dmysql_native_password)
3.3.8.2 Plugin ‘mysql_native_password’ is not load 两种解决办法

重新启动该插件(不推荐)

具体做法就是修改my.cnf 文件

重启mysql,即可生效;
利用官方推荐方式

  1. ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
复制代码
3.3.8.3 授权

  1. use mysql; update user set host = '%' where user ='root'; flush privileges;
复制代码
至此部署完成~
四、快速部署脚本

该脚本适用于快速部署利用,请注意安装包版本与体系版本;
我用的是ubuntu24.04, mysql8.4.3tls
vim deploy_mysql.sh
  1. #!/bin/bash### 假设安装包已上传到/root下### 解压软件包mkdir /dcsmtar -xvf /root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz -C /dcsmcd /dcsm && mv mysql-8.4.3-linux-glibc2.28-x86_64/ mysql### 创建 mysql 用户与用户组if [ $(cat /etc/passwd | cut -f1 -d':' | grep -w "mysql" -c) -eq 0 ]; then    groupadd mysql && useradd -r -g mysql -s /bin/false mysqlfi### 授权安装文件夹mkdir -p /dcdata/mysql/log && mkdir -p /dcdata/mysql/data && mkdir -p /dcdata/mysql/run && mkdir -p /dcdata/mysql/libchown -R mysql:mysql /dcsm/mysql && chown -R mysql:mysql /dcdata/mysql### 创建软链接ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1
  2. ### 初始化 Mysqlcd /dcsm/mysqlbin/mysqld --initialize --user=mysql --basedir=/dcsm/mysql --datadir=/dcdata/mysql/data --log-error=/dcdata/mysql/log/mysqld.log# 3.3.5 编辑 my.cnfcat <<EOF > /etc/my.cnf[mysqld]# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.#innodb_buffer_pool_size = 128M# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2Mbasedir=/dcsm/mysqldatadir=/dcdata/mysql/datasocket=/dcdata/mysql/lib/mysql.sockport=3306log-error=/dcdata/mysql/log/mysqld.logpid-file=/dcdata/mysql/run/mysqld.pid# 开启远程,雷同 dblinkfederatedlog_bin_trust_function_creators=1# 时间跟随本地log_timestamps=system# 允许最大毗连数max_connections=2000# 关闭 binlog 日志skip-log-bin[mysql]socket=/dcdata/mysql/lib/mysql.sockEOF### 设置情况变量cp /dcsm/mysql/support-files/mysql.server /etc/init.d/mysql && chmod +x /etc/init.d/mysqlecho "/dcsm/mysql/lib" >>/etc/ld.so.confecho "#MYSQL ENVIRONMENT" >>/etc/profileecho "export PATH=/dcsm/mysql/bin:/dcsm/mysql/lib:\$PATH" >>/etc/profilesource /etc/profile### 启动 mysqlsystemctl daemon-reloadsystemctl start mysqlsystemctl enable mysql### mysql修改暗码 并允许远程initial_password=$(grep 'temporary password' /dcdata/mysql/log/mysqld.log | awk '{print $NF}'
  3. )mysql --connect-expired-password -uroot -p"$initial_password" <<EOFALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
  4. use mysql; update user set host = '%' where user ='root'; flush privileges;
  5. EOFsource /etc/profile
复制代码
脚本授权
chmod +x deploy_mysql.sh
执行部署
./deploy_mysql.sh

毗连乐成;


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南七星之家

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表