订阅本站
收藏本站
微博分享
QQ空间分享

用shell脚本全自动编译安装mysql

lilin 分类:数据库 时间:2019/11/29 17:31:33 评论: 加入收藏

mysql的编译安装比较麻烦,尤其是一大堆命令,来手动执行,稍有不慎,就会出错。生产上一般都是先在本地测试环境进行自动化测试,如果ok,那么就在生产上进行自动化安装,省事,省力,安全

 

本文环境:

CentOS6.5x64 ,mysql版本:mysql-5.6.26。采用自动化编译安装

 

相关准备工作:

1.熟知sed 文本编译命令,expect交互式脚本的使用。

 

2.提前将需要安装的mysql安装包放在/root下面,当然了,下载的过程也可以一并写在脚本中,为了节约时间,下载过程一般不会写在脚本中,而且好多生产环境是不能够连接外网的。

[root@xiaolyu76 ~]# ls

anaconda-ks.cfg   install.log install.log.syslog mysql-5.6.26.tar.gz  mysql_install_auto.sh

 

3.下面是我的脚本:mysql_install_auto.sh 的内容:

[root@xiaolyu76 ~]# cat mysql_install_auto.sh

脚本如下:

#!/bin/bash

MYSQL_PASSWD="123456"

yum remove  -y mysql mysql-server

yum install -y cmake     ncurses-devel 

tar xf mysql-5.6.26.tar.gz -C /usr/local/src/ 

cd /usr/local/src/mysql-5.6.26

useradd -M -s /sbin/nologin mysql 

cmake /

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql /

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock /

-DDEFAULT_CHARSET=utf8 /

-DDEFAULT_COLLATION=utf8_general_ci /

-DWITH_EXTRA_CHARSETS=all /

-DWITH_MYISAM_STORAGE_ENGINE=1/

-DWITH_INNOBASE_STORAGE_ENGINE=1/

-DWITH_MEMORY_STORAGE_ENGINE=1/

-DWITH_READLINE=1/

-DENABLED_LOCAL_INFILE=1/

-DMYSQL_DATADIR=/usr/local/mysql/data /

-DMYSQL-USER=mysql

make -j 4 && make install

cd && chown -R mysql:mysql /usr/local/mysql/

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf  

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

sed  -i 's%^basedir=%basedir=/usr/local/mysql%' /etc/init.d/mysqld

sed  -i 's%^datadir=%datadir=/usr/local/mysql/data%' /etc/init.d/mysqld

chkconfig mysqld on

/usr/local/mysql/scripts/mysql_install_db /

--defaults-file=/etc/my.cnf  /

--basedir=/usr/local/mysql/  /

--datadir=/usr/local/mysql/data/  /

--user=mysql

ls /usr/local/mysql/data/

ln -s /usr/local/mysql/bin/* /bin/

service mysqld start

echo "now let's begin mysql_secure_installation "

if [ ! -e /usr/bin/expect ] 

then  yum install expect -y 

fi

echo '#!/usr/bin/expect

set timeout 60

set password [lindex $argv 0]

spawn mysql_secure_installation

expect {

"enter for none" { send "/r"; exp_continue}

"Y/n" { send "Y/r" ; exp_continue}

"password" { send "$password/r"; exp_continue}

"Cleaning up" { send "/r"}

}

interact ' > mysql_secure_installation.exp 

chmod +x mysql_secure_installation.exp

./mysql_secure_installation.exp $MYSQL_PASSWD 

脚本结束。

 

4.[root@xiaolyu76 ~]# sh  mysql_install_auto.sh //直接执行该脚本即可。

用<a href=http://8u.hn.cn/linux/Shelljiaocheng/ target=_blank class=infotextkey>shell</a>脚本全自动编译<a href=http://8u.hn.cn/linuxaz/ target=_blank class=infotextkey>安装</a>mysql

用<a href=http://8u.hn.cn/linux/Shelljiaocheng/ target=_blank class=infotextkey>shell</a>脚本全自动编译<a href=http://8u.hn.cn/linuxaz/ target=_blank class=infotextkey>安装</a>mysql

 

5.脚本是shell脚本,最后mysql数据库安全初始化的时候,生成一个expect的脚本:mysql_secure_installation.exp。

 

6.说明:为了增强脚本的整齐美观和可读性,去掉了很多if 判断以及echo $?判断脚本是否执行成功。

 

本文脚本经测试完全正确。

 

TAG:

文章评论

留言与评论(共有 0 条评论)
   
验证码: