当前位置: 首页 > news >正文

【Linux】Ubuntu 22.04 shell实现MySQL5.7 tar 一键安装

参考 https://blog.csdn.net/qq_35995514/article/details/134350572?spm=1001.2014.3001.5501
源文章是centos 的 教程,这里为了大家的方便,再原作者基础上做了修改,记录了ubuntu的22.04的我的配置,加了一个删除原有mysql 的脚本

文章目录

      • 一、安装下载
        • **my.cnf 配置文件**
      • 二、执行安装
        • **install_mysql.sh 安装脚本**
        • 本机免密脚本 ssh_keygen.sh
        • mysql 删除脚本

一、安装下载

img

下载地址:

https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44-el7-x86_64.tar.gz

脚本和tar包结构

img

my.cnf 配置文件
[root@windp-aio opt]# cat config/my.cnf 
[mysql]
socket=/var/lib/mysql/mysql.sock
# set mysql client default chararter
default-character-set=utf8[mysqld]
socket=/var/lib/mysql/mysql.sock
# set mysql server port  
port = 3306
# set mysql install base dir
basedir=/usr/local/mysql
# set the data store dir
datadir=/usr/local/mysql/data
# set the number of allow max connnection
max_connections=200
# set server charactre default encoding
character-set-server=utf8
# the storage engine
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
explicit_defaults_for_timestamp=true
[mysql.server]
user=mysql
basedir=/usr/local/mysql

二、执行安装

install_mysql.sh 安装脚本
#! /bin/bash
#
# Author: dearning
# CreateTime: 2024-09-11
# Desc: install mysql5.7.44 on Ubuntu
#
echo "******** INSTALL MYSQL *********"BASEDIR=$(cd "$(dirname "$0")"; pwd)# 卸载原有的mariadb
OLD_MYSQL=$(dpkg -l | grep mariadb | awk '{print $2}')
for mariadb in $OLD_MYSQL; doapt-get remove --purge -y $mariadb
done# 删除原有的my.cnf
rm -rf /etc/mysql/my.cnf# 添加用户组 用户
groupadd mysql
useradd -g mysql mysql# 解压mysql包并修改名称
tar -zxvf  $BASEDIR/mysql-5.7.44-el7-x86_64.tar.gz -C /usr/local
mv /usr/local/mysql-5.7.44-el7-x86_64 /usr/local/mysql# 更改所属的组和用户
chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysqlmkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/log
chown -R mysql:mysql /usr/local/mysql/data# 粘贴配置文件my.cnf
cp $BASEDIR/config/my.cnf /usr/local/mysql/# 安装mysql
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/# 创建持久的 MySQL 服务文件
if [ ! -f /etc/systemd/system/mysql.service ]; thencat > /etc/systemd/system/mysql.service <<EOF
[Unit]
Description=MySQL Community Server
After=network.target[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf
ExecStop=/usr/local/mysql/bin/mysqladmin -u root -p shutdown
Type=exec
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF
fi# 重新加载系统守护进程
sudo systemctl daemon-reload# 启动mysql
systemctl start mysql# 设置开机启动
systemctl enable mysql# 修改环境变量
ln -s /usr/local/mysql/bin/mysql /usr/bin
ln -s /var/lib/mysql/mysql.sock /tmp/
cat > /etc/profile.d/mysql.sh <<EOF
export PATH=\$PATH:/usr/local/mysql/bin
EOFmysqlPw=$(sed -n 2p /root/.mysql_secret)
mysqlPwTMP=$(sed -n 2p /root/.mysql_secret)1
mysqlNewPw=sjc123
hostname=$(hostname)ssh $hostname "source /etc/profile; mysqladmin -h127.0.0.1 -uroot -p'\$mysqlPw' password '\$mysqlPwTMP'; mysqladmin -h127.0.0.1 -uroot -p'\$mysqlPwTMP' password '\$mysqlNewPw'; exit"echo "******** MYSQL installation completed *******"

执行完脚本 成功登录

img

ssh 操作需要免密 附上

本机免密脚本 ssh_keygen.sh
#! /bin/bash
#
# Author: dearning
# CreateTime: 2024-09-11
# Desc: 本机免密
#
set -x# 获取本机 IP
ip=$(hostname -I | awk '{print $1}')
ssh_hosts=${ip}
ssh_networkname=(windp-aio)
ssh_passwd=winner@001# 安装 expect
if ! command -v expect &> /dev/null; thenecho "安装 expect 命令"sudo apt-get updatesudo apt-get install -y expect
fi ################################
# 生成 SSH 公钥
################################
create_ssh_pub(){echo "生成本地 SSH 公钥"/usr/bin/expect << eofset timeout 30spawn ssh-keygen -t rsa -b 2048expect {"Enter file in which to save the key*" { send "\n"; exp_continue }"Overwrite (y/n)?" { send "y\n"; exp_continue }"Enter passphrase (empty for no passphrase):" { send "\n"; exp_continue }"Enter same passphrase again:" { send "\n"; exp_continue }}
eof
}if [ ! -f ~/.ssh/id_rsa.pub ]; thencreate_ssh_pub
fi#################################
# 复制 SSH 公钥到对应的主机上
#################################
config_copy_ssh(){echo "复制公钥到对应的主机上"/usr/bin/expect << eofset timeout 30spawn ssh-copy-id -i ~/.ssh/id_rsa.pub $1@$2expect {"Are you sure you want to continue connecting (yes/no)?" { send "yes\n"; exp_continue }"password:" { send "${ssh_passwd}\n"; exp_continue }}
eof
}for name in ${ssh_networkname[*]}; dotimeout 5 ssh root@${name} "echo ${name}: 'This is success!'"if [[ $? -ne 0 ]]; thenecho "复制公钥到: ${name}"config_copy_ssh root ${name} > /dev/nullfi
doneecho "SSH 免密登录设置完成。"
mysql 删除脚本

rm_mysql.sh

sudo systemctl stop mysql
sudo systemctl disable mysql
sudo userdel mysql
sudo groupdel mysql
sudo rm -rf /var/lib/mysql
sudo rm -rf /tmp/mysql.sock
sudo rm -rf /usr/bin/mysql
sudo rm -rf /tmp/mysql.sock
sudo rm -rf /usr/local/mysql
sudo rm -f /etc/mysql/my.cnf
sudo rm -f /etc/init.d/mysqld
sudo rm -f /etc/systemd/system/mysql.service
sudo rm -f /lib/systemd/system/mysql.service
sudo rm -f /etc/profile.d/mysql.sh

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LeetCode[中等] 合并区间
  • C++ | Leetcode C++题解之第400题第N位数字
  • unity3d入门教程六
  • [001-03-007].第07节:Redis中的管道
  • 【python报错已解决】`ModuleNotFoundError: No module named ‘requests‘`
  • 中级练习[4]:Hive SQL商品销售与用户增长数据分析
  • python使用Pyvis库绘制B站评论互动网络结构图
  • LeetCode70:爬楼梯
  • 后端入门 (JQuery基础) 01
  • Python 正则表达式详解:从基础匹配到高级应用
  • AIGC实战——多模态模型Flamingo
  • 手势开关灯
  • 上海泗博EtherNet/IP转PROFIBUS DP网关EPS-320IP成都地铁项目应用案例
  • Router安装以及导入
  • SRT3D: A Sparse Region-Based 3D Object Tracking Approach for the Real World
  • CentOS 7 防火墙操作
  • centos安装java运行环境jdk+tomcat
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Promise面试题,控制异步流程
  • Redux 中间件分析
  • Terraform入门 - 1. 安装Terraform
  • vue-cli在webpack的配置文件探究
  • Vue实战(四)登录/注册页的实现
  • 构建工具 - 收藏集 - 掘金
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 使用权重正则化较少模型过拟合
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 小而合理的前端理论:rscss和rsjs
  • 《天龙八部3D》Unity技术方案揭秘
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • (16)Reactor的测试——响应式Spring的道法术器
  • (C#)获取字符编码的类
  • (day 12)JavaScript学习笔记(数组3)
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (八)c52学习之旅-中断实验
  • (动态规划)5. 最长回文子串 java解决
  • (全注解开发)学习Spring-MVC的第三天
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .Net--CLS,CTS,CLI,BCL,FCL
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [2018-01-08] Python强化周的第一天
  • [BUUCTF 2018]Online Tool
  • [bzoj1038][ZJOI2008]瞭望塔
  • [C++]spdlog学习
  • [C++基础]-初识模板
  • [CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 视觉模型篇
  • [CODE:-5504]没有[SYS.SYSOBJECTS]对象的查询权限