网站首页 > 技术教程 正文
提醒:本文为合集文章,后续会持续更新!
关注我,持续学习shell脚本,每日提升!
前几天给了一个Nginx部署脚本,今天再来一个MySQL的部署脚本。同样地,先给出部署文档步骤:
1)下载
cd /usr/local
sudo curl -O https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
2)解压
sudo tar Jxf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
sudo ln -s mysql-8.0.30-linux-glibc2.12-x86_64 mysql
3)创建用户
sudo useradd -s /sbin/nologin mysql
4)创建数据目录
sudo mkdir -p /data/mysql
sudo chown -R mysql:mysql /data/mysql
5)定义配置文件
sudo vi /etc/my.cnf #写入如下内容
[mysql]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
user = mysql
port = 3306
basedir = /usr/local/mysql
datadir = /data/mysql
socket = /tmp/mysql.sock
pid-file = /data/mysql/mysqld.pid
log-error = /data/mysql/mysql.err
6)安装依赖
##Rocky / CentOS
sudo yum install -y ncurses-compat-libs-6.1-9.20180224.el8.x86_64 libaio-devel
## Ubuntu
sudo apt install libaio-dev libtinfo5
7)初始化
/usr/local/mysql/bin/mysqld --console --initialize-insecure --user=mysql ## initialize-insecure使用空密码
8)启动
sudo vi /usr/lib/systemd/system/mysqld.service #写如下内容
[Unit]
Description=MYSQL server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=forking
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONS
ExecReload=/bin/kill -HUP -$MAINPID #这里-HUP可以是改成-s HUP,就变成强制杀进程,有需要可以改,下面也一样
ExecStop=/bin/kill -QUIT $MAINPID #-s QUIT是强制杀进程
KillMode=process
LimitNOFILE=65535
Restart=on-failure
RestartSec=10
RestartPreventExitStatus=1
PrivateTmp=false
### end
sudo systemctl daemon-reload
sudo systemctl enable mysqld
sudo systemctl start mysqld
9)配置环境变量
sudo vi /etc/profile #最后面增加下面一行内容
export PATH=$PATH:/usr/local/mysql/bin
## 然后执行下面命令,使其生效
sudo source /etc/profile
10)设置密码
mysqladmin -uroot password 'your_new_passwd'
将上面步骤写成脚本:
#!/bin/bash
### 设置变量 ###
mysql_url="https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz"
mysql_base_dir="/usr/local/mysql"
mysql_data_dir="/data/mysql"
mysql_root_pwd="aminglinux.Com"
mysql_rep_pwd="Aminglinux123"
##########################
ck_ok()
{
if [ $? -ne 0 ]
then
echo "$1 error."
exit 1
fi
}
download_mysql()
{
##下载前,先判断当前目录下是否已经下载过
cd /usr/local
if [ -f mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz ]
then
echo "当前目录已经存在mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz"
echo "检测md5"
mysql_md5=`md5sum mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz|awk '{print $1}'`
if [ ${mysql_md5} == "2469b1ae79e98110277d9b5bee301135" ]
then
return 0
else
sudo /bin/mv mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz.old
fi
fi
sudo wget ${mysql_url}
ck_ok "下载mysql"
}
install_mysql()
{
cd /usr/local
echo "解压mysql"
sudo tar Jxf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
ck_ok "解压mysql"
if [ -d ${mysql_base_dir} ]
then
echo "${mysql_base_dir}已经存在,挪走"
sudo /bin/mv ${mysql_base_dir} ${mysql_master_base_dir}-`date +%s`
fi
sudo mv mysql-8.0.30-linux-glibc2.12-x86_64 mysql
if id mysql &>/dev/null
then
echo "系统已经存在mysql用户,跳过创建"
else
echo "创建mysql用户"
sudo useradd -s /sbin/nologin mysql
fi
if [ -d ${mysql_data_dir} ]
then
echo "${mysql_data_dir}已经存在,挪走"
sudo /bin/mv ${mysql_data_dir} ${mysql_data_dir}-`date +%s`
fi
echo "创建mysql datadir"
sudo mkdir -p ${mysql_data_dir}
sudo chown -R mysql ${mysql_data_dir}
if [ -f ${mysql_base_dir}/my.cnf ]
then
echo "master配置文件已经存在,删除"
sudo rm -f ${mysql_base_dir}/my.cnf
fi
echo "创建master配置文件my.cnf"
cat > /tmp/my.cnf <<EOF
[mysqld]
user = mysql
port = 3306
server_id = 1
basedir = ${mysql_base_dir}
datadir = ${mysql_data_dir}
socket = /tmp/mysql.sock
pid-file = ${mysql_data_dir}/mysqld.pid
log-error = ${mysql_data_dir}/mysql.err
EOF
sudo /bin/mv /tmp/my.cnf ${mysql_base_dir}/my.cnf
echo "安装依赖"
sudo yum install -y ncurses-compat-libs-6.1-9.20180224.el8.x86_64 libaio-devel
echo "初始化"
sudo ${mysql_base_dir}/bin/mysqld --console --datadir=${mysql_data_dir} --initialize-insecure --user=mysql
ck_ok "初始化"
if [ -f /usr/lib/systemd/system/mysqld.service ]
then
echo "mysql服务管理脚本已经存在,挪走"
sudo /bin/mv /usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/mysqld.service-`date +%s`
fi
echo "创建服务启动脚本"
cat > /tmp/mysqld.service <<EOF
[Unit]
Description=MYSQL server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=forking
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=${mysql_base_dir}/bin/mysqld --defaults-file=${mysql_base_dir}/my.cnf --daemonize $OPTIONS
ExecReload=/bin/kill -HUP -$MAINPID
ExecStop=/bin/kill -QUIT $MAINPID
KillMode=process
LimitNOFILE=65535
Restart=on-failure
RestartSec=10
RestartPreventExitStatus=1
PrivateTmp=false
EOF
sudo /bin/mv /tmp/mysqld.service /usr/lib/systemd/system/mysqld.service
sudo systemctl unmask mysqld
sudo systemctl daemon-reload
sudo systemctl enable mysqld
echo "启动mysql"
sudo systemctl start mysqld
ck_ok "启动mysql"
echo "设置mysql密码"
${mysql_base_dir}/bin/mysqladmin -S/tmp/mysql.sock -uroot password "${mysql_root_pwd}"
ck_ok "设置mysql密码"
}
main()
{
download_mysql
install_mysql
}
main
写脚本最重要的是思路,有了思路,有了命令,还难么?当然,我们还需要考虑到脚本可能出现的异常,比如下载的包不对,很有可能导致后面的解压出错。所以就需要先判断下载的包到底对不对。不过,这个能力就需要一点一点积累了,多写多练肯定是没错的。
关注"阿铭linux",持续提升!
猜你喜欢
- 2024-10-12 高端Linux 脚本很有用,赶紧学起来!
- 2024-10-12 linux日常脚本(linux有意思的脚本)
- 2024-10-12 彻底搞懂nginx基本使用配置(nginx常用配置参数)
- 2024-10-12 nginx的脚本特性-nginScript笔记(nginx执行lua脚本)
- 2024-10-12 详解shell脚本case条件语句,开发各种服务启动脚本跳板机
- 2024-09-25 详解利用系统函数模拟实现nginx 系统脚本启动的特殊颜色专业效果
- 2024-09-25 0364-如何使用Nginx实现HiveServer2负载均衡
- 2024-09-25 centos 7.9 shell脚本安装nginx-1.20.2
- 2024-09-25 CentOS 开机启动脚本(centos开机启动脚本)
- 2024-09-25 Nginx日志安全分析脚本(nginx日志大量502)
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)