自動安裝MySQL指令碼

來源:互聯網
上載者:User

標籤:mysql 一鍵部署

在Linux 上安裝MySQL單一實例SHELL指令碼

在CentOS 6.5環境測試通過

#!/bin/bashuser=mysqlgroup=mysqlport=3306basedir=/usr/local/mysqldatadir=/data/mysql/mysql_${port}/datasourcefile=$1mysqlprofile=/etc/my.cnflogfile=/tmp/mysqlinstall.lognowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`retval=0Usage(){  nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`  echo -e "\e[0;36m${nowtime}[INFO]:Usage: `basename $0` MySQL_Source_File\e[m"}if [ $# != 1 ];then   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[ERROR]:INPUT ARGUMENTS ERROR!\e[m"   Usage   exit 1fi[ ! -d $basedir  ]&& mkdir -p $basedir[ ! -d $datadir  ]&& mkdir -p $datadircontent=`ls $basedir`if [ "x$content" != "x" ];then   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[ERROR]:‘$basedir‘ IS NOT NULL.\e[m"   exit 1ficontent1=`ls $datadir`if [ "x$content1" != "x" ];then   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[ERROR]:‘$datadir‘ IS NOT NULL.\e[m"   exit 1ficheck_port=`netstat -na |grep ":${port}" |awk ‘{print $4}‘ |grep ":${port}"`if [ "x$check_port" != "x" ];then   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[ERROR]:‘$port‘ PORT ALREADY USED!\e[m"   exit 1fiif [ ! -f $sourcefile ];then   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[ERROR]:‘$sourcefile‘ IS NOT EXISTS.\e[m"   Usage   exit 1else   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[INFO]:Extract MySQL Install File.\e[m"   tar xzf $sourcefile --strip-components 1 -C $basedir   retval=$?   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   [ $retval -eq 0 ] && echo -e "\e[0;36m${nowtime}[INFO]:Extract MySQL Install File Complete.\e[m"fiif [ $retval -ne 0  ];then   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[ERROR]:Extract File ERROR,Please Check Your Package.\e[m"      echo 1fi#create group if not exists  egrep "^$group" /etc/group >& /dev/null  if [ $? -ne 0 ]  then      groupadd $group      nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`    echo -e "\e[0;36m${nowtime}[INFO]:Add Group...\e[m"fi    #create user if not exists  egrep "^$user" /etc/passwd >& /dev/null  if [ $? -ne 0 ]  then      useradd -g $group $user    nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`      echo -e "\e[0;36m${nowtime}[INFO]:Add User...\e[m"fi#Create my.cnfdatapath=${datadir%/*}[ ! -d "${datapath}/tmp"  ] && mkdir -p ${datapath}/tmp[ ! -d "${datapath}/logs"  ] && mkdir -p ${datapath}/logsif [ ! -f $mysqlprofile ];thennowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`echo -e "\e[0;36m${nowtime}[INFO]:Starting Create my.cnf.\e[m"cat > $mysqlprofile <<EOF[client]port            = 3306socket          = /tmp/mysql.sock# The MySQL server[mysqld]# Basicport            = $portuser            = $userbasedir         = $basedirdatadir         = $datadirtmpdir          = $datapath/tmpsocket          = /tmp/mysql.socklog-bin     = $datapath/logs/mysql-binlog-error   = $datapath/logs/error.logslow-query-log-file = $datapath/logs/slow.logskip-external-lockingskip-name-resolvelog-slave-updatesserver-id =2163306explicit_defaults_for_timestamp = 1character-set-server = utf8slow-query-logbinlog_format = mixedmax_binlog_size = 128Mbinlog_cache_size = 1Mexpire-logs-days = 5back_log = 500long_query_time=1max_connections=1100max_user_connections=1000max_connect_errors=1000wait_timeout=100interactive_timeout=100connect_timeout = 20slave-net-timeout=30max-relay-log-size = 256Mrelay-log = relay-bintransaction_isolation = READ-COMMITTEDperformance_schema=0#myisam_recoverkey_buffer_size = 64Mmax_allowed_packet = 16M#table_cache = 3096table_open_cache = 6144table_definition_cache = 4096sort_buffer_size = 128Kread_buffer_size = 1Mread_rnd_buffer_size = 1Mjoin_buffer_size = 128Kmyisam_sort_buffer_size = 32Mtmp_table_size = 32Mmax_heap_table_size = 64Mquery_cache_type=0query_cache_size = 0bulk_insert_buffer_size = 32Mthread_cache_size = 64#thread_concurrency = 32thread_stack = 192Kskip-slave-start# InnoDBinnodb_data_home_dir = $datadirinnodb_log_group_home_dir = $datapath/logsinnodb_data_file_path = ibdata1:1G:autoextendinnodb_buffer_pool_size = 500M#48G#innodb_buffer_pool_size = 33Ginnodb_buffer_pool_instances    = 8#innodb_additional_mem_pool_size = 16Minnodb_log_file_size = 1024Minnodb_log_buffer_size = 16Minnodb_log_files_in_group = 3innodb_flush_log_at_trx_commit = 0innodb_lock_wait_timeout = 10innodb_sync_spin_loops = 40innodb_max_dirty_pages_pct = 90innodb_support_xa = 0innodb_thread_concurrency = 0innodb_thread_sleep_delay = 500innodb_file_io_threads    = 4innodb_concurrency_tickets = 1000log_bin_trust_function_creators = 1innodb_flush_method = O_DIRECTinnodb_file_per_tableinnodb_read_io_threads = 16innodb_write_io_threads = 16innodb_io_capacity = 2000innodb_file_format = Barracudainnodb_purge_threads=1innodb_purge_batch_size = 32innodb_old_blocks_pct=75innodb_change_buffering=allinnodb_stats_on_metadata=OFF[mysqldump]quickmax_allowed_packet = 128M#myisam_max_sort_file_size = 10G[mysql]no-auto-rehashmax_allowed_packet = 128Mprompt = ‘(product)\[email protected]\h [\d]> ‘default_character_set = utf8EOFretval=$?finowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`[ $retval -eq 0 ] && echo -e "\e[0;36m${nowtime}[INFO]:Create my.cnf SUCESS.\e[m"#Initializing datadirif [ -d $datapath  ];then   chown -R mysql:mysql ${datapath%/*}   cd $basedir   chown -R mysql:mysql *   ./scripts/mysql_install_db --user=$user --datadir=$datadir >  $logfile 2>&1   retval=$?fiif [ $retval -ne 0  ];then   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[ERROR]:MySQL Initializing FAIL!\e[m"   exit 1fi#Add env variablesgrep "$basedir/bin" /etc/profile > /dev/null 2>&1if [ $? -ne 0 ];then   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo  "export PATH=\$PATH:$basedir/bin">>/etc/profile   source /etc/profilefi#start mysqlif [ ! -f "/etc/init.d/mysqld" ];then    cp $basedir/support-files/mysql.server /etc/init.d/mysqld    /etc/init.d/mysqld start >/dev/null 2>&1    retval=$?fiif [ $retval -eq 0 ];then   $basedir/bin/mysqladmin -u root password ‘123456‘ 2> $logfile   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[INFO]:Starting MySQL.. SUCCESS!\e[m"   retval=0else   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[ERROR]:Starting MySQL.. FAIL!\e[m"   exit 1fi#setting account securityif [ $retval -eq 0 ];thenmysql -uroot -p123456 2>/dev/null <<EOFGRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;delete from mysql.user where password = ‘‘;FLUSH PRIVILEGES;EOFretval=$?finowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`[ $retval -eq 0 ] && echo -e "\e[0;36m${nowtime}[INFO]:MySQL INITIAL PASSWORD SUCCESS!\e[m"if [ $retval -eq 0 ];then   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[INFO]:MySQL INITIAL PASSWORD: 123456 \e[m"   echo -e "\e[0;36m${nowtime}[INFO]:MySQL Basedir: $basedir \e[m"   echo -e "\e[0;36m${nowtime}[INFO]:MySQL Datadir: $datadir \e[m"   echo -e "\e[0;36m${nowtime}[INFO]:MySQL Install Complete. \e[m"else   nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`   echo -e "\e[0;36m${nowtime}[ERROR]:Change MySQL Password FAIL!\e[m"fi


測試結果:

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/8A/E7/wKiom1g-jYLCH1sKAACKHyEvJQI189.png-wh_500x0-wm_3-wmp_4-s_2890843265.png" style="float:none;" title="運行結果" alt="wKiom1g-jYLCH1sKAACKHyEvJQI189.png-wh_50" />

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/8A/E3/wKioL1g-jYOgyys7AABq0qcMZBk040.png-wh_500x0-wm_3-wmp_4-s_2513581164.png" style="float:none;" title="b.png" alt="wKioL1g-jYOgyys7AABq0qcMZBk040.png-wh_50" />

在MySQL設定檔參數部分還可以最佳化。

自動安裝MySQL指令碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.