Linux一键安装MySQL脚本

经常需要本地虚拟机安装MySQL服务进行学习或者开发测试什么的。

今天记录一下自己写的Linux一键安装MySQL的脚本

1 安装Docker

因为我是用Docker安装的MySQL,所以第一步安装一下Docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash

# 如果以前安装过Docker,那么为了保证环境的一致性,还是先卸载了再安装比较好
echo "开始卸载旧docker"
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

echo "开始安装docker"
yum -y install docker

echo "设置开机启动"
systemctl enable docker.service

echo "设置阿里云镜像加速"
echo '{
"registry-mirrors": ["https://moln2pbd.mirror.aliyuncs.com"]
}' > /etc/docker/daemon.json

echo "重启daemon服务"
systemctl daemon-reload

echo "重启docker"
systemctl restart docker

echo "docker安装成功,版本信息如下"
docker -v

2 安装MySQL

脚本需要3个参数

1:mysql镜像名称

2:端口

3:mysql密码

1
sh install_mysql.sh mysql:8.0.17 3306 myPassword
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/bash

# 使用示例: sh install_mysql.sh mysql:8.0.17 3306 myPassword

# 判断如果不是一个参数的话就报错
if [ "$#" != 3 ]; then
echo "Script needs 3 param,that is mysql version and port and password,like sh install_mysql.sh mysql:8.0.17 3306 myPassword,please check."
exit 1
fi

# 创建初始文件夹
base_dir="/usr/local/share/applications/$1_$2"
base_dir_replace=${base_dir//':'/'_'}
dirs=("log" "data" "conf" "mysql-files")
for dir in ${dirs[@]}
do
currentDir="$base_dir_replace/$dir"
if [ ! -d $currentDir ]; then
echo "目录不存在,准备创建:$currentDir"
mkdir -p $currentDir
if [ -d $currentDir ]
then
echo "目录创建成功:$currentDir"
else
echo "目录创建失败:$currentDir"
fi
else
echo "目录已存在,不创建:$currentDir"
fi
echo
done

# 开始安装mysql

echo "拉取$1镜像"
docker pull $1

my_mysql_contain_name=my_$1_$2
my_mysql_contain_name_repalce=${my_mysql_contain_name//':'/'_'}
echo "创建mysql容器并启动"
docker run -p $2:3306 --name $my_mysql_contain_name_repalce \
-v $base_dir_replace/log:/var/log/mysql:rw \
-v $base_dir_replace/data:/var/lib/mysql:rw \
-v $base_dir_replace/conf:/etc/mysql:rw \
-v $base_dir_replace/mysql-files:/var/lib/mysql-files/:rw \
-e MYSQL_ROOT_PASSWORD=$3 \
-d $1

echo "创建临时mysql容器,用于复制配置文件"
my_temporary_mysql_contain_name=myTemporary_$1_$2
my_temporary_mysql_contain_name_replace=${my_temporary_mysql_contain_name//':'/'_'}
docker run -p $[$2+100]:3306 --name $my_temporary_mysql_contain_name_replace -e MYSQL_ROOT_PASSWORD=root -d $1

echo "拷贝临时容器的配置文件到宿主机"
docker cp $my_temporary_mysql_contain_name_replace:/var/lib/mysql/. $base_dir_replace/data/
docker cp $my_temporary_mysql_contain_name_replace:/etc/mysql/. $base_dir_replace/conf/

echo "删除临时容器"
docker rm -f $my_temporary_mysql_contain_name_replace

echo "设置容器开机启动"
docker update --restart=always $my_mysql_contain_name_repalce

8 躺板板

红伞伞白杆杆,吃完一起躺板板

躺板板埋山山,亲朋都来吃饭饭

饭饭里有红伞伞,吃完全村埋山山,来年长满红伞伞

联系博主,加入【羊山丨交流社区】

联系博主


本博客所有文章除特别声明外,均为原创。版权归博主小马所有。任何团体、机构、媒体、网站、公众号及个人不得转载。如需转载,请联系博主(关于页面)。如其他团体、机构、媒体、网站、博客或个人未经博主允许擅自转载使用,请自负版权等法律责任!