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

centos 7 mysql 8 离线部署

mysql.sh

#!/bin/bash
# 定义变量
#MYSQL_DIR=$1
#MYSQL_VERSION="mysql-8.0.39"
#MYSQL_USER="mysql"
#MYSQL_PORT=$2
#LOG_FILE="$MYSQL_DIR/mysql/$MYSQL_VERSION/data/error.log"
#数据传输软件数据文件
#TRANSFER_SQL_PATH="$(pwd)/project/cms_transfer_v1.0/cms_transfer.sql;"source ./install_control.cfg
#判断是否安装MYSQL
if [ -d "$MYSQL_DIR/mysql/$MYSQL_VERSION" ]; then  echo "MYSQL环境已存在,无需安装..."  exit 1
fi
#通过进程判断MYSQL是否已经安装
if ps aux | grep -v grep | grep -v mysql.sh | grep -q mysql; thenecho "MySQL进程正在运行"exit 1
fi
# 清理环境
rm -rf /etc/my.cnf    
rm -rf /etc/my.cnf.d 
rm -rf /var/lib/mysql
echo "安装环境已清理。。。。。"
# 检查是否已经存在 MySQL 用户,如果不存在则创建
if ! id -u $MYSQL_USER > /dev/null 2>&1; thensudo groupadd $MYSQL_USERsudo useradd -g $MYSQL_USER -r -s /bin/false $MYSQL_USER
fi# 解压
echo "正在解压中请稍等。。。。。"
sleep 3
sudo tar -xvf mysql/$MYSQL_VERSION*tar* -C mysql
sudo mkdir -p $MYSQL_DIR/mysql
sudo mv  mysql/$MYSQL_VERSION*x86_64 $MYSQL_DIR/mysql/$MYSQL_VERSION
if [ $? == 0 ]; thenecho "已解压到目标目录$MYSQL_DIR/mysql/$MYSQL_VERSION下"
elseecho "mysql解压失败"exit 1 
fi
echo "创建并赋权mysql目录"
sleep 2
sudo mkdir -p $MYSQL_DIR/mysql/$MYSQL_VERSION/dataecho "mysql目录已创建"
# 创建 socket 目录并修改权限
sudo mkdir -p $MYSQL_DIR/mysql/$MYSQL_VERSION/mysqld
sudo chown -R mysql:mysql $MYSQL_DIR/mysql/$MYSQL_VERSION
# 编辑 my.cnf 文件
cat > /etc/my.cnf << EOF
[mysqld]
port = $MYSQL_PORT
user = mysql
basedir = $MYSQL_DIR/mysql/$MYSQL_VERSION
datadir = $MYSQL_DIR/mysql/$MYSQL_VERSION/data
socket = $MYSQL_DIR/mysql/$MYSQL_VERSION/mysqld/mysqld.sock
log-error = $LOG_FILE
pid-file = $MYSQL_DIR/mysql/$MYSQL_VERSION/mysql.pid
explicit_defaults_for_timestamp=1
server_id = 11
bind-address = 0.0.0.0
character-set-server = utf8
default_storage_engine = InnoDB
[client]
port = $MYSQL_PORT
socket = $MYSQL_DIR/mysql/$MYSQL_VERSION/mysqld/mysqld.sock
default-character-set = utf8
EOF
if [ $? == 0 ]; thenecho "配置文件添加成功"echo "export PATH=\$PATH:$MYSQL_DIR/mysql/$MYSQL_VERSION/bin" >> /etc/profile
elseecho "环境变量设定失败,请检查重试!!!"exit 1
fi
sleep 3
# 使环境变量生效
source /etc/profile
echo "接下来进行初始化操作...."
sleep 2
# 初始化 MySQL 数据库
$MYSQL_DIR/mysql/$MYSQL_VERSION/bin/mysqld --initialize --user=mysql --basedir=$MYSQL_DIR/mysql/$MYSQL_VERSION --datadir=$MYSQL_DIR/mysql/$MYSQL_VERSION/data
if [ $? != 0 ]; thenecho "初始化失败"sleep 3exit 1
fi
sleep 3
# 添加 mysql 服务启动脚本
cat > /etc/systemd/system/mysql.service << EOF
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=$MYSQL_DIR/mysql/$MYSQL_VERSION/bin/mysqld --defaults-file=/etc/my.cnf
ExecStop=/bin/kill -SIGTERM \$MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 重新加载 systemd 配置
systemctl daemon-reload
# 启动 MySQL
systemctl start mysql.service
sleep 5  # 等待服务启动
if ! systemctl status mysql.service; thenecho "MySQL 服务未能正常启动。以下是日志:"cat $LOG_FILEexit 1
fi
# 添加软连接
ln -sfn $MYSQL_DIR/mysql/$MYSQL_VERSION/bin/mysql /usr/bin/mysql
ln -sfn $MYSQL_DIR/mysql/$MYSQL_VERSION/bin/mysqladmin /usr/bin/mysqladmin
ln -sfn $MYSQL_DIR/mysql/$MYSQL_VERSION/bin/mysql /usr/bin/mysql
ln -sfn $MYSQL_DIR/mysql/$MYSQL_VERSION/bin/mysqladmin /usr/bin/mysqladmin
echo "软连接添加成功"
# 添加开机自启 mysql 服务 
systemctl enable mysql.service
echo "开机自启 mysql 服务成功"
# 获取初始化密码
INITIAL_PASSWORD=$(grep 'temporary password' $MYSQL_ERROR_FILE | awk '{print $NF}')
# 确保找到了初始化密码
if [ -z "$INITIAL_PASSWORD" ]; thenecho "未找到初始化密码,请检查 MySQL 启动日志。"exit 1
fi
echo "数据库初始密码为:$INITIAL_PASSWORD"
#MYSQL_USER=$3
#NEW_PASSWORD=$4
echo "正在修改初始密码..."
sleep 3
# 更改 MySQL 根用户密码
mysql --connect-expired-password -u$MYSQL_ACCOUNT -p$INITIAL_PASSWORD -h localhost -e "ALTER USER '$MYSQL_ACCOUNT'@'localhost' IDENTIFIED BY '$NEW_PASSWORD';"
if [ $? -ne 0 ]; thenecho "Failed to change the password.(更改密码失败)"exit 1
elseecho "MySQL root password changed successfully.(恭喜你,密码修改成功!!!)"
fi
echo "数据库修改后的密码为:$NEW_PASSWORD"
# MySQL允许远程访问
mysql -u$MYSQL_ACCOUNT -p$NEW_PASSWORD -h localhost -e "USE mysql; UPDATE user SET host = '%' WHERE user = 'root'; FLUSH PRIVILEGES;"
if [ $? -ne 0 ]; thenecho "MySQL允许远程访问失败!"exit 1
elseecho "MySQL允许远程访问成功!"
fi#检查数据传输软件数据库是否存在
TRANSFER_OUTPUT=$(mysql -u "$MYSQL_ACCOUNT" -p"$NEW_PASSWORD" -h localhost -e "SHOW DATABASES;")if echo "$OUTPUT" | grep -q "^cms-field-control\b"; then  echo "数据库已经存在无需导入"  
else  # 数据传输软件数据导入mysql -u$MYSQL_ACCOUNT -p$NEW_PASSWORD -h localhost -e "CREATE DATABASE cms-field-control; USE cms-field-control; SOURCE $SQL_PATH"if [ $? -ne 0 ]; thenecho "数据传输软件数据导入失败!"elseecho "数据传输软件数据导入成功!数据库安装完成!"fi 
fi

centos7mysql8离线部署资源-CSDN下载

http://www.lqws.cn/news/503875.html

相关文章:

  • (3)ROS2:6-dof前馈+PD / 阻抗控制器
  • 【Vue】 keep-alive缓存组件实战指南
  • C# VB.NET中Tuple轻量级数据结构和固定长度数组
  • 第五课:大白话教你用K邻近算法做分类和回归
  • 从零学习linux(2)——管理
  • 战地2042(战地风云)因安全启动(Secure Boot)无法启动的解决方案以及其他常见的启动或闪退问题
  • iOS 抓包实战:时间戳偏差导致的数据同步异常排查记录
  • spring-ai 1.0.0 学习(十四)——向量数据库
  • 【机器学习深度学习】反向传播机制
  • 使用argparse封装python程序为命令行工具
  • C++ 第二阶段:模板编程 - 第一节:函数模板与类模板
  • Linux线程概念及常用接口(1)
  • 数据分箱:科学分类的简单指南
  • 轻量级小程序自定义tabbar组件封装的实现与使用
  • MediaMarktSaturn EDI 对接指南:欧洲零售卖场的数字化协同范例
  • 火山引擎向量数据库 Milvus 版正式开放
  • 竹云受邀出席华为开发者大会,与华为联合发布海外政务数字化解决方案
  • 【MATLAB代码】基于MVC的EKF和经典EKF对三维非线性状态的滤波,提供滤波值对比、误差对比,应对跳变的观测噪声进行优化
  • 安全报告:LLM 模型在无显性攻击提示下的越狱行为分析
  • SSE和Kafka应用场景对比
  • taro小程序,tailwindcss的bg-x-x,背景颜色不生效,只有自定义的写法颜色才生效
  • Qt面试题汇总
  • 在微服务中使用 Sentinel
  • PYTHON从入门到实践3-变量
  • LayUI的table实现行上传图片+mvc
  • JavaEE初阶第四期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(二)
  • 在 .NET Core WebAPI 项目中,执行文件(.exe)方式运行并指定端口
  • Python实例题:Web 爬虫与数据可视化
  • 《AI大模型核心技术揭秘与商业落地实战》学习内容系统总结
  • Android APP内切换语言无感重启到当前界面