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

news2024/11/14 11:59:48

参考 https://blog.csdn.net/qq_35995514/article/details/134350572?spm=1001.2014.3001.5501
在原作者基础上做了修改,加了一个删除原有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; do
    apt-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/mysql

mkdir -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 ]; then
    cat > /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
EOF

mysqlPw=$(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; then
    echo "安装 expect 命令"
    sudo apt-get update
    sudo apt-get install -y expect
fi 

################################
# 生成 SSH 公钥
################################
create_ssh_pub(){
    echo "生成本地 SSH 公钥"
    /usr/bin/expect << eof
    set timeout 30
    spawn ssh-keygen -t rsa -b 2048
    expect {
        "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 ]; then
    create_ssh_pub
fi

#################################
# 复制 SSH 公钥到对应的主机上
#################################
config_copy_ssh(){
    echo "复制公钥到对应的主机上"
    /usr/bin/expect << eof
    set timeout 30
    spawn ssh-copy-id -i ~/.ssh/id_rsa.pub $1@$2
    expect {
        "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[*]}; do
    timeout 5 ssh root@${name} "echo ${name}: 'This is success!'"
    if [[ $? -ne 0 ]]; then
        echo "复制公钥到: ${name}"
        config_copy_ssh root ${name} > /dev/null
    fi
done

echo "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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2125315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

上汽大众:存储成本节约85%,查询性能提升5倍|OceanBase案例

近日&#xff0c;上汽大众汽车有限公司&#xff08;简称“上汽大众”&#xff09;的积分卡券等关键业务系统&#xff0c;已成功升级至 OB Cloud 云数据库。借助 OceanBase 原生分布式数据库的卓越性能与先进技术&#xff0c;实现了存储成本的大幅降低&#xff0c;高达85%&#…

解锁多语言洞察力:使用 Python、LangChain 和 Vector Database 翻译数据集

作者&#xff1a;来自 Elastic Jessica Garson 将数据集从一种语言翻译成另一种语言可能是一种强大的工具。你可以深入了解以前可能无法获得的数据集&#xff0c;例如检测新的模式或趋势。使用 LangChain&#xff0c;你可以获取数据集并将其翻译成你选择的语言。翻译数据集后&a…

游戏出海迎新变局——海外游戏市场有哪些新趋势和新机遇?

游戏出海的热度越来越高&#xff0c;也面临着竞争加剧、门槛提升、成本增加的现实环境&#xff0c;游戏出海有哪些新变化和新趋势&#xff1f; 移动游戏出海的主要海外市场 在海外市场分布方面&#xff0c;美日韩仍然是我国移动游戏重要的海外市场&#xff0c;占据了中国出海…

mfc140u.dll丢失有啥方法能够进行修复?分享几种mfc140u.dll丢失的解决办法

你是否曾遇到过这样的情况&#xff1a;当你满怀期待地打开一个应用程序时&#xff0c;却被一个错误提示拦住了去路&#xff0c;提示信息中指出 mfc140u.dll 文件丢失。这个问题可能会让你感到困惑和无助&#xff0c;但是不要担心&#xff0c;本文将为你详细解读 mfc140u.dll 丢…

给孩子选台灯什么品牌好?看儿童护眼灯推荐测评挑选护眼台灯!

儿童的视力健康是每个家庭都非常关注的问题。当前&#xff0c;近视问题在全球范围内日益严重&#xff0c;尤其是在中国&#xff0c;近视率高企不下&#xff0c;并且呈现出年轻化、低龄化的趋势。随着课业负担的增加和电子产品的普及&#xff0c;儿童近视的问题变得更加突出。我…

超490万预订,华为三折叠屏手机凭什么卖爆?

“3nm制程芯片不是消费者买手机的核心理由&#xff1f;” 作者 | 魏 强 编辑 | 卢旭成 9月10日&#xff0c;华为手机在苹果秋季发布会&#xff08;北京时间9月10日凌晨&#xff09;之后紧跟着发布华为Mate XT非凡大师(以下简称非凡大师XT)三折叠屏手机&#xff0c;售价从19…

摩托车一键启动系统功能特点

摩托车一键启动的方法是&#xff1a;长按遥控钥匙上的启动按钮&#xff0c;即可启动摩托车发动机‌。这种配置通常需要安装&#xff0c;为骑行者带来了更为舒适的体验‌。 移动管家摩托车一键启动系统具有以下功能特点&#xff1a; ‌智能化‌&#xff1a;无需原车钥匙或原车…

2024年9月10日嵌入式学习

今日主要学习了缓冲帧。 Framebuffer&#xff08;帧缓冲&#xff09;是Linux系统为显示设备提供的一套应用程序接口&#xff0c;它将显存抽象为一种设备&#xff0c;允许上层应用程序在图形模式下直接进行显示缓冲区的读写操作。 原理&#xff1a;通过内存映射技术向显存空间…

学习pyqt5相关知识回顾

1. 模块 1.1 import导入 1) 模块:是一系列功能的集合体,模块名.功能名,就可以使用模块的功能 2) 首次导入模块,就会立即执行模块里面的内容 3) 当前名称空间会产生一个名字module,指向module.py产生的名称空间.我们可以使用module.name/函数名,来调用module.py里面的内容. …

计算机网络 --- 【1】欢迎来到计算机网络/计算机网络基本概念/计算机网络、互连网、互联网的区别

目录 一、计算机网络学什么&#xff1f; 二、 什么是计算机网络&#xff1f;计算机网络、互联网(因特网&#xff0c;Internet)、互连网(internet)之间的区别&#xff1f; 2.1 计算机网络的定义 2.2 计算机网络与互连网的区别 2.3 互连网 三、总结部分 一、计算机网络学…

从品牌战略到品牌知名度:实现持续增长和客户忠诚度的关键。

每家公司都希望自家的品牌、产品或服务能在市场上首屈一指。当你问创始人和CEO们他们的愿景时&#xff0c;他们常常会告诉你&#xff0c;他们想要成为行业中的“ 第一”或者成为“ 行业领袖”。 作为市场营销人员&#xff0c;我们都希望我们所运营的品牌能做到这一点——成为第…

python获取双色球数据解析

先用python GET网页源码 这里我们用GET参考的双色球频道_往期回顾​​​​​​ 因为不同的网站源码不一样,主要讲解思路 soup BeautifulSoup(html, html.parser) 用BS解析后,使用 lottery_info soup.find_all(tr)#根据tr标签找到开奖所有的期号行 先找到所有的tr行,因为…

线性方程组求解——预处理Preconditioning介绍

为什么需要预处理&#xff1f; 工程中出现的大规模线性方程组往往是病态的, 对数值求解带来很大的困难: ▶ 使得迭代法(比如Krylov 子空间迭代法) 收敛变得非常缓慢 ▶ 对数值解的精度产生很大的影响(在有限精度计算情形下) 对于第一个问题, 当前的有效处理方法是预处理, 预处…

AIO不止有群晖,极空间虚拟机部署免费开源的『TrueNAS』

AIO不止有群晖&#xff0c;极空间虚拟机部署免费开源的『TrueNAS』 哈喽小伙伴们好&#xff0c;我是Stark-C~ 很多小伙伴在买到极空间的NAS之后&#xff0c;总要各种折腾&#xff0c;毕竟配置高&#xff0c;硬件强&#xff0c;折腾起来也确实得心应手&#xff0c;乐趣多多。 …

Android相关线程基础

线程基础 进程与线程 进程:可以被看做是程序的实体, 是系统进行资源分配和调度的基本单位. 线程:是操作系统调度的最小单元, 也叫轻量级进程 使用多线程的优点 可以减少程序的响应时间。如果某个操作很耗时, 能够避免陷入长时间的等待, 从而有着更好的交互性. 线程较之进…

Android V 广播注册和配置注意事项问题

现象 在Android V平台上&#xff0c;应用注册非Protected广播时&#xff0c;如果没有加导出flag会抛出异常导致进程crash。 E/AndroidRuntime: FATAL EXCEPTION: main java.lang.SecurityException: com.demo.myapplication: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORT…

【运维监控】Prometheus+grafana监控zookeeper运行情况

本示例通过zookeeper自带的监控信息暴露出来&#xff0c;然后将数据收集到prometheus中&#xff0c;最后通过grafana的dashboard导入模板进行可视化。本示例分为三个部分&#xff0c;即prometheus、grafana部署和最后的集成。说明&#xff1a;本示例中的部署环境没有要求&#…

BC173 牛牛逆序输出(c 语言)

1.// 描述 //牛牛在尝试把一个整数逆序地输出。 //输入描述&#xff1a; //输入一个正整数 n。保证个位数不是 0 //输出描述&#xff1a; //逆序输出这个正整数。 //2345 //5432 2.我们先输入n,然后我们进行取余&#xff0c;然后将余数存储起来在arr中&#xff0c;然后除10。…

用 Python 和 Tkinter 做游戏?5分钟打造Python贪吃蛇游戏

大家好&#xff01;贪吃蛇游戏是一款经典的休闲游戏&#xff0c;相信大家都不陌生。 今天&#xff0c;我们将用 Python 的 Tkinter 库快速创建一个贪吃蛇游戏。你不需要成为一个编程专家&#xff0c;只需跟着本文的步骤走&#xff0c;你就可以亲手制作属于自己的贪吃蛇游戏&am…

TikTok Shop9.9大促爆单忙不过来?EasyBoss ERP给你全方位的助力!

又是一年9.9大促&#xff0c;想必大多数Shopee/TikTok本土卖家的店铺订单量都远超日常了吧&#xff1f; 图源&#xff1a;网络 爆单是件大好事&#xff0c;但背后却是店铺运营的一场硬仗。因为出单后&#xff0c;多店铺的订单处理、仓库发货、售后、数据分析等环节都有大量的工…