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

mysql脚本安装

install_mysql57.sh

#!/bin/bash# 检查是否以 root 权限运行
if [ "$EUID" -ne 0 ]; thenecho "请以 root 权限运行此脚本。"exit 1
fi# 设置工作目录和 MySQL 下载信息
WORK_DIR="/opt/mysql_install"
MYSQL_TAR="mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar"
MYSQL_URL="https://downloads.mysql.com/archives/get/p/23/file/$MYSQL_TAR"# 创建工作目录
mkdir -p $WORK_DIR
cd $WORK_DIR || exit# 检查 tar 文件是否存在,不存在则下载
if [ ! -f "$WORK_DIR/$MYSQL_TAR" ]; thenecho "📥 正在下载 MySQL RPM 包..."wget -O $WORK_DIR/$MYSQL_TAR $MYSQL_URLif [ $? -ne 0 ]; thenecho "❌ 下载失败,请检查网络连接或 URL 是否有效。"exit 1fi
elseecho "✅ 已找到 $MYSQL_TAR,跳过下载步骤。"
fiecho "📦 正在解压 tar 文件..."
tar -xvf $MYSQL_TAR# 导入 MySQL GPG 密钥
echo "🔑 正在导入 MySQL GPG 密钥..."
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 卸载 mariadb-libs
echo "🔧 检查并卸载 mariadb-libs..."
if rpm -qa | grep -qw mariadb-libs; thenecho "发现 mariadb-libs,正在卸载..."yum remove -y mariadb-libs
elseecho "未发现 mariadb-libs,跳过卸载步骤。"
fi# 安装依赖项
echo "🔧 安装依赖:libaio、perl、net-tools、perl-Data-Dumper、perl-JSON ..."
yum install -y libaio perl net-tools perl-Data-Dumper perl-JSON# 安装 MySQL 基础包
echo "💾 正在安装 MySQL 5.7 的基础 RPM 包..."
for pkg in mysql-community-common mysql-community-libs mysql-community-client mysql-community-server; dorpm_file=$(ls ${pkg}-*.rpm)echo "正在安装 $rpm_file ..."rpm -ivh $rpm_file
done# 初始化数据库
echo "🧠 初始化 MySQL 数据库..."
mysqld --initialize --user=mysql# 获取临时密码(可选)
TEMP_PASS=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
if [ -n "$TEMP_PASS" ]; thenecho "🔑 MySQL 初始临时密码为:$TEMP_PASS"
elseecho "警告: 未找到初始临时密码,请确认是否已正确初始化数据库或手动设置root密码。"
fi# 启动 MySQL 服务
echo "⚙️ 启动 MySQL 服务..."
systemctl enable mysqld
systemctl start mysqld# 检查状态
systemctl status mysqld# 设置新密码为固定值
NEW_PASS="123456"# 自动登录 MySQL 并修改 root 密码及授权 root@%
if [ -n "$TEMP_PASS" ]; thenecho "🔑 正在修改 MySQL root 用户的密码为 $NEW_PASS 并授权 root@% ..."# 使用多行SQL命令进行密码修改和权限授权mysql --connect-expired-password -u root -p"$TEMP_PASS" << EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY '$NEW_PASS';
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '$NEW_PASS';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EOFif [ $? -eq 0 ]; thenecho "✅ 成功修改 MySQL root 用户的密码并授权 root@%。"elseecho "❌ 修改 MySQL root 用户的密码或授权失败。请检查 MySQL 日志获取更多信息。"exit 1fi
elseecho "由于没有获取到临时密码,无法自动修改 MySQL root 用户的密码或授权,请手动进行修改和授权。"
fi# 开启3306端口
echo "🔒 正在开启防火墙中的3306端口..."
if systemctl is-active --quiet firewalld; thenfirewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --reloadecho "✅ 防火墙中的3306端口已开启。"
elseecho "警告: firewalld 服务未运行,无法自动开启3306端口。请手动配置防火墙。"
fiecho "✅ MySQL 5.7 安装完成!"
echo "你可以使用以下命令从其他主机登录 MySQL:"
echo "mysql -h your_server_ip -u root -p"

install_mysql8.sh

#!/bin/bash# 检查是否以 root 权限运行
if [ "$EUID" -ne 0 ]; thenecho "请以 root 权限运行此脚本。"exit 1
fi# 设置工作目录和 MySQL 下载信息
WORK_DIR="/opt/mysql_install"
MYSQL_TAR="mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar"
MYSQL_URL="https://downloads.mysql.com/archives/get/p/23/file/$MYSQL_TAR"# 创建工作目录
mkdir -p $WORK_DIR
cd $WORK_DIR || exit# 检查 tar 文件是否存在,不存在则下载
if [ ! -f "$WORK_DIR/$MYSQL_TAR" ]; thenecho "📥 正在下载 MySQL RPM 包..."wget -O $WORK_DIR/$MYSQL_TAR $MYSQL_URLif [ $? -ne 0 ]; thenecho "❌ 下载失败,请检查网络连接或 URL 是否有效。"exit 1fi
elseecho "✅ 已找到 $MYSQL_TAR,跳过下载步骤。"
fiecho "📦 正在解压 tar 文件..."
tar -xvf $MYSQL_TAR# 导入 MySQL GPG 密钥
echo "🔑 正在导入 MySQL GPG 密钥..."
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 卸载 mariadb-libs
echo "🔧 检查并卸载 mariadb-libs..."
if rpm -qa | grep -qw mariadb-libs; thenecho "发现 mariadb-libs,正在卸载..."yum remove -y mariadb-libs
elseecho "未发现 mariadb-libs,跳过卸载步骤。"
fi# 安装依赖项
echo "🔧 安装依赖:libaio、perl、net-tools、perl-Data-Dumper、perl-JSON ..."
yum install -y libaio perl net-tools perl-Data-Dumper perl-JSON# 按照正确顺序安装 MySQL RPM 包
echo "💾 正在按顺序安装 MySQL RPM 包..."RPM_LIST=(mysql-community-common-*.rpmmysql-community-libs-*.rpmmysql-community-libs-compat-*.rpmmysql-community-client-plugins-*.rpmmysql-community-client-*.rpmmysql-community-icu-data-files-*.rpmmysql-community-server-*.rpm
)for rpm_file in "${RPM_LIST[@]}"; doif [ -f "$rpm_file" ]; thenecho "📦 正在安装 $rpm_file ..."rpm -Uvh "$rpm_file"elseecho "❌ 找不到文件: $rpm_file,安装中断!"exit 1fi
done# 初始化数据库
echo "🧠 初始化 MySQL 数据库..."
mysqld --initialize --user=mysql# 获取临时密码
TEMP_PASS=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
if [ -n "$TEMP_PASS" ]; thenecho "🔑 MySQL 初始临时密码为:$TEMP_PASS"
elseecho "⚠️ 未找到初始临时密码,请手动设置 root 密码。"
fi# 启动 MySQL 服务
echo "⚙️ 启动 MySQL 服务..."
systemctl enable mysqld
systemctl start mysqld# 设置新密码为固定值
NEW_PASS="123456"# 自动登录 MySQL 修改密码及授权
if [ -n "$TEMP_PASS" ]; thenecho "🔑 正在修改 root 用户密码并授权 root@% ..."mysql --connect-expired-password -u root -p"$TEMP_PASS" << EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY '$NEW_PASS';
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '$NEW_PASS';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EOFif [ $? -eq 0 ]; thenecho "✅ 成功修改 root 用户密码并授权 root@%。"elseecho "❌ 修改密码或授权失败,请手动处理。"fi
fi# 开启防火墙中的3306端口
echo "🔒 正在开启防火墙中的3306端口..."
if systemctl is-active --quiet firewalld; thenfirewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --reloadecho "✅ 防火墙中的3306端口已开启。"
elseecho "⚠️ firewalld 未运行,需手动配置防火墙。"
fiecho "🎉 MySQL 8.0 安装完成!"
echo "你可以通过以下命令远程登录:"
echo "   mysql -h your_server_ip -u root -p"

相关文章:

  • 【设计模式-4.11】行为型——解释器模式
  • 【element-ui】el-autocomplete实现 无数据匹配
  • win10系统docker安装dify
  • 【Python新手入门指南】极速搭建Python开发环境
  • open3d:使用彩色图和深度图生成点云
  • js 比较两个对象的值,不相等就push对象的key
  • 虚拟仿真技术赋能家庭教育实训室建设要点解析​
  • Cursor AI编程助手模型选择对了吗?
  • C++ Primer Plus 7.8 函数与 array 对象
  • 传统业务对接AI-AI编程框架-Rasa的业务应用实战(2)--选定Python环境 安装rasa并初始化工程
  • springboot实现查询学生
  • 图像尺寸测量仪应用刀具尺寸测量
  • Git操作记录
  • Git Svn
  • Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
  • 【从0-1的CSS】第1篇:CSS简介,选择器已经常用样式
  • C++虚函数表(虚表Virtual Table,简称vtable、VFT)(编译器为支持运行时多态(动态绑定)而自动生成的一种内部数据结构)虚函数指针vptr
  • PPT转图片拼贴工具 v1.0
  • dvwa11——XSS(Reflected)
  • 【Maniskill】使用Ppo的官方基线训练时出现指标突然“塌陷”的现象
  • 国内有wix做的好的网站/seo免费课程视频
  • 长沙建设工程造价网站/百度广告怎么收费
  • 网站建设公司shundeit/河南网站建设哪个公司做得好
  • b2b免费信息发布网站/seo快排优化
  • 在什么网站做兼职/靠谱的广告联盟
  • 建设安全备案登入那个网站/建站流程