centos7一键安装mysql5.6脚本

post by rocdk890 / 2016-11-19 19:32 Saturday linux技术
  今年还有2个月就要过年了,对于我们公司来说,今年年底怕是最忙的时候,最近测试人员要经常来对mysql进行测试,为了方便他们在不同的情况下测试,特地写了个mysql自动安装脚本,这样他们只需要修改下my.cnf的配置就可以使用了,其实我这个脚本也可以在centos5和6上进行安装,但估计有些依赖包没有进行安装,并且也只在centos7上进行了测试安装,所以如果有问题的话,请自行修改.
  系统:centos 7(64位)
脚本内容:
cat /root/soft_shell/auto_install_mysql.sh
001#!/bin/bash
002PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:~/bin
003export PATH
004 
005# Check if user is root
006if [ $(id -u) != "0" ]; then
007    echo "Error: You must be root to run this script, please use root to install"
008    exit 1
009fi
010 
011# Check the network status
012NET_NUM=`ping -c 4 www.baidu.com |awk '/packet loss/{print $6}' |sed -e 's/%//'`
013if [ -z "$NET_NUM" ] || [ $NET_NUM -ne 0 ];then
014        echo "Please check your internet"
015        exit 1
016fi
017 
018#set mysql root password
019echo "==========================="
020mysqlrootpwd="mfkqxxr"
021echo "Please input the root password of mysql:"
022read -p "(Default password: mfkqxxr):" mysqlrootpwd
023if [ "$mysqlrootpwd" = "" ]; then
024    mysqlrootpwd="mfkqxxr"
025fi
026echo "==========================="
027echo "MySQL root password:$mysqlrootpwd"
028echo "==========================="
029 
030#which MySQL Version do you want to install?
031echo "==========================="
032    isinstallmysql56="n"
033    echo "Install MySQL 5.6.34,Please input y"
034    echo "Don't install MySQL,Please input n or press Enter"
035    read -p "(Please input y or n):" isinstallmysql56
036 
037    case "$isinstallmysql56" in
038    y|Y|Yes|YES|yes|yES|yEs|YeS|yeS)
039    echo "You will install MySQL 5.6.34"
040    isinstallmysql56="y"
041    ;;
042    n|N|No|NO|no|nO)
043    echo "You will exit install MySQL"
044    isinstallmysql56="n"
045    ;;
046    *)
047    echo "INPUT error,You will exit install MySQL"
048    isinstallmysql56="n"
049    esac
050 
051function InitInstall()
052{
053    #Set timezone
054    rm -rf /etc/localtime
055    ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
056 
057    yum install -y ntpdate
058    ntpdate -u pool.ntp.org
059    date -R
060 
061    rpm -qa|grep mysql
062    rpm -e mysql
063 
064    yum -y remove mysql-server mysql mysql-libs
065    yum -y remove php-mysql
066    yum -y install yum-fastestmirror
067}
068 
069function CheckAndDownloadFiles()
070{
071echo "============================check files=================================="
072if [ -s mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz ];then
073    echo "mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz [found]"
074else
076fi
077echo "============================check files=================================="
078}
079 
080function InstallMySQL56()
081{
082echo "============================Install MySQL 5.6.34=================================="
083user_mysql=`cat /etc/passwd|grep mysql|awk -F : '{print $1}'`
084if [ -s /etc/my.cnf ]; then
085    rm -f /etc/my.cnf
086fi
087 
088if [ -z "$user_mysql" ];then
089    groupadd mysql
090    useradd -s /sbin/nologin -M -g mysql mysql
091else
092    echo "user mysql already exists!"
093fi
094 
095mkdir -p /data/mysql
096mkdir -p /var/log/mysql
097 
098tar zxf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
099mv mysql-5.6.34-linux-glibc2.5-x86_64 /usr/local/mysql
100chown -R mysql:mysql /data/mysql
101chown -R mysql:mysql /usr/local/mysql
102 
103cat >/etc/my.cnf<<EOF
104[client]
105port= 3306
106socket= /data/mysql/mysql.sock
107default-character-set=utf8
108 
109[mysql]
110default-character-set=utf8
111 
112[mysqld]
113port= 3306
114socket= /data/mysql/mysql.sock
115basedir= /usr/local/mysql
116datadir= /data/mysql
117open_files_limit    = 3072
118back_log = 103
119max_connections = 800
120max_connect_errors = 100000
121table_open_cache = 512
122external-locking = FALSE
123max_allowed_packet = 32M
124sort_buffer_size = 2M
125join_buffer_size = 2M
126thread_cache_size = 51
127query_cache_size = 32M
128tmp_table_size = 96M
129max_heap_table_size = 96M
130slow_query_log = 1
131slow_query_log_file = /var/log/mysql/slow.log
132log-error = /var/log/mysql/error.log
133long_query_time = 1
134server-id = 1
135log-bin = mysql-bin
136sync_binlog = 1
137binlog_cache_size = 4M
138max_binlog_cache_size = 4096M
139max_binlog_size = 1024M
140expire_logs_days = 60
141key_buffer_size = 32M
142read_buffer_size = 1M
143read_rnd_buffer_size = 16M
144bulk_insert_buffer_size = 64M
145character-set-server=utf8
146default-storage-engine = InnoDB
147binlog_format = row
148innodb_buffer_pool_dump_at_shutdown = 1
149innodb_buffer_pool_load_at_startup = 1
150binlog_rows_query_log_events = 1
151explicit_defaults_for_timestamp = 1
152#log_slave_updates=1
153#gtid_mode=on
154#enforce_gtid_consistency=1
155#innodb_write_io_threads = 8
156#innodb_read_io_threads = 8
157#innodb_thread_concurrency = 0
158transaction_isolation = REPEATABLE-READ
159innodb_additional_mem_pool_size = 16M
160innodb_buffer_pool_size = 512M
161#innodb_data_home_dir =
162innodb_data_file_path = ibdata1:1024M:autoextend
163innodb_flush_log_at_trx_commit = 1
164innodb_log_buffer_size = 16M
165innodb_log_file_size = 512M
166innodb_log_files_in_group = 2
167innodb_max_dirty_pages_pct = 50
168innodb_file_per_table = 1
169innodb_locks_unsafe_for_binlog = 0
170wait_timeout = 14400
171interactive_timeout = 14400
172skip-name-resolve
173 
174[mysqldump]
175quick
176max_allowed_packet = 32M
177EOF
178 
179/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --defaults-file=/etc/my.cnf --user=mysql
180cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
181chmod +x /etc/init.d/mysqld
182chkconfig --add mysqld
183chkconfig mysqld on
184sed -i "s:^datadir=.*:datadir=/data/mysql:g" /etc/init.d/mysqld
185cat > /etc/ld.so.conf.d/mysql.conf<<EOF
186/usr/local/mysql/lib
187EOF
188/etc/init.d/mysqld start
189 
190/usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd
191 
192cat > /tmp/mysql_sec_script<<EOF
193use mysql;
194update user set password=password('$mysqlrootpwd') where user='root';
195select Host,User,Password,Select_priv,Grant_priv from user;
196delete from mysql.user where not (user='root') ;
197delete from mysql.user where user='';
198delete from user where user='';
199delete from user where password='';
200delete from user where host='';
201drop database test;
202delete from db;
203flush privileges;
204EOF
205 
206/usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script
207 
208rm -f /tmp/mysql_sec_script
209 
210/etc/init.d/mysqld restart
211echo 'export PATH=$PATH:/usr/local/mysql/bin'>>/etc/profile
212source /etc/profile
213echo "============================MySQL 5.6.34 install completed========================="
214}
215 
216function CheckInstall()
217{
218echo "===================================== Check install ==================================="
219clear
220ismysql=""
221echo "Checking..."
222if [ -s /usr/local/mysql/bin/mysql ] && [ -s /usr/local/mysql/bin/mysqld_safe ] && [ -s /etc/my.cnf ];then
223      echo "MySQL: OK"
224      ismysql="ok"
225else
226      echo "Error: /usr/local/mysql not found!!!MySQL install failed."
227fi
228 
229if [ "$ismysql" = "ok" ];then
230    echo "Install MySQL 5.6.34 completed! enjoy it."
231    echo "========================================================================="
232    netstat -ntl
233else
234    echo "Sorry,Failed to install MySQL!"
235    echo "You can tail /root/mysql-install.log from your server."
236fi
237}
238 
239#The installation log
240InitInstall 2>&1 | tee /root/mysql-install.log
241CheckAndDownloadFiles 2>&1 | tee -a /root/mysql-install.log
242InstallMySQL56 2>&1 | tee -a /root/mysql-install.log
243CheckInstall 2>&1 | tee -a /root/mysql-install.log

执行命令:
chmod 500 /root/soft_shell/auto_install_mysql.sh
sh /root/soft_shell/auto_install_mysql.sh
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-675.html

标签: mysql 安装 shell install 一键 二进制 centos7

评论:

正在载入...