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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#!/bin/bash
#data:20171104
#QQ:654996537
#Name:Zhang
#判断是否是root用户
if [ $(id -u) != "0" ]; then
    echo " Not the root user! Try using sudo Command ! "
    exit 1
fi
#安装依赖包
yum -y groupinstall "Desktop Platform Development"
yum install  -y  gd-devel  libjpeg-devel  libpng-devel  libxml2-devel bzip2-devel libcurl-devel  libmcrypt  libmcrypt-devel  zlib-devel  net-snmp-devel openssl  cmake  ncurses-devel  git  gcc  libevent-devel
 
#自定义源码包名称
Package_Type=".tar.gz"
Package_Version="mysql-5.6.31"
Install_Package=$Package_Version$Package_Type
Setup_path="/root/"
#自定义用户和用户组
Group_Name="mysql"
User_Name="mysql"
#自定义RPM包
RPM="$User_Name"
#自定义MySql数据库保存路径
#####Mydata="/mydata/{data,bin-log}}"
#mkdir /mydata
#mkdir /mydata/data
#mkdir /mydata/bin-log
mkdir /mydata
mkdir /mydata/{data,bin-log}
DataDir="/mydata/data"
#自定义MySql配置文件路径
MySql_Conf="/etc/mysql"
#自定义MySql安装路径
Install_prefix="/usr/local/mysql"
#判断Rpm包是否安装
function RPM_Install(){
rpm -qa | egrep "$RPM" >>/dev/null
    if [ $? -eq 0 ]
    then
        echo "$RPM is install Yes."
    else 
        echo "$RPM is Not install."
    fi
}
RPM_Install
#判断用户和用户组
Add_Group_User(){
egrep "^$Group_Name" /etc/group >& /dev/null
if [ $? -ne 0 ]
then
    echo "mysql 用户组正在添加."
    groupadd $Group_Name
else
    echo " The $Group_Name user group already exists."
    echo "mysql 用户组已经添加."
fi
#判断mysql用户是否存在
egrep "^$User_Name" /etc/passwd >& /dev/null
if [ $? -ne 0 ]
then
    echo "mysql 用户正在添加."
    useradd -g $Group_Name $User_Name
else
    echo "mysql 用户已经添加."
    echo " The $User_Name user already exists."
fi
}
Add_Group_User
#判断源码包文件是否存在
if [ -e $Package_Name ]
then
        echo "$Package_Name The Package exists."
else
        echo "$Package_Name The package does not exist."
fi
 
#编译安装mysql
cd $Setup_path
tar -zxvf $Install_Package
cd $Package_Version
configure_opts=(
 -DCMAKE_INTALL_PREFIX=$Install_prefix
 -DSYSCONFDIR=$MySql_Conf 
 -DMYSQL_DATADIR=$DataDir
 -DWITH_INNOBASE_STORAGE_ENGINE=1 
 -DWITH_ARCHIVE_STORAAGE_ENGINE=1 
 -DWITH_READLINE=1 
 -DWITH_OPENSSL=system 
 -DWITH_ZLIB=system 
 -DWITH_LIBWRAp=0 
 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock  
 -DDEFAULT_CHARSET=utf8
 -DDEFAULT_COLLATION=utf8_general_ci
)
cmake . ${configure_opts[@]}
#判断是否编译成功
if [[ $? -eq 0 ]]
then
    make && make install
else
    echo "编译失败,请重新编译" && exit 1
fi
#修改mysql组和数据目录
cd $Install_prefix
chown :mysql ./* -R
chown -R mysql:mysql $DataDir
chown -R mysql:mysql /mydata/bin-log
#初始化数据库
$Install_prefix/scripts/mysql_install_db --user=mysql --datadir=$DataDir
#判断是否初始化成功,目录不为空说明成功,目录为空则失败
if "$(ls -A $DataDir)" ]; then
echo "$DataDir is not Empty"
else
echo "$DataDir is Empty"
fi
#提供服务脚本
cp $Install_prefix/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
#提供配置文件
#mv /etc/my.cnf /etc/my.cnf.bak
#mv /etc/my.cnf.d /etc/my.cnf.d.bak
if [ -e /etc/my.cnf ]
then
    echo "File exists."
    mv /etc/my.cnf /etc/my.cnf.bak
else
    echo "File does not exist."
fi
 
#if [ -e /etc/my.cnf.d ]
#then
#        echo "File exists."
#        mv /etc/my.cnf.d /etc/my.cnf.d.bak
#else
#        echo "File does not exist."
#fi
mkdir $MySql_Conf
cp $Install_prefix/support-files/my-default.cnf  /etc/mysql/my.cnf
sed -i '/datadir/a\datadir = /mydata/data' /etc/mysql/my.cnf
sed -i '/log_bin/a\log_bin = /mydata/bin-log/mysql-bin' /etc/mysql/my.cnf
sed -i '$ a\innodb_file_per_table = 1' /etc/mysql/my.cnf
#修改环境变量
cat >/etc/profile.d/mysql.sh << EOF
export PATH=/usr/local/mysql/bin/:$PATH
EOF
source /etc/profile.d/mysql.sh
source /etc/profile
man -M /usr/local/mysql/man/
#启动MySql服务
#Centos6启动方式
#service mysqld start
#Centos7启动方式
#systemctl start mysqld.service
/etc/rc.d/init.d/mysqld start
#判断MySql是否启动
MySQL_running() {
Startup_file="/etc/rc.d/init.d/mysqld"
#通过查看进程判断是否正常启动
proc=`ps -ef | grep mysql | grep -v grepwc -l`
#通过监听3306端口进行判断是否启动
port=`netstat -lntup|grep 3306|wc -l`
if [ $proc -eq 2 ] & [ $port -eq 1 ]
   then
        echo "MySQL is running."
        echo "`ss -tnlp | grep mysql`"
else
        echo "MySQL is no running."
#       $Startup_file start
 
fi
}
MySQL_running