数据库服务之 Mysql8.x 服务脚本安装

/

Mysql介绍

MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL作为网站数据库。

脚本内容:

  1. !/bin/bash
  2. #
  3. #********************************************************************
  4. #Author: wwtou
  5. #Date: 2025-04-18
  6. #FileName: mysql_install_v8.sh
  7. #Description: The test script for OS Version greater than 8.0
  8. #Copyright (C): 2020 All rights reserved
  9. #********************************************************************
  10. # Defined Variable
  11. MYSQL_VER="8.0.40"
  12. MYSQL_FILE="mysql-${MYSQL_VER}-linux-glibc2.28-x86_64.tar.xz"
  13. MYSQL_URL="https://downloads.mysql.com/archives/get/p/23/file/"
  14. SRC_DIR="/tools"
  15. MYSQL_BASE_DIR="/app"
  16. MYSQL_INSTALL_DIR="${MYSQL_BASE_DIR}/mysql"
  17. MYSQL_DATA_DIR="/data/3306"
  18. MYSQL_BINLOG_DIR="/data/binlog"
  19. MYSQL_LOG_DIR="/data/log"
  20. MYSQL_CONFILE="/etc/my.cnf"
  21. MYSQL_COMMAND_FILE="/etc/profile.d/mysqld.sh"
  22. USER="mysql"
  23. GROUP="mysql"
  24. MYSQL_PORT=3306
  25. SERVERID=$(hostname -I | awk -F'.' '{print $4}')
  26. . /etc/os-release
  27. color () {
  28. RES_COL=60
  29. MOVE_TO_COL="echo -en \\033[${RES_COL}G"
  30. SETCOLOR_SUCCESS="echo -en \\033[1;32m"
  31. SETCOLOR_FAILURE="echo -en \\033[1;31m"
  32. SETCOLOR_WARNING="echo -en \\033[1;33m"
  33. SETCOLOR_NORMAL="echo -en \E[0m"
  34. echo -n "$1" && $MOVE_TO_COL
  35. echo -n "["
  36. if [ $2 = "success" -o $2 = "0" ] ;then
  37. ${SETCOLOR_SUCCESS}
  38. echo -n $" OK "
  39. elif [ $2 = "failure" -o $2 = "1" ] ;then
  40. ${SETCOLOR_FAILURE}
  41. echo -n $"FAILED"
  42. else
  43. ${SETCOLOR_WARNING}
  44. echo -n $"WARNING"
  45. fi
  46. ${SETCOLOR_NORMAL}
  47. echo -n "]"
  48. echo
  49. }
  50. check () {
  51. [ -e ${MYSQL_INSTALL_DIR} ] && { color "MYSQL SERVER 已安装,请卸载后再安装" 1; exit; }
  52. [ ! -d ${MYSQL_BASE_DIR} ] && mkdir -p ${MYSQL_BASE_DIR}
  53. [ ! -d ${MYSQL_DATA_DIR} ] && mkdir -p ${MYSQL_DATA_DIR}
  54. [ ! -d ${MYSQL_BINLOG_DIR} ] && mkdir -p ${MYSQL_BINLOG_DIR}
  55. [ ! -d ${MYSQL_LOG_DIR} ] && mkdir -p ${MYSQL_LOG_DIR}
  56. SELINUX_CODE=$(getenforce)
  57. if [ ${SELINUX_CODE} = 'Disabled' ]; then
  58. color 'Selinux 已经关闭' 0
  59. else
  60. setenforce 0
  61. sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
  62. color 'Selinux 已经临时关闭,重启后彻底生效' 0
  63. fi
  64. if firewall-cmd --state &>/dev/null; then
  65. systemctl disable --now firewalld.service &>/dev/null
  66. #firewall-cmd --add-service=http --permanent
  67. #firewall-cmd --add-service=https --permanent
  68. #firewall-cmd --add-port=8012/tcp --permanent
  69. #firewall-cmd --add-port=8013/tcp --permanent
  70. #firewall-cmd --reload
  71. color '已关闭防火墙' 0
  72. else
  73. color '防火墙已关闭' 0
  74. fi
  75. color "安装工具包" 0
  76. if egrep -i 'centos|rocky|anolis|rhel' /etc/os-release &>/dev/null; then
  77. dnf -y install tar bash-completion vim-enhanced wget
  78. else
  79. apt update; apt -y install tar bash-completion vim-enhanced wget
  80. fi
  81. [ ! -d ${SRC_DIR} ] && mkdir ${SRC_DIR}
  82. cd ${SRC_DIR}
  83. if [ -e ${SRC_DIR}/${MYSQL_FILE} ];then
  84. color "相关文件已准备好" 0
  85. else
  86. color '开始下载 MYSQL 源码包' 0
  87. wget ${MYSQL_URL}${MYSQL_FILE}
  88. [ $? -ne 0 ] && { color "下载 ${MYSQL_FILE}文件失败" 1; exit; }
  89. fi
  90. }
  91. install () {
  92. color "开始安装 MYSQL" 0
  93. if id $USER &> /dev/null;then
  94. color "$USER 用户已存在" 1
  95. else
  96. groupadd $GROUP
  97. useradd -r -g $GROUP -s /sbin/nologin $USER
  98. color "创建 $USER 用户" 0
  99. fi
  100. color "开始安装 MYSQL 依赖包" 0
  101. if egrep -i 'centos|rocky|anolis|rhel' /etc/os-release &>/dev/null; then
  102. dnf -y install gcc make openssl-devel libaio-devel numactl
  103. else
  104. apt update; apt -y install gcc make openssl libssl-dev openssl-dev libaio-dev numactl
  105. fi
  106. cd $SRC_DIR
  107. tar -xvf ${MYSQL_FILE} -C ${MYSQL_BASE_DIR}
  108. MYSQL_DIR=$(echo ${MYSQL_FILE} | sed -nr 's/^(.*[0-9]).*/\1/p')
  109. #cd ${MYSQL_BASE_DIR}
  110. #ln -s $(echo ${MYSQL_FILE} | sed -nr 's/^(.*[0-9]).*/\1/p') ${MYSQL_INSTALL_DIR}
  111. ln -s ${MYSLQ_BASE_DIR}/${MYSQL_DIR} ${MYSQL_INSTALL_DIR}
  112. # initialized databases
  113. ${MYSQL_INSTALL_DIR}/bin/mysqld --initialize-insecure --lower_case_table_names=1 --user=$USER --basedir=${MYSQL_INSTALL_DIR} --datadir=${MYSQL_DATA_DIR}
  114. [ $? -eq 0 ] && color "MYSQL 初始化安装成功" 0 || { color "MYSQL 安装失败,退出!" 1 ;exit; }
  115. # chown BaseDir and DataDir
  116. chown -R $USER:$GROUP ${MYSQL_DATA_DIR} ${MYSQL_LOG_DIR} ${MYSQL_BINLOG_DIR}
  117. chown -R $USER:root ${MYSLQ_BASE_DIR}/${MYSQL_DIR}
  118. # configuration environment variable
  119. echo "export PATH=${MYSQL_INSTALL_DIR}/bin:\$PATH" > ${MYSQL_COMMAND_FILE}
  120. cat > ${MYSQL_CONFILE} <<EOF
  121. [mysql]
  122. socket = /tmp/mysql.sock
  123. default-character-set=utf8mb4
  124. [mysqld]
  125. user = $USER
  126. basedir = ${MYSQL_INSTALL_DIR}
  127. datadir = ${MYSQL_DATA_DIR}
  128. server_id = $SERVERID
  129. port = ${MYSQL_PORT}
  130. socket = /tmp/mysql.sock
  131. # 忽略大小写,加在在5.6/5.7低版本的mysql配置文件中有效. 8版本只能在初始化时指定,然后必须配置服务才能启动
  132. lower_case_table_names = 1
  133. innodb_open_files = 1000
  134. #skip-log-bin = 1
  135. log-bin = ${MYSQL_BINLOG_DIR}/mysql-bin
  136. log-error = ${MYSQL_LOG_DIR}/error.log
  137. expire_logs_days = 7
  138. max_binlog_size = 100M
  139. character-set-server = utf8mb4
  140. innodb_file_per_table = 1
  141. skip-name-resolve = 1
  142. innodb_strict_mode = 0
  143. #skip-grant-tables = 1
  144. max_allowed_packet = 1024M
  145. max_connections = 1000
  146. EOF
  147. if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
  148. cat <<-EOF >> /etc/security/limits.conf
  149. * soft nofile 65535
  150. * hard nofile 65535
  151. EOF
  152. fi
  153. cat > /usr/lib/systemd/system/mysqld.service <<EOF
  154. [Unit]
  155. Description=MySQL Server
  156. Documentation=man:mysqld(8)
  157. Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
  158. After=network.target
  159. After=syslog.target
  160. [Service]
  161. User=$USER
  162. Group=$GROUP
  163. ExecStart=${MYSQL_INSTALL_DIR}/bin/mysqld --defaults-file=${MYSQL_CONFILE}
  164. LimitNOFILE = 5000
  165. [Install]
  166. WantedBy=multi-user.target
  167. EOF
  168. # start mysql serivce
  169. echo " start mysql serivce ======>> "
  170. systemctl daemon-reload && systemctl enable --now mysqld.service
  171. sleep 10s
  172. systemctl is-active mysqld &> /dev/null || { color "Mysql Server 启动失败,退出!" 1 ; exit; }
  173. color "MYSQL 安装完成" 0
  174. echo
  175. echo "请先运行: source ${MYSQL_COMMAND_FILE}"
  176. echo
  177. }
  178. check
  179. install

执行脚本

  1. sh mysql_install_v8.sh

通过执行脚本实现一键安装 ~~

转载请注明作者和出处,并添加本页链接。
原文链接: //www.wwtou.com/vGSSNZyy.html