shell脚本自动安装MySQL8

  • 环境:centos7
  • 版本:8.0.28
  • 安装包:mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz 二进制包
  • 要求:安装包和shell脚本在同一目录下
  • 执行方式:sudo ./install_mysql8.sh
#!/bin/bash


# 定义MySQL安装目录和压缩包名称

MYSQL_DIR="/usr/local/mysql-8.0.28-linux-glibc2.12-x86_64"

MYSQL_TAR="mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz"

  

# 检查MySQL目录是否存在,不存在则解压并创建符号链接

if [ ! -d "$MYSQL_DIR" ]; then

    echo "正在解压MySQL安装包..."

    tar -xvf "$MYSQL_TAR" -C /usr/local/

    ln -s "$MYSQL_DIR" /usr/local/mysql

else

    echo "MySQL安装包已存在,跳过解压。"

fi

  

# 检查MySQL用户是否存在,不存在则创建

if ! id -u mysql >/dev/null 2>&1; then

    echo "正在创建MySQL用户和组..."

    groupadd mysql

    useradd -r -g mysql -s /bin/false mysql

else

    echo "MySQL用户已存在,跳过创建。"

fi

  

# 检查MySQL配置文件是否存在,不存在则创建

if [ ! -f /etc/mysql/my.cnf ]; then

    echo "正在创建MySQL配置文件..."

    mkdir -p /etc/mysql

    cat > /etc/mysql/my.cnf <<EOF

[client]

socket=/var/lib/mysql/mysql.sock

  

[mysql]

prompt=(\\u@\\h) [\\d]>\\_    # 更改MySQL客户端命令>前面显示内容

  

[mysqld]

port=3306

user=mysql

socket=/var/lib/mysql/mysql.sock

datadir=/usr/local/mysql/data

log_error=error.log

EOF

else

    echo "MySQL配置文件已存在,跳过创建。"

fi

  

# 检查MySQL数据目录是否存在,不存在则初始化数据库

if [ ! -d /usr/local/mysql/data ]; then

    echo "正在初始化MySQL数据库..."

    cd /usr/local/mysql

    mkdir -p mysql-files

    chown mysql:mysql mysql-files

    chmod 750 mysql-files

    bin/mysqld --initialize --user=mysql

  

    # 获取临时root密码

    echo "等待MySQL生成临时密码..."

    for i in {1..30}; do

        if [ -f /usr/local/mysql/data/error.log ]; then

            temp_password=$(grep 'temporary password' /usr/local/mysql/data/error.log | awk '{print $NF}')

            if [ -n "$temp_password" ]; then

                echo "MySQL临时密码: $temp_password"

                break

            fi

        fi

        sleep 1

    done

  

    if [ -z "$temp_password" ]; then

        echo "无法获取MySQL临时密码,请检查/usr/local/mysql/data/error.log"

        exit 1

    fi

else

    echo "MySQL数据目录已存在,跳过初始化。"

fi

  

# 检查systemd服务文件是否存在,不存在则创建

if [ ! -f /etc/systemd/system/mysqld.service ]; then

    echo "正在创建systemd服务文件..."

    cat > /etc/systemd/system/mysqld.service <<EOF

[Unit]

Description=MySQL Server

After=network.target

  

[Service]

User=mysql

Group=mysql

ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/mysql/my.cnf

ExecStop=/usr/local/mysql/bin/mysqladmin shutdown

Restart=on-failure

  

[Install]

WantedBy=multi-user.target

EOF

else

    echo "systemd服务文件已存在,跳过创建。"

fi

  

if [ ! -d /var/lib/mysql/ ]; then

    mkdir /var/lib/mysql/

    chown -R mysql:mysql /var/lib/mysql

    chmod 750 /var/lib/mysql

else

    echo "/var/lib/mysql目录已存在,跳过创建。"

fi

  

# 启动并启用MySQL服务

systemctl daemon-reload

systemctl start mysqld

systemctl enable mysqld

  

# 配置环境变量

if ! grep -q '/usr/local/mysql/bin' /etc/profile; then

    echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile

    # 直接修改当前 Shell 的环境变量

    export PATH=$PATH:/usr/local/mysql/bin

    echo "环境变量已添加到 /etc/profile 并立即生效。"

    echo "如需全局生效,请手动执行以下命令:"

    echo "source /etc/profile"

else

    echo "环境变量已配置,跳过。"

fi

  

# 检查MySQL是否安装成功

if mysql --version >/dev/null 2>&1; then

    echo "MySQL 8 安装成功!"

else

    echo "MySQL 安装失败,请检查日志。"

    exit 1

fi

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习入门实战】基于Keras的手写数字识别实战(附完整可视化分析)

​ 本人主页:机器学习司猫白 ok,话不多说,我们进入正题吧 项目概述 本案例使用经典的MNIST手写数字数据集,通过Keras构建全连接神经网络,实现0-9数字的分类识别。文章将包含: 关键概念图解完整实现代码训练过程可视化模型效果深度分析环境准备 import numpy as np impo…

kafka生产端之架构及工作原理

文章目录 整体架构元数据更新 整体架构 消息在真正发往Kafka之前&#xff0c;有可能需要经历拦截器&#xff08;Interceptor&#xff09;、序列化器&#xff08;Serializer&#xff09;和分区器&#xff08;Partitioner&#xff09;等一系列的作用&#xff0c;那么在此之后又会…

docker compose部署flink集群

本次部署2个jobmanager和3个taskmanager 一、部署zookeeper集群 flink使用zookeeper用作高可用 部署集群参考&#xff1a;docker compose部署zookeeper集群-CSDN博客 二、创建目录及配置文件 创建timezone文件&#xff0c;内容填写Asia/Shanghai 手动创建目录&#xff1a…

3dtiles——Cesium ion for Autodesk Revit Add-In插件

一、说明&#xff1a; Cesium已经支持3dtiles的模型格式转换&#xff1b; 可以从Cesium官方Aesset中上传gltf等格式文件转换为3dtiles&#xff1b; 也可以下载插件&#xff08;例如revit-cesium插件&#xff09;转换并自动上传到Cesium官方Aseet中。 Revit转3dtiles插件使用…

html文件怎么转换成pdf文件,2025最新教程

将HTML文件转换成PDF文件&#xff0c;可以采取以下几种方法&#xff1a; 一、使用浏览器内置功能 打开HTML文件&#xff1a;在Chrome、Firefox、IE等浏览器中打开需要转换的HTML文件。打印对话框&#xff1a;按下CtrlP&#xff08;Windows&#xff09;或CommandP&#xff08;M…

Linux(socket网络编程)TCP连接

Linux&#xff08;socket网络编程&#xff09;TCP连接 基础文件目录函数系统进程控制函数fork()exec系列函数void abort(void)void assert(int expression)void exit(int status)void _exit(int status)int atexit(void (*func)(void))int on_exit(void (*function)(int,void*)…

GeekPad智慧屏编程控制(二)

前面已经实现了智慧屏开关的控制了&#xff0c;接下来再继续实现消息的订阅。 先如下图所示增加几个控件&#xff0c;一个按钮&#xff0c;2个文本框&#xff0c;其中右下角的文本框显示的内容会比较多&#xff0c;需要打开多行和右侧滚动条。 然后添加订阅消息的事件&#xf…

Postgresql 开发环境搭建指南(WindowsLinux)

一、Postgresql 简介 PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS)&#xff0c;在灵活的BSD许可证下发行。 RDBMS 是关系数据库管理系统&#xff0c;是建立实体之间的联系&#xff0c;最后得到的是关系表。 ORDBMS在原来关系数据库的基础上&#xff0c;增加了一些新…

设备智能化无线通信,ESP32-C2物联网方案,小尺寸芯片实现大功能

在科技飞速发展的当下&#xff0c;我们的生活正被各类智能设备悄然改变&#xff0c;它们如同一位位无声的助手&#xff0c;渗透到我们生活的每一个角落&#xff0c;让生活变得更加便捷和丰富多彩。 智能插座、智能照明和简单家电设备在家居领域的应用&#xff0c;为我们的生活…

Unity 编辑器热更C# FastScriptReload

工具源码&#xff1a;https://github.com/handzlikchris/FastScriptReload 介绍 用于运行时修改C#后能快速重新编译C#并生效&#xff0c;避免每次改C#&#xff0c;unity全部代码重新编译&#xff0c;耗时旧且需要重启游戏。 使用 需要手动调整AssetPipeline自动刷新模式&…

kbengine服务器和 数据库 系统路径配置

一、服务器 系统路径配置 二、mysql5.7.44 系统路径配置 mysql 压缩包安装方式 解压压缩包&#xff0c;将解压路径加入 系统环境。 或者 系统变量新增 变量名&#xff1a;MYSQL_HOME 变量值&#xff1a;C:\MyPrograms\mysql-8.0.12-winx64修改系统变量的 path 变量&#xff…

AI代码生成器如何重塑前端开发的工作环境

近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术迅猛发展&#xff0c;深刻地改变着各行各业的工作方式。在软件开发领域&#xff0c;AI写代码工具的出现更是掀起了一场革命&#xff0c;尤其对前端开发工程师的工作环境和协作方式产生了深远的影响。本文将深入探讨AI…

前端可以不用依赖后端实现导出大数据了

theme: channing-cyan hightlight: channing-cyan 前言 在我们公司表格数据导出都是前端去处理。一开始数据量不大&#xff0c;倒没什么问题。但随着数据量的加大&#xff0c;问题也逐渐暴露出来。 一天的数据量有一来万条&#xff0c;导出一定时间范围的数据&#xff0c;30…

本地部署DeepSeek Nodejs版

目录 1.下载 Ollama 2.下载DeepSeek模型 3.下载 ollama.js 1.下载 Ollama https://ollama.com/ 下载之后点击安装&#xff0c;等待安装成功后&#xff0c;打开cmd窗口&#xff0c;输入以下指令&#xff1a; ollama -v 如果显示了版本号&#xff0c;则代表已经下载成功了。…

C++ Primer 迭代语句

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

你需要提供管理员权限才能删除此文件夹解决方法

立即高级启动 windows10 搜索“设置”&#xff0c;然后“更新和安全””->“恢复”->“立即重新启动” windows11 搜索“设置”&#xff0c;然后“Windows更新”->“更新历史记录”->“恢复”->“立即重新启动” 疑难解答 点击“疑难解答” 高级选项 启…

408-数据结构

数据结构在学什么&#xff1f; 1.用代码把问题信息化 2.用计算机处理信息 ch1 数据&#xff1a;数据是信息的载体&#xff0c;是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 ch2 //假设线性表…

神经网络常见激活函数 9-CELU函数

文章目录 CELU函数导函数函数和导函数图像优缺点pytorch中的CELU函数tensorflow 中的CELU函数 CELU 连续可微指数线性单元&#xff1a;CELU&#xff08;Continuously Differentiable Exponential Linear Unit&#xff09;,是一种连续可导的激活函数&#xff0c;结合了 ELU 和 …

Ceph集群搭建2025(squid版)

squid版本维护年限 apt install -y cephadmecho >> "deb http://mirrors.163.com/ceph/debian-squid/ bookworm main" echo >> "deb-src http://mirrors.163.com/ceph/debian-squid/ bookworm main"#安装源 cephadm install #开始初始化一个最…

详解电子邮箱工作原理|SMTP、POP3、IMAP、SPF、MIME

写在前面 电子邮件&#xff08;Email&#xff09;是一种通过互联网进行异步通信的技术&#xff0c;工作原理涉及多个协议、服务器和客户端协同工作。 接下来我们来介绍一下电子邮箱的工作原理 1. 电子邮件的核心组成部分 邮件客户端&#xff1a;用户直接交互的软件&#xf…