centos rpm安装社区版mysql_Centos 6/7安装mysql8.0.19脚本(RPM包方式)

1 #!/bin/bash2 echo '安装开始前请您详细阅读以下内容,否则可能会导致安装失败'

3 sleep 2

4 echo -e '此脚本安装MySQL-8.0版本MySQL \n如果您的系统版本使用CentOS 7 系统,所需安装包为mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar\n如果您的系统版本使用CentOS 6 系统,所需软件包为mysql-8.0.20-1.el6.x86_64.rpm-bundle.tar'

5 sleep 2

6 echo '安装开始前,请将压缩包放到/usr/local/src/目录,否则脚本不会继续运行'

7 sleep 5

8 #检测运行环境 非centos7系统不能运行此脚本9 echo '正在检测运行环境...'

10 sleep 2

11 RHversion=`cat /etc/redhat-release |awk '{match($0,"release")

12 print substr($0,RSTART+RLENGTH)}'| awk -F'.' '{print $1}'`

13 if [ $RHversion -eq 7 ];then

14 echo "您使用的系统版本为CentOS $RHversion"

15 sleep 1

16 #检测当前账户17 echo '正在检测用户是否为root'

18 sleep 2

19 user=${USER}20 if [ "$user" != root ];then

21 echo "当前用户不为root,正在退出..."

22 exit 1

23 fi

24 #检测libaio软件包25 echo '正在检测依赖环境...'

26 libaio=`rpm -qa|grep libaio |wc -l`27 libaioverison=`rpm -qa|grep libaio|awk -F"-" '{print $1$2}'`28 if [ $libaio -eq 1 ];then

29 echo "libaio版本为$libaioverison"

30 else

31 echo '没有找到libaio依赖包,正在尝试安装'

32 yum install libaio -y33 if [ $? -eq 0 ];then

34 echo "安装完成"

35 else

36 echo "安装失败,正在退出..."

37 sleep 2

38 exit 1

39 fi

40 fi

41 #检测是否有mysql压缩包42 echo '检测是否有MySQL压缩包...'

43 sleep 2

44 if [ -f "/usr/local/src/mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar" ];then

45 echo '文件存在'

46 sleep 2

47 else

48 echo '您没有上传指定的MySQL压缩包或不在指定位置,文件上传位置为/usr/local/src/'

49 exit 1

50 fi

51 #卸载mariadb52 echo '正在卸载mariadb...'

53 rpm -e --nodeps `rpm -qa|grepmariadb`54 sleep 2

55 echo '卸载完成'

56 #添加mysql账户57 TAR_DIR=/usr/local/src/

58 MYSQL_TAR='mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar'

59 echo '开始安装MySQL,安装版本MySQL-8.0.19'

60 sleep 1

61 echo '添加mysql账户...'

62 if [ `grep 'mysql' /etc/passwd |wc -l ` -ge 1 ];then

63 echo '用户已经存在'

64 else

65 groupadd mysql && useradd -r -g mysql -s /sbin/nologin -M mysql66 echo '用户添加成功'

67 fi

68 #解压MySQL压缩包69 echo '正在解压...'

70 cd $TAR_DIR && tarxf $TAR_DIR$MYSQL_TAR71 #安装MySQL72 echo '正在安装MySQL...'

73 rpm -ivh mysql-community-common-8.0.19-1.el7.x86_64.rpm && rpm -ivh mysql-community-libs-8.0.19-1.el7.x86_64.rpm && rpm -ivh mysql-community-client-8.0.19-1.el7.x86_64.rpm && rpm -ivh mysql-community-server-8.0.19-1.el7.x86_64.rpm --force --nodeps74 if [ $? -ne 0 ];then

75 echo '安装异常,请检查是否安装过mysql,正在退出安装程序'

76 exit 1

77 fi

78 #初始化MySQL79 echo '正在初始化MySQL...'

80 mysqld --initialize81 if [ $? -eq 0 ];then

82 echo '初始化完成'

83 else

84 echo '初始化失败,请检查是否安装libaio依赖'

85 fi

86 #写入my.cnf87 cat << EOF > /etc/my.cnf88 [mysqld]89 # Remove leading # and set to the amount of RAM forthe most important data90 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.91 # innodb_buffer_pool_size =128M92 #93 # Remove the leading "#"to disable binary logging94 # Binary logging captures changes between backups and is enabled by95 # default. It's default setting is log_bin=binlog

96 # disable_log_bin97 #98 # Remove leading # to set options mainly useful forreporting servers.99 # The server defaults are faster fortransactions and fast SELECTs.100 # Adjust sizes as needed, experiment to findthe optimal values.101 # join_buffer_size =128M102 # sort_buffer_size =2M103 # read_rnd_buffer_size =2M104 #105 # Remove leading # to revert to previous value fordefault_authentication_plugin,106 # this will increase compatibility with older clients. For background, see:107 # https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin

108 # default-authentication-plugin=mysql_native_password109

110 datadir=/usr/local/mysql/data111 socket=/var/lib/mysql/mysql.sock112

113 log-error=/var/log/mysqld.log114 pid-file=/var/run/mysqld/mysqld.pid115 skip-name-resolve116 default_password_lifetime=42#密码默认42天过期117 password_history=6#存储最近的六次密码118 password_reuse_interval=365#最近六次密码一年内不得重复使用119 EOF120 #创建data目录并启动MySQL121 echo '正在启动MySQL...'

122 mkdir /usr/local/mysql/data -p123 chown -R mysql. /usr/local/mysql124 systemctl start mysqld125 sleep 4

126 echo 'datadir路径为/usr/local/mysql/data'

127 echo 'errorlog路径为/var/log/mysqld.log'

128 #检查MySQL进程是否启动129 MySQLpid=`ss -antlp|grep 3306|wc -l`130 if [ $MySQLpid -ne 0 ];then

131 echo 'MySQL启动成功'

132 else

133 echo 'error,mysql is not running'

134 tail -10f /var/log/mysqld.log135 fi

136 #设置开机自启动137 echo '正在设置自启动...'

138 systemctl enable mysqld139 if [ $? -eq 0 ];then

140 echo '设置自启动成功'

141 else

142 echo '设置自启动失败'

143 fi

144 sleep 1

145 #更改密码安全策略146 echo '正在设置密码策略...'

147 sleep 2

148 OLDPWD=`cat /var/log/mysqld.log |grep password|tail -1 |awk -F"host:" '{print $2}'`149 NEWPWD="ITwh@@$[RANDOM%900+100]"

150 mysql --connect-expired-password -uroot -p"$OLDPWD" -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '"$NEWPWD"'" > /dev/null

151 mysql -uroot -p"$NEWPWD" -e "set global validate_password.policy=1;" -e "set global validate_password.length=11;" -e "set global validate_password.mixed_case_count=4;" -e "set global validate_password.number_count=3;" -e "set global validate_password.special_char_count=2;" > /dev/null

152 mysql -uroot -p"$NEWPWD" -e "show variables like 'validate_password%';"

153 sleep 2

154 echo -e "当前密码策略为:\n 1.密码默认42天过期 \n 2.存储最近的六次密码 \n 3.最近六次密码一年内不得重复使用 \n 4.密码最小长度12位 \n 5.密码至少要包含的小写字母个数和大写字母4个 \n 6.密码至少要包含的数字个数4个 \n 7.密码至少要包含的特殊字符数2个\n"

155 sleep 2

156 echo -e "MySQL初始密码为: $NEWPWD \n"

157 echo "修改密码: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';"

158 elif [ $RHversion -eq 6 ];then

159 echo "您使用的系统版本为CentOS $RHversion"

160 sleep 1

161 #检测当前账户162 echo '正在检测用户是否为root'

163 sleep 2

164 user=${USER}165 if [ "$user" != root ];then

166 echo "当前用户不为root,正在退出..."

167 exit 1

168 fi

169 #检测libaio软件包170 echo '正在检测依赖环境...'

171 libaio=`rpm -qa|grep libaio |wc -l`172 libaioverison=`rpm -qa|grep libaio|awk -F"-" '{print $1$2}'`173 if [ $libaio -eq 1 ];then

174 echo "libaio版本为$libaioverison"

175 else

176 echo '没有找到libaio依赖包,正在尝试安装'

177 yum install libaio -y178 if [ $? -eq 0 ];then

179 echo "安装完成"

180 else

181 echo "安装失败,正在退出..."

182 sleep 2

183 exit 1

184 fi

185 fi

186 #检测numactl软件包187 numactl=`rpm -qa|grep numactl|wc -l`188 numactlversion=`rpm -qa|grep numactl|awk -F"-" '{print $1,$2}'`189 if [ $numactl -eq 1 ];then

190 echo "numactl版本为$numactlversion"

191 else

192 echo '没有找到numactl依赖包,正在尝试安装'

193 yum install numactl -y194 if [ $? -eq 0 ];then

195 echo "安装完成"

196 else

197 echo "安装失败,正在退出..."

198 sleep 2

199 exit 1

200 fi

201 fi

202 #检测是否有mysql压缩包203 echo '检测是否有MySQL压缩包...'

204 sleep 2

205 if [ -f "/usr/local/src/mysql-8.0.20-1.el6.x86_64.rpm-bundle.tar" ];then

206 echo '文件存在'

207 sleep 2

208 else

209 echo '您没有上传指定的MySQL压缩包或不在指定位置,文件上传位置为/usr/local/src/'

210 exit 1

211 fi

212 #卸载mariadb213 echo '正在卸载mariadb...'

214 rpm -e --nodeps `rpm -qa|grepmariadb`215 sleep 2

216 echo '卸载完成'

217 #添加mysql账户218 TAR_DIR=/usr/local/src/

219 MYSQL_TAR='mysql-8.0.20-1.el6.x86_64.rpm-bundle.tar'

220 echo '开始安装MySQL,安装版本MySQL-8.0.19'

221 sleep 1

222 echo '添加mysql账户...'

223 if [ `grep 'mysql' /etc/passwd |wc -l ` -ge 1 ];then

224 echo '用户已经存在'

225 else

226 groupadd mysql && useradd -r -g mysql -s /sbin/nologin -M mysql227 echo '用户添加成功'

228 fi

229 #解压MySQL压缩包230 echo '正在解压...'

231 cd $TAR_DIR && tarxf $TAR_DIR$MYSQL_TAR232 #安装MySQL233 echo '正在安装MySQL...'

234 rpm -ivh mysql-community-common-8.0.20-1.el6.x86_64.rpm && rpm -ivh mysql-community-libs-8.0.20-1.el6.x86_64.rpm && rpm -ivh mysql-community-client-8.0.20-1.el6.x86_64.rpm && rpm -ivh mysql-community-server-8.0.20-1.el6.x86_64.rpm --force --nodeps235 if [ $? -ne 0 ];then

236 echo '安装异常,请检查是否安装过mysql,正在退出安装程序'

237 exit 1

238 fi

239 #初始化MySQL240 echo '正在初始化MySQL...'

241 mysqld --initialize242 if [ $? -eq 0 ];then

243 echo '初始化完成'

244 else

245 echo '初始化失败,请检查是否安装libaio依赖'

246 fi

247 #写入my.cnf248 cat << EOF > /etc/my.cnf249 [mysqld]250 # Remove leading # and set to the amount of RAM forthe most important data251 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.252 # innodb_buffer_pool_size =128M253 #254 # Remove the leading "#"to disable binary logging255 # Binary logging captures changes between backups and is enabled by256 # default. It's default setting is log_bin=binlog

257 # disable_log_bin258 #259 # Remove leading # to set options mainly useful forreporting servers.260 # The server defaults are faster fortransactions and fast SELECTs.261 # Adjust sizes as needed, experiment to findthe optimal values.262 # join_buffer_size =128M263 # sort_buffer_size =2M264 # read_rnd_buffer_size =2M265 #266 # Remove leading # to revert to previous value fordefault_authentication_plugin,267 # this will increase compatibility with older clients. For background, see:268 # https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin

269 # default-authentication-plugin=mysql_native_password270

271 datadir=/usr/local/mysql/data272 socket=/var/lib/mysql/mysql.sock273

274 log-error=/var/log/mysqld.log275 pid-file=/var/run/mysqld/mysqld.pid276 skip-name-resolve277 default_password_lifetime=42#密码默认42天过期278 password_history=6#存储最近的六次密码279 password_reuse_interval=365#最近六次密码一年内不得重复使用280 EOF281 #创建data目录并启动MySQL282 echo '正在启动MySQL...'

283 mkdir /usr/local/mysql/data -p284 chown -R mysql. /usr/local/mysql285 service mysqld start286 sleep 4

287 echo 'datadir路径为/usr/local/mysql/data'

288 echo 'errorlog路径为/var/log/mysqld.log'

289 #检查MySQL进程是否启动290 MySQLpid=`ss -antlp|grep 3306|wc -l`291 if [ $MySQLpid -ne 0 ];then

292 echo 'MySQL启动成功'

293 else

294 echo 'error,mysql is not running'

295 tail -10f /var/log/mysqld.log296 fi

297 #设置开机自启动298 echo '正在设置自启动...'

299 chkconfig --add mysqld300 chkconfig mysqld on301 if [ $? -eq 0 ];then

302 echo '设置自启动成功'

303 else

304 echo '设置自启动失败'

305 fi

306 sleep 1

307 #更改密码安全策略308 echo '正在设置密码策略...'

309 sleep 2

310 OLDPWD6=`cat /var/log/mysqld.log |grep password|tail -1 |awk -F"host:" '{print $2}'`311 NEWPWD6="ITwh@@$[RANDOM%900+100]"

312 mysql --connect-expired-password -uroot -p"$OLDPWD6" -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '"$NEWPWD6"'" > /dev/null

313 mysql -uroot -p"$NEWPWD6" -e "set global validate_password.policy=1;" -e "set global validate_password.length=11;" -e "set global validate_password.mixed_case_count=4;" -e "set global validate_password.number_count=3;" -e "set global validate_password.special_char_count=2;" > /dev/null

314 mysql -uroot -p"$NEWPWD6" -e "show variables like 'validate_password%';"

315 sleep 2

316 echo -e "当前密码策略为:\n 1.密码默认42天过期 \n 2.存储最近的六次密码 \n 3.最近六次密码一年内不得重复使用 \n 4.密码最小长度12位 \n 5.密码至少要包含的小写字母个数和大写字母4个 \n 6.密码至少要包含的数字个数4个 \n 7.密码至少要包含的特殊字符数2个\n"

317 sleep 2

318 echo -e "MySQL初始密码为: $NEWPWD6 \n"

319 echo "修改密码: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';"

320 else

321 echo '没想好'

322 fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值