暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

编写自动化安装mysql 5.6 shell脚本

lovedb 2019-11-06
1225

前言

      运维的数据库数量比较大,并且管理规范,可以采用自动化脚本的方式提升工作效率,减少人为操作的成本。


前提条件

  • 操作系统   redhat 6.8

  • shell版本   gzu bash 4.1.2



脚本明细


[root@standbygtid mysql_media_dir]# more shell_dir/auto_install_mysql.sh 

#!/bin/sh


#定义变量

source_mysql_dir=/mysql_rpm_5_6_27_dir

mysql_media_dir=/mysql_media_dir

dir_is_exist=$(ls -l ${mysql_media_dir}|awk '{print $2}')




#定义函数

#表明目录中已经有文件,则直接退出不再继续执行脚本的后续代码

function dir_exist_exit() {


if [ ${dir_is_exist} -ne 0 ]; then

  echo  "${mysql_media_dir} have files,exit  main shell script,not continue!!!"

  exit 32

fi

}


#定义函数

#删除mysql已安装的rpm相关软件

function delete_installed_mysql_rpm() {

     rpmlist=$(rpm -qa|grep -i mysql)

     for mysql_rpm in $rpmlist 

     do

         rpm -e --nodeps ${mysql_rpm}

     done

}



#判断mysql安装介质目录是否存在

if [ -z ${mysql_media_dir} ]; then

  mkdir -p ${mysql_media_dir}

  cd ${source_mysql_dir}

  cp MySQL-client-advanced-5.6.25-1.el6.x86_64*  ${mysql_media_dir}

  cp MySQL-server-advanced-5.6.25-1.el6.x86_64*  ${mysql_media_dir}

else

  

  #调用上述函数

  dir_exist_exit

  if [ $? -ne 32 ]; then

       cd ${source_mysql_dir}

       cp MySQL-client-advanced-5.6.25-1.el6.x86_64*  ${mysql_media_dir}

       cp MySQL-server-advanced-5.6.25-1.el6.x86_64*  ${mysql_media_dir}

  fi



fi


#判断mysql是否已经安装

mysql_cnt=$(rpm -qa|grep -i --color mysql|wc -l)

if [ ${mysql_cnt} -gt 0 ]; then  #已安装mysql软件

  

  #判断mysql正在运行

  mysql_running=$(ps -ef|grep -i mysqld|grep -v grep)

  if [ "${mysql_running}" -gt "0" ]; then


     #关闭mysql

     kill -9 ${mysql_running}

     #删除默认数据库

     rm -Rf var/lib/mysql


     #删除mysql已安装的rpm相关软件

     delete_installed_mysql_rpm


  fi

  

  #删除mysql已安装的rpm相关软件

  delete_installed_mysql_rpm


 

  cd ${mysql_media_dir}

  rpm -ivh MySQL-server-advanced-5.6.25-1.el6.x86_64.rpm 

  rpm -ivh MySQL-client-advanced-5.6.25-1.el6.x86_64.rpm 

else  #未安装mysql软件

  cd ${mysql_media_dir}

  rpm -ivh MySQL-server-advanced-5.6.25-1.el6.x86_64.rpm 

  rpm -ivh MySQL-client-advanced-5.6.25-1.el6.x86_64.rpm 

fi


#启动mysql数据库

mysqld_safe --user=mysql --skip-grant-tables  >/dev/null 2>&1 &


sleep 2


mysql -uroot -psystem -e "select version();"


sleep 2


#配置root用户密码

mysql -uroot -e "flush privileges;"

mysql -uroot -e "set password for 'root'@'localhost'=password('system')"


sleep 2


#关闭mysql数据库

running_mysql_cnt=$(ps -ef|grep -i mysqld|grep -v grep|awk '{print $2}')

kill -9 ${running_mysql_cnt}


sleep 2


#以配置好密码重启mysql

mysqld_safe --user=mysql   >/dev/null 2>&1 &


#打印安装及启动数据库完毕

echo "install mysql server and startup mysql have been completed!"



脚本执行

[root@standbygtid mysql_media_dir]# sh shell_dir/auto_install_mysql.sh 

/shell_dir/auto_install_mysql.sh: line 14: [: too many arguments

/shell_dir/auto_install_mysql.sh: line 56: [: root     16151     1  0 17:04 pts/0    00:00:00 bin/sh usr/bin/mysqld_safe --user=mysql

mysql    16319 16151  0 17:04 pts/0    00:00:00 usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/standbygtid.err --pid-file=/var/lib/mysql/standbygtid.pid --socket=/var/lib/mysql/mysql.sock --port=3306: integer expression expected

Preparing...                ########################################### [100%]

   1:MySQL-server-advanced  ########################################### [100%]

Preparing...                ########################################### [100%]

   1:MySQL-client-advanced  ########################################### [100%]

Warning: Using a password on the command line interface can be insecure.

+-------------------------------------------+

| version()                                 |

+-------------------------------------------+

| 5.6.25-enterprise-commercial-advanced-log |

+-------------------------------------------+

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

/shell_dir/auto_install_mysql.sh: line 100: 16490 已杀死               mysqld_safe --user=mysql --skip-grant-tables > dev/null 2>&1


总结

  • 采用sh或者bash或source或者.  这几种方式执行shell脚本,对于语法的校验规不同,请采用统一的某种sh版本进行调试,以防出现语法不兼容问题


oracle数据库培训课件

(费用:20元)



联系方式


文章转载自lovedb,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论