当前位置: 首页 > 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下载

相关文章:

  • 网站上怎么做通栏的图片关键词优化的最佳方法
  • 网站添加微博百度自动点击器怎么用
  • 建设银行人才招聘网站seo算法培训
  • 专业的天津网站建设关键词竞价排名名词解释
  • 合肥网站推广电话排名公式
  • 确定网站推广目标黄页引流推广网站软件免费
  • HTTP响应头Content-Disposition解析
  • 前端react框架实现打包时间动态加入配置展示在指定页面
  • 【Bluedroid】蓝牙启动之 bta_dm_enable 流程梳理 源码解析
  • 开源分享:我开发了一个智能文本提取浏览器插件,彻底解决复制粘贴的烦恼
  • IDEA 中Git 多次 Commit 合并为一次提交
  • 3443. K 次修改后的最大曼哈顿距离
  • 想考华为HCIA-AI,应该怎么入门?
  • Reactor框架介绍,和使用示例
  • 远程车载智能柜|北斗车载枪支柜
  • 【Linux网络编程】多路转接I/O(一)select,poll
  • Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
  • 两台互通的服务器如何在限制一台服务器被限制的情况下通过访问另一台服务开放的端口从而达成访问本来不能访问的网址
  • Temporal Join,一探究竟
  • [08001] CLIENT PLUGIN AUTH is required.使用idea创建数据库连接
  • 使用linfa进行K-Means分析
  • 【C/C++】趣味题目:二维数组地址
  • vscode + Jlink 一键调试stm32 单片机程序(windows系统版)
  • 入门k8s-Pod
  • 1.3、接收方数据采样和同步问题
  • STM32学习笔记——中断控制