【实验需求】

运行脚本,离线部署二进制MySQL5.7

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/bin/bash
# **********************************************************
# * Filename : install_mysql5.7.sh
# * Author : Herbert
# * Version : 1.0
# * Email : wuhaolam@163.com
# * Website : wuhaolam.github.io
# * Date : 2023-02-27
# * Description : install mysql5.7
# **********************************************************
## 二进制安装 MySQL 5.7 或 MySQL8.0

. /etc/init.d/functions
PackageDir="/root"
PackageName="mysql-5.7.40-linux-glibc2.12-x86_64"
MysqlRootPassword="wuhaolam"
ID=`ip a show eth0 | awk -F'[./]' '/\<inet\>/ {print $4}'`
# 1、安装相关包
yum -y install libaio numactl-libs libncurses* &> /dev/null || { echo -e "\033[1;31minstall package fail\033[0m";exit 1; }

# 2、创建用户和组及目录
if ! id mysql &> /dev/null;then
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
fi

if [ -d /data/mysql ];then
action "数据库存在,退出安装" /bin/false
exit 1
else
mkdir -p /data/mysql/ && chown -R mysql:mysql /data/mysql/
fi

## 创建二进制日志存放目录
[ -d /mysql/binlog/ ] || mkdir -p /mysql/binlog/ && chown -R mysql:mysql /mysql/binlog/

# 3、准备程序文件
# 下载好的程序文件
[ -e ${PackageDir}/${PackageName}.tar.gz ] || { echo -e "\033[1;31mPackage file is not exits\033[0m";exit 1; }

tar xf ${PackageDir}/${PackageName}.tar.gz -C /usr/local/
cd /usr/local/
ln -s ${PackageName}/ mysql
chown -R root:root /usr/local/mysql/

# 4、准备环境变量
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh


# 5、准备配置文件和相关目录
cat > /etc/my.cnf << EOF
[client]
port=3306
socket=/data/mysql/mysql.sock

[mysql]
prompt="\\\r:\\\m:\\\s(\\u@\\h) [\\d]>\\_"

[mysqld]
log-bin=/mysql/binlog/mysql-bin
server-id=${ID}
datadir=/data/mysql
socket=/data/mysql/mysql.sock
user=mysql
symbolic-links=0
skip_name_resolve=1

log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
EOF

# 6、初始化数据库文件
mysqld --initialize --user=mysql --datadir=/data/mysql &> /dev/null

# 7、准备服务脚本启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start &> /dev/null && echo -e "\033[1;32mMySQL startup success\033[0m" || { echo -e "\033[1;31mMySQL startup failed\033[0m";exit 1; }

# 8、修改口令
# 修改之前生成的随机密码为指定密码
Password=`awk '/A temporary password/ {print $11}' /data/mysql/mysql.log`
mysqladmin -uroot -p${Password} password ${MysqlRootPassword} &> /dev/null && action "数据库安装完成" /bin/true || action "密码修改失败" /bin/false