欢迎光临
我们一直在努力

Mysql5.6 自动化部署

主机环境:Centos6.5

前提:

1. 配置yum源

2. 移除系统自带的mysql

3. 删除原先的mysql用户

4. 使用mysql二进制安装包:https://dev.mysql.com/downloads/file/?id=473278

[root@mysql ~]# ls -lrt

-rw-r–r– 1 root root 328739574 Nov 11 00:40 mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz

-rw-r–r– 1 root root 7302 Nov 11 00:41 mysql_auto_install.sh

-rw-r–r– 1 root root 866364 Nov 11 00:46 mysql-install.log

mysql_install.sh:注意替换软件包版本

[root@mysql ~]# cat mysql_auto_install.sh 

###### 二进制自动安装数据库脚本root密码mysqld将脚本和安装包放在/root目录即可###############

######数据库目录/usr/local/mysql############

######数据目录/data/mysql############

######日志目录/log/mysql############

######端口号默认3306其余参数按需自行修改############

##################

#author:rrhelei@126.com#

##################

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:~/bin

export PATH

# Check if user is root

if [ $(id -u) != "0" ]; then

echo "Error: You must be root to run this script, please use root to install"

exit 1

fi

clear

echo "========================================================================="

echo "A tool to auto-compile & install MySQL 5.6.38 on Redhat/CentOS Linux "

echo "========================================================================="

cur_dir=$(pwd)

#set mysql root password

echo "==========================="

mysqlrootpwd="mysqld"

echo -e "Please input the root password of mysql:"

read -p "(Default password: mysqld):" mysqlrootpwd

if [ "$mysqlrootpwd" = "" ]; then

mysqlrootpwd="mysqld"

fi

echo "==========================="

echo "MySQL root password:$mysqlrootpwd"

echo "==========================="

#which MySQL Version do you want to install?

echo "==========================="

isinstallmysql56="n"

echo "Install MySQL 5.6.38,Please input y"

read -p "(Please input y , n):" isinstallmysql56

case "$isinstallmysql56" in

y|Y|Yes|YES|yes|yES|yEs|YeS|yeS)

echo "You will install MySQL 5.6.38"

isinstallmysql56="y"

;;

*)

echo "INPUT error,You will exit install MySQL 5.6.38"

isinstallmysql56="n"

exit

esac

get_char()

{

SAVEDSTTY=`stty -g`

stty -echo

stty cbreak

#dd if=/dev/tty bs=1 count=1 2> /dev/null

stty -raw

stty echo

stty $SAVEDSTTY

}

echo ""

echo "Press any key to start…or Press Ctrl+c to cancel"

char=`get_char`

# Initialize the installation related content.

function InitInstall()

{

cat /etc/issue

uname -a

MemTotal=`free -m | grep Mem | awk '{print $2}'` 

echo -e "\n Memory is: ${MemTotal} MB "

#Set timezone

#rm -rf /etc/localtime

#ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#Delete Old Mysql program

rpm -qa|grep mysql

rpm -e mysql

#yum -y remove mysql-server mysql mysql-libs

#yum -y remove php-mysql

#yum -y install yum-fastestmirror

#yum -y update

#Disable SeLinux

if [ -s /etc/selinux/config ]; then

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

fi

setenforce 0

}

#Installation of depend on and optimization options.

function InstallDependsAndOpt()

{

cd $cur_dir

cat >>/etc/security/limits.conf<<EOF

* soft nproc 65535

* hard nproc 65535

* soft nofile 65535

* hard nofile 65535

EOF

echo "fs.file-max=65535" >> /etc/sysctl.conf

}

#Install MySQL

function InstallMySQL56()

{

echo "============================Install MySQL 5.6.22=================================="

cd $cur_dir

#Backup old my.cnf

#rm -f /etc/my.cnf

if [ -s /etc/my.cnf ]; then

mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak

fi

#mysql directory configuration

groupadd mysql -g 512

useradd -u 512 -g mysql -s /sbin/nologin -d /home/mysql mysql

tar xvf /root/mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz

mv /root/mysql-5.6.38-linux-glibc2.12-x86_64 /usr/local/mysql

mkdir -p /data/mysql

mkdir -p /log/mysql

chown -R mysql:mysql /data/mysql

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /log

#edit /etc/my.cnf

SERVERID=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}'| awk -F. '{ print $3$4}'`

cat >>/etc/my.cnf<<EOF

[client]

port= 3306

socket= /tmp/mysql.sock

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

port= 3306

socket= /tmp/mysql.sock

basedir= /usr/local/mysql

datadir= /data/mysql

open_files_limit = 3072

back_log = 103

max_connections = 800

max_connect_errors = 100000

table_open_cache = 512

external-locking = FALSE

max_allowed_packet = 32M

sort_buffer_size = 2M

join_buffer_size = 2M

thread_cache_size = 51

query_cache_size = 32M

tmp_table_size = 96M

max_heap_table_size = 96M

slow_query_log = 1

slow_query_log_file = /log/mysql/slow.log

log-error = /log/mysql/error.log

long_query_time = 1

server-id = $SERVERID

log-bin = mysql-bin

sync_binlog = 1

binlog_cache_size = 4M

max_binlog_cache_size = 4096M

max_binlog_size = 1024M

expire_logs_days = 60

key_buffer_size = 32M

read_buffer_size = 1M

read_rnd_buffer_size = 16M

bulk_insert_buffer_size = 64M

character-set-server=utf8

default-storage-engine = InnoDB

binlog_format = row

innodb_buffer_pool_dump_at_shutdown = 1

innodb_buffer_pool_load_at_startup = 1

binlog_rows_query_log_events = 1

explicit_defaults_for_timestamp = 1

#log_slave_updates=1

#gtid_mode=on

#enforce_gtid_consistency=1

#innodb_write_io_threads = 8

#innodb_read_io_threads = 8

#innodb_thread_concurrency = 0

transaction_isolation = REPEATABLE-READ

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 512M

#innodb_data_home_dir =

innodb_data_file_path = ibdata1:1024M:autoextend

innodb_flush_log_at_trx_commit = 1

innodb_log_buffer_size = 16M

innodb_log_file_size = 512M

innodb_log_files_in_group = 2

innodb_max_dirty_pages_pct = 50

innodb_file_per_table = 1

innodb_locks_unsafe_for_binlog = 0

wait_timeout = 14400

interactive_timeout = 14400

skip-name-resolve

[mysqldump]

quick

max_allowed_packet = 32M

EOF

/usr/local/mysql/scripts/mysql_install_db –basedir=/usr/local/mysql –datadir=/data/mysql –defaults-file=/etc/my.cnf –user=mysql

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

chmod 700 /etc/init.d/mysqld

chkconfig –add mysqld

chkconfig –level 2345 mysqld on

cat >> /etc/ld.so.conf.d/mysql-x86_64.conf<<EOF

/usr/local/mysql/lib

EOF

ldconfig

if [ -d "/proc/vz" ];then

ulimit -s unlimited

fi

/etc/init.d/mysqld start

cat >> /etc/profile <<EOF


export PATH=/usr/local/mysql/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH

EOF

source /etc/profile

/usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd

cat > /tmp/mysql_sec_script<<EOF

use mysql;

delete from mysql.user where user!='root' or host!='localhost';

grant all privileges on *.* to 'sys_admin'@'%' identified by 'mysqld';

flush privileges;

EOF

/usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script

#rm -f /tmp/mysql_sec_script

/etc/init.d/mysqld restart

echo "============================MySQL 5.6.38 install completed========================="

}

function CheckInstall()

{

echo "===================================== Check install ==================================="

clear

ismysql=""

echo "Checking…"

if [ -s /usr/local/mysql/bin/mysql ] && [ -s /usr/local/mysql/bin/mysqld_safe ] && [ -s /etc/my.cnf ]; then

echo "MySQL: OK"

ismysql="ok"

else

echo "Error: /usr/local/mysql not found!!!MySQL install failed."

fi

if [ "$ismysql" = "ok" ]; then

echo "Install MySQL 5.6.38 completed! enjoy it."

echo "========================================================================="

netstat -ntl

else

echo "Sorry,Failed to install MySQL!"

echo "You can tail /root/mysql-install.log from your server."

fi

}

#The installation log

InitInstall 2>&1 | tee /root/mysql-install.log

CheckAndDownloadFiles 2>&1 | tee -a /root/mysql-install.log

InstallDependsAndOpt 2>&1 | tee -a /root/mysql-install.log

InstallMySQL56 2>&1 | tee -a /root/mysql-install.log

CheckInstall 2>&1 | tee -a /root/mysql-install.log

 

安装过程:

[root@mysql ~]# sh mysql_auto_install.sh 

=========================================================================

A tool to auto-compile & install MySQL 5.6.38 on Redhat/CentOS Linux 

=========================================================================

===========================

Please input the root password of mysql:

(Default password: mysqld):

===========================

MySQL root password:mysqld

===========================

===========================

Install MySQL 5.6.38,Please input y

(Please input y , n):y

You will install MySQL 5.6.38

Press any key to start…or Press Ctrl+c to cancel

CentOS release 6.5 (Final)

Kernel \r on an \m

Linux mysql 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Memory is: 1862 MB 

error: package mysql is not installed

setenforce: SELinux is disabled

mysql_auto_install.sh: line 243: CheckAndDownloadFiles: command not found

============================Install MySQL 5.6.22==================================

mysql-5.6.38-linux-glibc2.12-x86_64/share/polish/errmsg.sys

mysql-5.6.38-linux-glibc2.12-x86_64/share/russian/errmsg.sys

mysql-5.6.38-linux-glibc2.12-x86_64/share/german/errmsg.sys

mysql-5.6.38-linux-glibc2.12-x86_64/share/spanish/errmsg.sys

mysql-5.6.38-linux-glibc2.12-x86_64/share/italian/errmsg.sys

mysql-5.6.38-linux-glibc2.12-x86_64/share/mysql_test_data_timezone.sql

mysql-5.6.38-linux-glibc2.12-x86_64/share/norwegian/errmsg.sys

mysql-5.6.38-linux-glibc2.12-x86_64/share/slovak/errmsg.sys

mysql-5.6.38-linux-glibc2.12-x86_64/share/serbian/errmsg.sys

mysql-5.6.38-linux-glibc2.12-x86_64/share/dutch/errmsg.sys

mysql-5.6.38-linux-glibc2.12-x86_64/share/mysql_security_commands.sql

mysql-5.6.38-linux-glibc2.12-x86_64/share/dictionary.txt

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/latin1.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/Index.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/latin2.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/hp8.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/latin7.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/macroman.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/ascii.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/keybcs2.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/greek.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/hebrew.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/cp1257.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/swe7.xml

mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/cp866.xml

Installing MySQL system tables…2017-11-11 00:44:28 0 [Note] Ignoring –secure-file-priv value as server is running with –bootstrap.

2017-11-11 00:44:28 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.38-log) starting as process 3016 …

OK

Filling help tables…2017-11-11 00:45:25 0 [Note] Ignoring –secure-file-priv value as server is running with –bootstrap.

2017-11-11 00:45:25 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.38-log) starting as process 3040 …

OK

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

To do so, start the server, then issue the following commands:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'

/usr/local/mysql/bin/mysqladmin -u root -h 192.168.48.50 password 'new-password'

Alternatively you can run:

/usr/local/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test

databases and anonymous user created by default. This is

strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:

cd . ; /usr/local/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

cd mysql-test ; perl mysql-test-run.pl

Please report any problems at http://bugs.mysql.com/

The latest information about MySQL is available on the web at

http://www.mysql.com

Support MySQL by buying support/licenses at http://shop.mysql.com

New default config file was created as /usr/local/mysql/my.cnf and

will be used by default by the server when you start it.

You may edit this file to change server settings

WARNING: Default config file /etc/my.cnf exists on the system

This file will be read by default by the MySQL server

If you do not want to use this, either remove it, or use the

–defaults-file argument to mysqld_safe when starting the server

Starting MySQL.. SUCCESS! 

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

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

Shutting down MySQL.. SUCCESS! 

Starting MySQL.. SUCCESS! 

============================MySQL 5.6.38 install completed=========================

^C===================================== Check install ===================================

Checking…

MySQL: OK

Install MySQL 5.6.38 completed! enjoy it.

转:https://blog.csdn.net/gumengkai/article/details/78502131

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。