云网牛站
所在位置:首页 > Linux云数据库 > 用shell脚本全自动编译安装mysql

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

2017-12-03 21:52:25作者:Linux编辑稿源:丰泽园的天空

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 //直接执行该脚本即可。

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

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

 

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

 

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

 

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

 

相关主题

MySQL面试问题与解答

精选文章
热门文章