[root@HE2 ~]
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.7.15 on Redhat/CentOS Linux "
echo
"========================================================================="
cur_dir=$(
pwd
)
echo
"==========================="
mysqlrootpwd=
"MANAGER"
echo
-e
"Please input the root password of mysql:"
read
-p
"(Default password: MANAGER):"
mysqlrootpwd
if
[
"$mysqlrootpwd"
=
""
];
then
mysqlrootpwd=
"MANAGER"
fi
echo
"==========================="
echo
"MySQL root password:$mysqlrootpwd"
echo
"==========================="
echo
"==========================="
isinstallmysql57=
"n"
echo
"Install MySQL 5.7.15,Please input y"
read
-p
"(Please input y , n):"
isinstallmysql57
case
"$isinstallmysql57"
in
y|Y|Yes|YES|
yes
|yES|yEs|YeS|yeS)
echo
"You will install MySQL 5.7.15"
isinstallmysql57=
"y"
;;
*)
echo
"INPUT error,You will exit install MySQL 5.7.15"
isinstallmysql57=
"n"
exit
esac
get_char()
{
SAVEDSTTY=`stty -g`
stty -
echo
stty cbreak
stty -raw
stty
echo
stty $SAVEDSTTY
}
echo
""
echo
"Press any key to start...or Press Ctrl+c to cancel"
char=`get_char`
function
InitInstall()
{
cat
/etc/issue
uname
-a
MemTotal=`
free
-m |
grep
Mem |
awk
'{print $2}'
`
echo
-e
"\n Memory is: ${MemTotal} MB "
rpm -qa|
grep
mysql
rpm -e mysql
if
[ -s
/etc/selinux/config
];
then
sed
-i
's/SELINUX=enforcing/SELINUX=disabled/g'
/etc/selinux/config
fi
setenforce 0
}
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
}
function
InstallMySQL57()
{
echo
"============================Install MySQL 5.7.15=================================="
cd
$cur_dir
if
[ -s
/etc/my
.cnf ];
then
mv
/etc/my
.cnf
/etc/my
.cnf.`
date
+%Y%m%d%H%M%S`.bak
fi
echo
"============================MySQL 5.7.15 installing…………========================="
tar
xvf
/root/mysql-5
.7.15-linux-glibc2.5-x86_64.
tar
.gz
mv
/root/mysql-5
.7.15-linux-glibc2.5-x86_64
/usr/local/mysql
groupadd mysql -g 512
useradd
-u 512 -g mysql -s
/sbin/nologin
-d
/home/mysql
mysql
mkdir
-p
/data/mysql
mkdir
-p
/data/slowlog
chown
-R mysql:mysql
/data/mysql
chown
-R mysql:mysql
/usr/local/mysql
chown
-R mysql:mysql
/data/slowlog
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]
no-auto-rehash
default-character-
set
=utf8
[mysqld]
port=3306
character-
set
-server=utf8
socket=
/tmp/mysql
.sock
basedir=
/usr/local/mysql
datadir=
/data/mysql
pid-
file
=
/data/mysql/mysql
.pid
explicit_defaults_for_timestamp=
true
lower_case_table_names=1
back_log=103
max_connections=3000
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
transaction_isolation=REPEATABLE-READ
tmp_table_size=96M
max_heap_table_size=96M
long_query_time=1
slow_query_log = 1
slow_query_log_file=
/data/slowlog/slow
.log
log-bin=mysql-bin
binlog_cache_size=4M
max_binlog_cache_size=4096M
max_binlog_size=1024M
binlog_format=MIXED
expire_logs_days=7
key_buffer_size=16M
read_buffer_size=1M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=1M
server-
id
=$SERVERID
innodb_buffer_pool_size=512M
innodb_data_file_path=ibdata1:10M:autoextend
innodb_thread_concurrency=16
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=75
innodb_buffer_pool_dump_pct=50
innodb_lock_wait_timeout=50
innodb_file_per_table=on
[mysqldump]
quick
max_allowed_packet=32M
[myisamchk]
key_buffer=16M
sort_buffer_size=16M
read_buffer=8M
write_buffer=8M
[mysqld_safe]
open
-files-limit=8192
log-error=
/data/mysql/error
.log
pid-
file
=
/data/mysql/mysqld
.pid
EOF
/usr/local/mysql/bin/mysqld
--defaults-
file
=
/etc/my
.cnf --user=mysql --datadir=
/data/mysql
--basedir=
/usr/local/mysql
--initialize-insecure
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=$PATH:
/usr/local/mysql/bin
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
/usr/local/mysql/lib
EOF
/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
'MANAGER'
;
flush privileges;
EOF
/usr/local/mysql/bin/mysql
-u root -p$mysqlrootpwd -h localhost <
/tmp/mysql_sec_script
echo
"============================MySQL 5.7.15 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.7.15 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
}
InitInstall 2>&1 |
tee
/root/mysql-install
.log
InstallDependsAndOpt 2>&1 |
tee
-a
/root/mysql-install
.log
InstallMySQL57 >
/dev/null
CheckInstall 2>&1 |
tee
-a
/root/mysql-install
.log