通过脚本安装mysql服务_自动安装MySQL脚本

在Linux 上安装MySQL单实例SHELL脚本

在CentOS 6.5环境测试通过#!/bin/bash

user=mysql

group=mysql

port=3306

basedir=/usr/local/mysql

datadir=/data/mysql/mysql_${port}/data

sourcefile=$1

mysqlprofile=/etc/my.cnf

logfile=/tmp/mysqlinstall.log

nowtime=`date '+%Y-%m-%d %H:%M:%S'`

retval=0

Usage(){

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 1

fi

[ ! -d $basedir  ]&& mkdir -p $basedir

[ ! -d $datadir  ]&& mkdir -p $datadir

content=`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 1

fi

content1=`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 1

fi

check_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 1

fi

if [ ! -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 1

else

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"

fi

if [ $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 1

fi

#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.cnf

datapath=${datadir%/*}

[ ! -d "${datapath}/tmp"  ] && mkdir -p ${datapath}/tmp

[ ! -d "${datapath}/logs"  ] && mkdir -p ${datapath}/logs

if [ ! -f $mysqlprofile ];then

nowtime=`date '+%Y-%m-%d %H:%M:%S'`

echo -e "\e[0;36m${nowtime}[INFO]:Starting Create my.cnf.\e[m"

cat > $mysqlprofile <

[client]

port            = 3306

socket          = /tmp/mysql.sock

# The MySQL server

[mysqld]

# Basic

port            = $port

user            = $user

basedir         = $basedir

datadir         = $datadir

tmpdir          = $datapath/tmp

socket          = /tmp/mysql.sock

log-bin     = $datapath/logs/mysql-bin

log-error   = $datapath/logs/error.log

slow-query-log-file = $datapath/logs/slow.log

skip-external-locking

skip-name-resolve

log-slave-updates

server-id =2163306

explicit_defaults_for_timestamp = 1

character-set-server = utf8

slow-query-log

binlog_format = mixed

max_binlog_size = 128M

binlog_cache_size = 1M

expire-logs-days = 5

back_log = 500

long_query_time=1

max_connections=1100

max_user_connections=1000

max_connect_errors=1000

wait_timeout=100

interactive_timeout=100

connect_timeout = 20

slave-net-timeout=30

max-relay-log-size = 256M

relay-log = relay-bin

transaction_isolation = READ-COMMITTED

performance_schema=0

#myisam_recover

key_buffer_size = 64M

max_allowed_packet = 16M

#table_cache = 3096

table_open_cache = 6144

table_definition_cache = 4096

sort_buffer_size = 128K

read_buffer_size = 1M

read_rnd_buffer_size = 1M

join_buffer_size = 128K

myisam_sort_buffer_size = 32M

tmp_table_size = 32M

max_heap_table_size = 64M

query_cache_type=0

query_cache_size = 0

bulk_insert_buffer_size = 32M

thread_cache_size = 64

#thread_concurrency = 32

thread_stack = 192K

skip-slave-start

# InnoDB

innodb_data_home_dir = $datadir

innodb_log_group_home_dir = $datapath/logs

innodb_data_file_path = ibdata1:1G:autoextend

innodb_buffer_pool_size = 500M

#48G

#innodb_buffer_pool_size = 33G

innodb_buffer_pool_instances    = 8

#innodb_additional_mem_pool_size = 16M

innodb_log_file_size = 1024M

innodb_log_buffer_size = 16M

innodb_log_files_in_group = 3

innodb_flush_log_at_trx_commit = 0

innodb_lock_wait_timeout = 10

innodb_sync_spin_loops = 40

innodb_max_dirty_pages_pct = 90

innodb_support_xa = 0

innodb_thread_concurrency = 0

innodb_thread_sleep_delay = 500

innodb_file_io_threads    = 4

innodb_concurrency_tickets = 1000

log_bin_trust_function_creators = 1

innodb_flush_method = O_DIRECT

innodb_file_per_table

innodb_read_io_threads = 16

innodb_write_io_threads = 16

innodb_io_capacity = 2000

innodb_file_format = Barracuda

innodb_purge_threads=1

innodb_purge_batch_size = 32

innodb_old_blocks_pct=75

innodb_change_buffering=all

innodb_stats_on_metadata=OFF

[mysqldump]

quick

max_allowed_packet = 128M

#myisam_max_sort_file_size = 10G

[mysql]

no-auto-rehash

max_allowed_packet = 128M

prompt = '(product)\u@\h [\d]> '

default_character_set = utf8

EOF

retval=$?

fi

nowtime=`date '+%Y-%m-%d %H:%M:%S'`

[ $retval -eq 0 ] && echo -e "\e[0;36m${nowtime}[INFO]:Create my.cnf SUCESS.\e[m"

#Initializing datadir

if [ -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=$?

fi

if [ $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 1

fi

#Add env variables

grep "$basedir/bin" /etc/profile > /dev/null 2>&1

if [ $? -ne 0 ];then

nowtime=`date '+%Y-%m-%d %H:%M:%S'`

echo  "export PATH=\$PATH:$basedir/bin">>/etc/profile

source /etc/profile

fi

#start mysql

if [ ! -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=$?

fi

if [ $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=0

else

nowtime=`date '+%Y-%m-%d %H:%M:%S'`

echo -e "\e[0;36m${nowtime}[ERROR]:Starting MySQL.. FAIL!\e[m"

exit 1

fi

#setting account security

if [ $retval -eq 0 ];then

mysql -uroot -p123456 2>/dev/null <

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

delete from mysql.user where password = '';

FLUSH PRIVILEGES;

EOF

retval=$?

fi

nowtime=`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

测试结果:

6a79dc20afbb39b44d2e8eb4bd3953a7.png

7a08d265654484858033e39958785bbb.png

在MySQL配置文件参数部分还可以优化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值