天天看點

mysql 自動化 安裝_MySQL自動化安裝腳本

注:因官方MySQL下載下傳較慢,請先自行上傳mysql安裝包至/usr/local/src目錄

#!/bin/bash

#This shell script can be used to install mysql instances automatically

#Written by LiHui

#Version 1.0

#MySQL Install path

Install_path=/usr/local/mysql

#MySQL Datadir

Datadir=/data0/mysqldata/3306/data

#Add MySQL user and group

groupadd mysql

useradd -g mysql -s /sbin/nologin mysql

#Install some packages

yum -y install cmake gcc gcc-c++ autoconf automake zlib libxml ncurses-devel libmcrypt libtool bison

#本地上傳,此部分注釋

#downloading MySQL

#echo "###Downloading MySQL###"

cd /usr/local/src

#wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.16.tar.gz

#Install MySQL

echo "###install MySQL###"

tar -zxf /usr/local/src/mysql-5.5.24.tar.gz -C /usr/local/src/

cd /usr/local/src/mysql-5.5.24

cmake -DCMAKE_INSTALL_PREFIX=${Install_path} -DINSTALL_DATADIR=$Datadir -DWITH_SERVER_SUFFIX=lihui_edition -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_READLINE=1 -DWITH_SSL=yes -DWITH_EMBEDDED_SERVER=1 -DWITH_PTHREAD=1 -DMYSQL_USER=mysql -DWITH_MYSQLD_LDFLAGS=-all-static -DWITH_INNOBASE_STORAGE_ENGINE=1 > /usr/home/mysql/mysql_setuplogs_cmake.log 2>&1

make > /usr/home/mysql/mysql_setuplogs_make.log 2>&1 && make install > /usr/home/mysql/mysql_setuplogs_makeinstall.log 2>&1

cd /usr/local/

chown -R mysql:mysql mysql

cp /usr/local/mysql/bin/mysql* /usr/bin/

#Create my.cnf

cat > /etc/my.cnf

[client]

port = 3306

socket = /data0/mysqldata/3306/mysql.sock

default-character-set = utf8

#Here follows entries for some specific programs

# The MySQL server

[mysqld]

port = 3306

user = mysql

socket = /data0/mysqldata/3306/mysql.sock

pid-file = /data0/mysqldata/3306/mysql.pid

basedir = /usr/local/mysql

datadir = /data0/mysqldata/3306/data

tmpdir = /data0/mysqldata/3306/tmp

open_files_limit = 10240

server-id = 1423306

lower_case_table_names = 1

character_set_server = utf8

skip-name-resolve

max_connections = 500

max_connect_errors = 100000

max_allowed_packet = 512M

max_heap_table_size = 1024M

max_length_for_sort_data = 4096

back_log=100

interactive_timeout = 600

wait_timeout = 600

default_storage_engine = InnoDB

net_buffer_length = 8K

sort_buffer_size = 2M

join_buffer_size = 4M

read_buffer_size = 2M

read_rnd_buffer_size = 16M

query_cache_size = 128M

query_cache_limit = 2M

query_cache_min_res_unit = 2k

thread_cache_size = 300

table_open_cache = 1024

tmp_table_size = 256M

#*********** Logs related settings ***********

log_bin = /data0/mysqldata/3306/binlog/mysql-bin

binlog_format=row

binlog_cache_size=32m

max_binlog_cache_size=512m

max_binlog_size=512m

long_query_time = 1

log_output = FILE

log_error = /data0/mysqldata/3306/mysql-error.log

slow_query_log = 1

slow_query_log_file = /data0/mysqldata/3306/slow_statement.log

#log_queries_not_using_indexes

general_log = 0

general_log_file = /data0/mysqldata/3306/general_statement.log

expire-logs-days = 14

#*********** MyISAM Specific options ***********

key_buffer_size = 32M

bulk_insert_buffer_size = 32M

myisam_sort_buffer_size = 64M

myisam_max_sort_file_size = 2G

myisam_repair_threads = 1

myisam_recover

#*********** INNODB Specific options ***********

innodb_file_per_table

transaction-isolation = READ-COMMITTED

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 512M

innodb_data_home_dir = /data0/mysqldata/3306/innodb_ts

innodb_data_file_path = ibdata1:16M:autoextend:max:8192M

innodb_thread_concurrency = 0

innodb_log_buffer_size = 16M

innodb_log_file_size = 256M

innodb_log_files_in_group = 2

innodb_log_group_home_dir = /data0/mysqldata/3306/innodb_log

innodb_flush_log_at_trx_commit = 2

innodb_max_dirty_pages_pct = 80

innodb_lock_wait_timeout = 120

innodb_flush_method=O_DIRECT

[mysqldump]

quick

max_allowed_packet = 512M

[mysql]

no-auto-rehash

prompt="\\u@\\h \\R:\\m:\\s \\d> "

# Remove the next comment character if you are not familiar with SQL

#safe-updates

[myisamchk]

key_buffer_size = 32M

sort_buffer_size = 20M

read_buffer_size = 2M

write_buffer_size = 2M

[mysqlhotcopy]

interactive-timeout

[mysqld_safe]

open-files-limit = 8192

EOF

#Init Database

cd /data0

mkdir -p mysqldata/3306

cd mysqldata/3306

mkdir data binlog tmp innodb_ts innodb_log

cd /data0

chown -R mysql:mysql mysqldata

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=${Install_path} --datadir=$Datadir --defaults-file=/etc/my.cnf

#Create mysqld(start|stop|restart|status) scripts

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

chmod +x /etc/init.d/mysqld

#Start mysqld service

service mysqld start

#Test mysqld service

service mysqld status | grep "SUCCESS" > /dev/null

if [ $? -eq 0 ];then

echo -e "MySQL install Done,Congratulation!"

fi

#create mysql root password

echo "Create password for user root.Please input new password:"

read password

mysqladmin -uroot password $password -S /data0/mysqldata/3306/mysql.sock

#delete empty password for user

mysql -uroot -p$password -S /data0/mysqldata/3306/mysql.sock mysql -e 'delete from user where password="";'

mysql -uroot -p$password -S /data0/mysqldata/3306/mysql.sock -e 'flush privileges;'

echo "ALL is OK!"

#Stop mysqld service

service mysqld stop > /dev/null