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

详细探索如何用脚本实现M小ySQL一键安装与配置,提升运维效率!

以下是基于脚本实现MySQL一键安装与配置的详细方案,涵盖Linux主流系统(CentOS/Ubuntu)及Windows环境,结合自动化部署与高可用性扩展,旨在提升运维效率:


一、Linux系统(CentOS 7.x)一键安装脚本方案

1. 基于YUM源的自动化安装(MySQL 5.7/8.0)
 
#!/bin/bash
# 变量定义
VERSION="8.0"  # 可选5.7或8.0
ROOT_PASSWORD="StrongPass@123"
BASE_DIR="/usr/local/mysql"# 环境准备
yum install -y wget net-tools
wget https://dev.mysql.com/get/mysql $ {VERSION}-community-release-el7-11.noarch.rpm
yum install -y mysql $ {VERSION}-community-release-el7-11.noarch.rpm
yum install -y mysql-community-server# 初始化服务
systemctl start mysqld
systemctl enable mysqld# 获取临时密码并重置
TEMP_PASSWORD= $ (grep 'temporary password' /var/log/mysqld.log | awk '{print  $ NF}')
mysql -uroot -p $ {TEMP_PASSWORD} --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY ' $ {ROOT_PASSWORD}';"# 配置远程访问与字符集
mysql -uroot -p $ {ROOT_PASSWORD} -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ' $ {ROOT_PASSWORD}' WITH GRANT OPTION;"
mysql -uroot -p $ {ROOT_PASSWORD} -e "FLUSH PRIVILEGES;"
echo "[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-authentication-plugin=mysql_native_password" >> /etc/my.cnfsystemctl restart mysqld

2. 二进制包手动安装(MySQL 8.0)
 
#!/bin/bash
# 变量定义
VERSION="8.0.34"
ROOT_PASSWORD="SecurePass@456"
DATA_DIR="/data/mysql"# 环境准备
groupadd mysql && useradd -r -g mysql mysql
mkdir -p  $ DATA_DIR/{data,logs,conf}
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql- $ {VERSION}-linux-glibc2.12-x86_64.tar.gz
tar -zxvf mysql- $ {VERSION}-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql- $ {VERSION}-linux-glibc2.12-x86_64 /usr/local/mysql# 初始化数据库
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir= $ DATA_DIR/data
mv /var/log/mysqld.log  $ DATA_DIR/logs/
chmod 755  $ DATA_DIR -R
chown -R mysql:mysql  $ DATA_DIR /usr/local/mysql# 配置环境变量
echo 'export PATH= $ PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile# 创建服务文件
cat <<EOF > /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=syslog.target network.target[Service]
Type=forking
ExecStart=/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir= $ DATA_DIR/data --pid-file= $ DATA_DIR/mysqld.pid
ExecReload=/bin/kill -HUP  $ MAINPID
ExecStop=/usr/local/mysql/bin/mysqladmin shutdown -u root -p $ {ROOT_PASSWORD}
PrivateTmp=true[Install]
WantedBy=multi-user.target
EOF# 启动服务并配置
systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld# 获取临时密码并重置
TEMP_PASSWORD= $ (grep 'temporary password'  $ DATA_DIR/logs/mysqld.log | awk '{print  $ NF}')
mysql -uroot -p $ {TEMP_PASSWORD} --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY ' $ {ROOT_PASSWORD}';"
mysql -uroot -p $ {ROOT_PASSWORD} -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ' $ {ROOT_PASSWORD}' WITH GRANT OPTION;"
mysql -uroot -p $ {ROOT_PASSWORD} -e "FLUSH PRIVILEGES;"


二、Windows系统一键安装脚本方案

1. 批处理脚本(MySQL 8.0)
 
@echo off
setlocal enabledelayedexpansionset INSTALL_DIR=C:\mysql-8.0.34-winx64
set DATA_DIR=C:\mysql_data
set ROOT_PASSWORD=Admin@123:: 下载并解压
bitsadmin.exe /transfer MySQLDownload /download /priority normal https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-%VERSION%-winx64.zip %TEMP%\mysql.zip
powershell Expand-Archive -Path %TEMP%\mysql.zip -DestinationPath %INSTALL_DIR%:: 创建数据目录
mkdir %DATA_DIR%:: 初始化配置
echo [mysqld] > %INSTALL_DIR%\my.ini
echo basedir = "%INSTALL_DIR%" >> %INSTALL_DIR%\my.ini
echo datadir = "%DATA_DIR%" >> %INSTALL_DIR%\my.ini
echo port = 3306 >> %INSTALL_DIR%\my.ini
echo character-set-server=utf8mb4 >> %INSTALL_DIR%\my.ini
echo default-authentication-plugin=mysql_native_password >> %INSTALL_DIR%\my.ini:: 初始化数据库
%INSTALL_DIR%\bin\mysqld --initialize --console --datadir=%DATA_DIR% --user=root
set /p TEMP_PASSWORD=请输入临时密码::: 修改密码并配置远程访问
%INSTALL_DIR%\bin\mysql -u root -p%TEMP_PASSWORD% --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '%ROOT_PASSWORD%';"
%INSTALL_DIR%\bin\mysql -u root -p%ROOT_PASSWORD% -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '%ROOT_PASSWORD%' WITH GRANT OPTION;"
%INSTALL_DIR%\bin\mysql -u root -p%ROOT_PASSWORD% -e "FLUSH PRIVILEGES;":: 安装服务
%INSTALL_DIR%\bin\mysqld --install MySQL80
net start MySQL80


三、自动化部署高级方案

1. Ansible批量部署(支持多节点)
 
#(ansible-playbook)
- name: Deploy MySQL Clusterhosts: mysql_nodesbecome: yestasks:- name: Install MySQL Repositoryyum:name: https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpmstate: present- name: Install MySQL Serveryum:name: mysql-community-serverstate: present- name: Start MySQL Serviceservice:name: mysqldstate: startedenabled: yes- name: Get Initial Passwordshell: grep 'temporary password' /var/log/mysqld.log | awk '{print  $ NF}'register: temp_password- name: Set Root Passwordmysql_user:login_user: rootlogin_password: "{{ temp_password.stdout }}"check_implicit_admin: yesname: rootpassword: StrongPass@123host_all: yes- name: Configure Remote Accessmysql_query:login_user: rootlogin_password: StrongPass@123query: "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongPass@123'; FLUSH PRIVILEGES;"

2. 高可用性扩展(MySQL Group Replication)
# 主节点配置(脚本片段)
mysql -uroot -p -e "CREATE USER 'repl'@'%' IDENTIFIED BY 'ReplicaPass@456';"
mysql -uroot -p -e "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';"
mysql -uroot -p -e "CHANGE MASTER TO MASTER_HOST='secondary_ip', MASTER_USER='repl', MASTER_PASSWORD='ReplicaPass@456';"
mysql -uroot -p -e "INSTALL PLUGIN group_replication SONAME 'group_replication.so';"
mysql -uroot -p -e "SET GLOBAL group_replication_group_name='uuid';"
mysql -uroot -p -e "SET GLOBAL group_replication_start_on_BOOT='ON';"
mysql -uroot -p -e "START GROUP_REPLICATION;"

四、关键配置优化建议

  1. 性能调优
    • 调整innodb_buffer_pool_size为物理内存的70%
    • 启用查询缓存:query_cache_type=1(MySQL 8.0后默认禁用)
    • 日志优化:slow_query_log=1 + long_query_time=2
  2. 安全加固
    • 禁用匿名账户:DROP USER ''@'localhost';
    • 删除测试数据库:DROP DATABASE test;
    • 配置防火墙规则:firewall-cmd --add-port=3306/tcp --permanent
  3. 监控集成
    • 安装Percona Monitoring Toolkit
    • 配置Prometheus + Grafana监控面板

五、脚本执行流程图

开始
├─ 检查系统环境(依赖、防火墙、SELinux)
├─ 下载安装包/配置源
├─ 执行安装命令
├─ 获取临时密码并重置
├─ 配置字符集与远程访问
├─ 初始化数据库目录权限
├─ 启动服务并验证状态
└─ 输出最终配置报告

六、常见问题解决方案

  1. 端口冲突:修改my.cnf中的port参数
  2. 权限不足:确保mysql用户对数据目录有读写权限
  3. SSL错误:添加skip-grant-tables临时启动后修复权限
  4. 服务启动失败:检查mysqld.log日志定位具体错误

通过上述脚本方案,可实现MySQL的快速部署与标准化配置,结合Ansible等工具可进一步扩展为集群化部署,显著提升运维效率。建议根据实际业务需求选择脚本模板并定制化调整参数。

相关文章:

详细探索如何用脚本实现M小ySQL一键安装与配置,提升运维效率!

以下是基于脚本实现MySQL一键安装与配置的详细方案&#xff0c;涵盖Linux主流系统&#xff08;CentOS/Ubuntu&#xff09;及Windows环境&#xff0c;结合自动化部署与高可用性扩展&#xff0c;旨在提升运维效率&#xff1a; 一、Linux系统&#xff08;CentOS 7.x&#xff09;一…...

无人机推流/RTMP视频推拉流:EasyDSS无法卸载软件的原因及解决方法

视频推拉流/直播点播EasyDSS平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务&#xff0c;在应用场景中可实现视频直播、点播、转码、管理、录像、检索、时移回看等。此外&#xff0c;平台还支持用户自行上传视频文件&#xff0c;也可将上传的点播…...

增删改查 数据下载 一键编辑 删除

index 首页 <template><div class"box"><el-card :style"{ width: treeButton ? 19.5% : 35px, position: relative, transition: 1s }"><el-tree v-if"treeButton" :data"treeData" :props"defaultPro…...

【Go学习实战】03-2-博客查询及登录

【Go学习实战】03-2-博客查询及登录 读取数据库数据初始化数据库首页真实数据分类查询分类查询测试 文章查询文章查询测试 分类文章列表测试 登录功能登录页面登录接口获取json参数登录失败测试 md5加密jwt工具 登录成功测试 文章详情测试 读取数据库数据 因为我们之前的数据都…...

回溯算法(C/C++)

目录 一、组合问题 组合 组合剪枝 组合总和 III​编辑 组合总和​编辑 组合总和 II 电话号码的字母组合​编辑 二、分割问题 分割回文串 复原 IP 地址 三、集合问题 子集 子集 II 非递减子序列 四、排列问题 全排列 全排列 II 五、棋盘问题 N 皇后 课程&#x…...

物联网智慧农业一体化解决方案-可继续扩展更多使用场景

在智慧农业中,从种子、施肥、灌溉、锄地、农具管理、日常照料到蔬菜档案管理,以及与客户、供应商、市场的对接,可以通过物联网(IoT)、大数据、人工智能(AI)、区块链和云计算等技术,构建一个从生产到销售的全流程数字化、智能化农业生态系统。以下是实现方案和技术路径的…...

Jackson 详解

目录 前言 Jackson 是 Java 生态中最流行的 JSON 处理库之一&#xff0c;广泛应用于 RESTful API、数据存储和传输等场景。它提供了高效、灵活的 JSON 序列化和反序列化功能&#xff0c;支持注解、模块化设计和多种数据格式&#xff08;如 XML、YAML&#xff09;。本文将详细介…...

游戏引擎学习第143天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾并规划今天的内容 目前&#xff0c;我们正在进行声音混合的开发。我们已经写好了声音混合器&#xff0c;并且已经实现了一些功能&#xff0c;比如声音流播放和音量插值。过去一周我们做了很多工作&#xff0c;进展非常快。不…...

SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决

介绍一下我的是ubuntu20.04.机载电脑是orinnx&#xff0c;通过源码烧写的系统。 首先打开终端&#xff0c;输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容&#xff0c; ONNX&#xff08;Open Neural Network E…...

Nginx解决前端跨域问题

1. 理解 CORS 和同源策略 1.1 同源策略 同源策略是一种浏览器安全机制&#xff0c;用于阻止不同源&#xff08;不同域名、协议或端口&#xff09;的 Web 应用相互访问数据。它确保了 Web 应用的隔离性&#xff0c;防止恶意网站访问用户数据或执行不安全的操作。 同源策略下&…...

ReferenceError: assignment to undeclared variable xxx

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

国产编辑器EverEdit - 宏功能介绍

1 宏 1.1 应用场景 宏是一种重复执行简单工作的利器&#xff0c;可以让用户愉快的从繁琐的工作中解放出来&#xff0c;其本质是对键盘和菜单的操作序列的录制&#xff0c;并不会识别文件的内容&#xff0c;属于无差别无脑执行。 特别是对一些有规律的重复按键动作&#xff0c;…...

图像滑块对比功能的开发记录

背景介绍 最近&#xff0c;公司需要开发一款在线图像压缩工具&#xff0c;其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此&#xff0c;我们设计了一个对比组件&#xff0c;它允许用户通过拖动滑块&#xff0c;动态调整两张图像的显示区域&#xff0c;从而清晰…...

【计算机网络】Socket

Socket 是网络通信的核心技术之一&#xff0c;充当应用程序与网络协议栈之间的接口。 1. Socket 定义 Socket&#xff08;套接字&#xff09;是操作系统提供的 网络通信抽象层&#xff0c;允许应用程序通过标准接口&#xff08;如 TCP/IP 或 UDP&#xff09;进行数据传输。它…...

Electron应用中获取设备唯一ID和系统信息

让我创建一篇关于如何在Electron应用中获取设备唯一ID和系统信息&#xff0c;并在登录时使用这些信息的博客文章。我将确保步骤明确、条理清晰&#xff0c;适合初学者和有经验的开发者。 这篇博客应包含以下部分&#xff1a; 介绍 - 为什么需要获取设备信息前提条件和安装依赖…...

文件上传漏洞:upload-labs靶场11-20

目录 pass-11 pass-12 pass-13 pass-14 pass-15 pass-16 pass-17 pass-18 pass-19 pass-20 pass-11 分析源代码 &#xff0c;发现上传文件的存放路径可控 if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_ext substr($_FILES[upload_file][name],st…...

国产化板卡设计原理图:2330-基于FMC接口的JFM7K325T PCIeX4 3U PXIe接口卡

基于FMC接口的JFM7K325T PCIeX4 3U PXIe接口卡 一、板卡概述 本板卡基于 FPGAJFM7K325T 芯片&#xff0c;pin_to_pin兼容FPGAXC7K410T-2FFG900 &#xff0c;支持PCIeX8、64bit DDR3容量2GByte&#xff0c;HPC的FMC连接器&#xff0c;板卡支持PXIE标准协议&#xff0c;其中XJ3…...

使用Open WebUI下载的模型文件(Model)默认存放在哪里?

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Ollama部署LLM专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年2月21日21点21分 &#x1f004;️文章质量&#xff1a;95分 文章目录 使用CMD安装存放位置 默认存放路径 Open WebUI下…...

FPGA 配置原理

用户编程控制的FPGA 是通过加载比特位流配置内部的存储单元实现的。该存储单元就是所谓的配置单元&#xff0c;它必须在器件上电后进行配置&#xff0c;从而设置查找表&#xff08;LUT&#xff09;的属性、连线方式、IOB 电压标准和其它的用户设计。 1.配置帧 以Xilinx 公司的…...

企业级虚拟化数据库基础平台自动化部署项目

一、项目简介及准备工作 1.1.虚拟化平台简介 1.1.1.ESXi 8 是什么&#xff1f; 定义&#xff1a; ESXi 8 是 VMware 推出的最新版本 裸机虚拟化管理程序&#xff08;Hypervisor&#xff09;&#xff0c;属于 VMware vSphere 产品线的核心组件。 核心功能&#xff1a; 在物理…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...