> 文章列表 > Linux Shell 实现一键部署Msql8

Linux Shell 实现一键部署Msql8

Linux Shell 实现一键部署Msql8

      

 

mysql前言

MySQL 是最流行的关系数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

mysql 下载

Mysql下载 Mysql 管理
download download

 Linux 各系统下载使用参考

Red Hat Rocky Linux  Oracle Linux

AlmaLinux 

ubuntu suselinux esxi RHEL标准安装 系统安装参考 YUM参考

MobaXterm 远程连接工具

Red Hat Enterprise 9.0 文档 Kickstart 生成器
download download download download download download download 参考 参考 配置参考 download 参考 Kickstart 
版本兼容性

安装 Mysql 8

  • 创建安装自动化脚本

  • 安装位置 /usr/local/mysql
  • Redhat 9 functions使用需要执行安装yum install initscripts -y 
  • mysql用户名密码 root/Ciasm@123
  • curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXX' #更改自己的企业微信机器人地址 
vim /mysql8_install.sh
#!/bin/sh
# -*- coding: utf-8 -*-
# Author: CIASM 
# Date: 2023/04/01source /etc/rc.d/init.d/functions#Define data path variables
data_downloads=/data/downloads#Define MYSQL path variables
echo "Define MYSQL path variables"
sleep 3
MYSQL_URL=https://cdn.mysql.com/archives/mysql-8.0/
MYSQL_FILE=mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
MYSQL_PREFIX=/usr/local/mysql
MYSQL_glibc=mysql-8.0.31-linux-glibc2.12-x86_64function mysql_package (){
echo "mysql package"
sleep 3
timedatectl set-timezone Asia/Shanghai
yum install epel-release -y
yum remove postfix mariadb-libs -y
yum install -y wget protobuf-lite libaio numactl-libs numactl policycoreutils-python-utils net-tools libncurses*
}function install_mysql (){
echo "install mysql "
sleep 3
if [ ! -d ${MYSQL_PREFIX} ];then
mysql_package
mkdir -p $data_downloads
wget -N -P $data_downloads ${MYSQL_URL}${MYSQL_FILE}
tar -xf $data_downloads/${MYSQL_FILE} -C $data_downloadsif [ $? -eq 0 ];then mv  $data_downloads/$MYSQL_glibc /usr/local/mysqlmysql_configaction "The MYSQL Install Sussess..." /bin/trueelseaction "The MYSQL Install Failed..." /bin/falseexit 1fielseecho  -e "\\033[31mThe MYSQL already Install...\\033[0m"
fi}function mysql_config (){
echo "mysql config"
sleep 3
useradd mysql -r -s /sbin/nologin
mkdir -p /data/mysql_data3306
chown root.mysql -R /usr/local/mysqlcat >>/etc/my.cnf<<EOF
[Client]
port=3306
default-character-set=utf8mb4
socket  = /data/mysql_data3306/mysql.sock[mysqld]
datadir = /data/mysql_data3306
socket = /data/mysql_data3306/mysql.sock
log-error = /var/log/mysql_3306.log
port = 3306
max_connections=200
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
character-set-client-handshake=FALSE
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
default-time_zone='+8:00'
lower_case_table_names=1
log_timestamps = SYSTEM
log_bin_trust_function_creators = on
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[mysql]
default-character-set=utf8mb4
EOF#Creating log output
echo "Creating log output"
sleep 3
touch /var/log/mysql_3306.log && chown -R mysql:mysql /var/log && chmod 755 /var/log/mysql*echo "initialized database"
sleep 3
#Initialize each instance: After initialization, the password will be generated in the log. Remember to save it and use it later.
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data3306  --log_error=/var/log/mysql_3306.log#Open SSL connections for each instance
/usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data3306 --log_error=/var/log/mysql_3306.logecho "Configure the database startup service"
sleep 3
#Copying server the Startup Script
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld#start mysql
echo "start mysql"
sleep 3
service mysqld start
chkconfig --add mysqld
chkconfig mysqld on#Mysql environment variable
echo "Mysql environment variable"
sleep 3
ln -s /usr/local/mysql/bin/* /usr/bin/echo "limits config"
cat >>/etc/security/limits.conf<<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF#system Maximum config
echo "system Maximum number of connections"
echo "fs.file-max=65535" >> /etc/sysctl.conf#Resetting the Default Password
echo "mysql initialize default password"
sleep 3
mysql -S /data/mysql_data3306/mysql.sock -p`cat /var/log/mysql_3306.log | grep 'password is generated' | awk '{print $NF}'` --connect-expired-password -e "alter user root@localhost identified by 'Ciasm@123'; FLUSH PRIVILEGES;"#cofig Mysql alter database
mysql -uroot -pCiasm@123 -e "use mysql; update user set host = '%' where user = 'root'; FLUSH PRIVILEGES; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Ciasm@123';"#firewall config
echo "config"
sleep 3
firewall-cmd --zone=public --add-port=3306/tcp --permanent && firewall-cmd --reload #Delete mysql the downloaded installation package
echo "Delete mysql the downloaded installation package"
sleep 3
rm -rf $data_downloads/MYSQL_FILE
}function Deployment_completion_notification (){host_ID=`dmidecode -s system-serial-number | sed -r 's/\\s+//g'`host_IP=`ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{ print $2}' | awk 'NR==1'`memory_Size=`dmidecode -t memory | grep Size | grep -v No | awk '{sum+=$2} END {printf "%.0fG\\n",sum/1^C4}'`CPU_Model=`cat /proc/cpuinfo | grep 'model name' | awk '{print $6}' | uniq`Disk_size=`fdisk -l | grep "sda:" | awk '{print $3$4}'`redhat_version=`cat /etc/redhat-release | grep "release" | awk '{print $6}'`redhat_core=`cat /proc/version | grep "version" | awk '{print $3}'`mysqld_server=`systemctl status mysqld  | grep "Active" | awk '{print $2}'`mysql_version=`mysql -V | grep "Ver" | awk '{print $3}'`curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXX' \\-H 'Content-Type: application/json' \\-d '{"msgtype": "markdown","markdown": {"content": " **system check** <font color=\\"info\\"> complete </font>  \\n> **Host IP Address** \\n[http://'$host_IP'](http://'$host_IP') \\n> **Hardware information** \\nhostSN:<font color=\\"info\\"> '$host_ID' </font> \\nCPU_Model:<font color=\\"info\\"> '$CPU_Model' </font> \\nmemory_Size:<font color=\\"info\\"> '$memory_Size' </font> \\nDisk_size:<font color=\\"info\\"> '$Disk_size' </font> \\nSystem_version:<font color=\\"info\\"> '$redhat_version' </font> \\nsystem_core:<font color=\\"info\\"> '$redhat_core' </font> \\n> **mysql install** \\nmysql_version:<font color=\\"info\\"> '$mysqld_version' </font> \\nmysql_server:<font color=\\"info\\"> '$mysqld_server' </font> \\n",}}'
}function main (){
install_mysql
Deployment_completion_notification
}main

执行一键安装mysql

sh /mysql8_install.sh

安装完成企业微信提醒

rewriter tool