当前位置: 首页 > 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; 在物理…...

关于elementui的时间组件与后端时间和oracle数据库时间的对应格式

前端&#xff1a; <el-date-pickerv-model"formInline.startTime"type"date"value-format"yyyy-MM-dd"placeholder"选择日期"> </el-date-picker> 后端&#xff1a; private String startTime; private String endTime…...

一周学会Flask3 Python Web开发-WTForms表单验证

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们可以通过WTForms表单类属性的validators属性来实现表单验证。 常用的WTForms验证器 验证器说明DataRequired(messageNo…...

qt open3dBPA重建

qt open3dBPA重建 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionBPA_triggered();//bpa重建 void MainWindow::...

Unity游戏开发中的网格简化与LOD技术(Mesh Simplification LOD)

在Unity游戏开发中&#xff0c;网格简化&#xff08;Mesh Simplification&#xff09;和LOD&#xff08;Level of Detail&#xff09;技术是优化渲染性能的关键手段&#xff0c;尤其在处理复杂场景和高精度模型时至关重要。以下是一套系统的实现方案与优化策略&#xff1a; 一、…...

基于YOLO11深度学习的运动品牌LOGO检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

纯html文件实现目录和文档关联

目录结构 效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>项目结题报告</title><style lang"scss">::-webkit-scrollbar {width: 6px;height: 6px;}::-webkit-scro…...

C# | 委托 | 事件 | 异步

委托&#xff08;Delegate&#xff09;和事件&#xff08;Event&#xff09; 在C#和C中&#xff0c;委托&#xff08;Delegate&#xff09;与事件&#xff08;Event&#xff09;以及函数对象&#xff08;Function Object&#xff09;是实现回调机制或传递行为的重要工具。虽然…...

数据结构——顺序表与链表

1. 基础介绍 1、线性结构&#xff1a; 如果一个数据元素序列满足&#xff1a; &#xff08;1&#xff09;除第一个和最后一个数据元素外&#xff0c;每个数据元素只有一个前驱数据元素和一个后继数据元素&#xff1b; &#xff08;2&#xff09;第一个数据元素没有前驱数据…...

【uniapp】图片添加canvas水印

目录 需求&背景实现地理位置添加水印 ios补充 需求&背景 需求&#xff1a;拍照后给图片添加水印, 水印包含经纬度、用户信息、公司logo等信息。 效果图&#xff1a; 方案&#xff1a;使用canvas添加水印。 具体实现&#xff1a;上传图片组件是项目里现有的&#xff…...

ElementUI 级联选择器el-cascader启用选择任意一级选项,选中后关闭下拉框

1、启用选择任意一级选项 在 el-cascader 标签上加上配置项&#xff1a; :props"{ checkStrictly: true }"例如&#xff1a; <el-cascaderref"selectedArrRef"v-model"selectedArr":options"optionsList":props"{ checkStri…...