同一件事情做多了,就想写个脚本,不要问我为什么,明显是因为我懒! 以后再去安装这个mysql,只需要执行以下脚本,其他版本安装至需要替换下载地址和解压路径就可以了。注意该脚本采用cmake安装,适用于mysql 5.5以及以上,低版本请采用make安装。
如下脚本通过centos 6.X_64测试安装没问题,有问题的朋友请留言反馈以便调整。
手工安装请参考[原创]linux(centos)环境下如何编译安装mysql 5.6
脚本执行效果:

具体简单脚本:
#!/bin/bash
#Install mysql 5.x for centos 6.x
#author:21yunwei
downloaddir="/usr/local/src"
cpuinfo=`cat /proc/cpuinfo | grep -c processor`
function checkroot(){
if [ $UID -ne 0 ]
then
echo "Please login as root"
exit;
fi
}
function create_user_mysql(){
gflag=`cat /etc/group |awk -F':' '{print $1}' | grep mysql`
[[ $gflag != "" ]] && echo "group 'mysql' already exists" || groupadd mysql
uflag=`cat /etc/passwd |awk -F':' '{print $1}' | grep mysql`
[[ $uflag != "" ]] && echo "user 'mysql' already exists" ||useradd -r mysql -g mysql -s /sbin/nologin
}
function Msgbox(){
if [ $? -ne 0 ] ;then
echo "Error,please check"
exit;
fi
}
function install_required_libs(){
echo "Install required libs,please wait:"
yum install gcc-c++ ncurses-devel tcp_wrappers-devel bison-devel bison build-essential libncurses5-dev cmake openssl openssl-devel -y >/dev/null
}
function check_datadir(){
[ ! -d /data/mysql ] && mkdir -p /data/mysql
datadir="/data/mysql"
chown -R mysql.mysql $datadir
}
function menu(){
echo "###############################################################"
cat < <EOF
Please choose mysql version which you want to install:
1,Mysql 5.6.x
2,Mysql 5.7.x
EOF
echo "###############################################################"
}
function mysql_version(){
read -p "please choose php version that you want to install:" flag
read -p "please mysql root password that you want to set:" mysql_password
}
function mysql_download(){
case $flag in
1)
version="mysql-5.6.36"
echo "${version} will be installed" && cp ./package/mysql-5.6.36.tar.gz ${downloaddir}/${version}.tar.gz
;;
2)
version="mysql-5.7.17"
echo "${version} will be installed" && cp ./package/mysql-boost-5.7.17.tar.gz ${downloaddir}/${version}.tar.gz
;;
*)
echo "Please input number 1 or 2,other novalid"
mysql_version
mysql_download
esac
}
function mysql_install(){
case $version in
"mysql-5.6.36")
tar zxf ${downloaddir}/${version}.tar.gz -C ${downloaddir} && cd ${downloaddir}/${version} && echo "Preconfig mysql,please wait:"
/usr/bin/cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=${datadir}
-DSYSCONFDIR=/etc
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DMYSQL_TCP_PORT=3306
-DENABLED_LOCAL_INFILE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci > /dev/null
echo "Compiling mysql now ,please wait(10~20 minutes):"
make -j $cpuinfo >/dev/null 2>&1
echo "Install mysql now ,please wait:"
make install >/dev/null 2>&1
[ $? -eq 0 ] && echo "Mysql install ok ,next step Init mysql." || echo "Mysql install error ,please check"
cat > /etc/my.cnf < <EOF
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
datadir = ${datadir}
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 8
query_cache_size = 8M
tmp_table_size = 16M
performance_schema_max_table_instances = 500
explicit_defaults_for_timestamp = true
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
expire_logs_days = 10
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_data_home_dir = ${datadir}
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = ${datadir}
innodb_buffer_pool_size = 16M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
EOF
echo "Init mysql now,please wait:"
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=${datadir} --user=mysql >/dev/null 2>&1
cp support-files/mysql.server /etc/init.d/mysqld && chmod +x /etc/init.d/mysqld && chkconfig mysqld on
cat > /etc/ld.so.conf.d/mysql.conf< <EOF
/usr/local/mysql/lib
/usr/local/lib
EOF
ldconfig
ln -sf /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -sf /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
ln -sf /usr/local/mysql/bin/myisamchk /usr/bin/myisamchk
ln -sf /usr/local/mysql/bin/mysqld_safe /usr/bin/mysqld_safe
ln -sf /usr/local/mysql/bin/mysqlcheck /usr/bin/mysqlcheck
;;
"mysql-5.7.17")
tar zxf ${downloaddir}/${version}.tar.gz -C ${downloaddir} && cd ${downloaddir}/${version} && echo "Preconfig mysql,please wait:"
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/data/mysql
-DSYSCONFDIR=/etc
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8mb4
-DDEFAULT_COLLATION=utf8mb4_general_ci
-DENABLE_DOWNLOADS=1
-DWITH_EMBEDDED_SERVER=1
-DENABLED_LOCAL_INFILE=1
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=./boost >/dev/null 2>&1
echo "Compiling mysql now ,please wait:"
make -j $cpuinfo >/dev/null 2>&1
Msgbox
echo "Install mysql now ,please wait:"
make install >/dev/null 2>&1
Msgbox
cat > /etc/my.cnf < <EOF
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
datadir = ${datadir}
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 8
query_cache_size = 8M
tmp_table_size = 16M
performance_schema_max_table_instances = 500
explicit_defaults_for_timestamp = true
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
expire_logs_days = 10
early-plugin-load = ""
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_data_home_dir = ${datadir}
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = ${datadir}
innodb_buffer_pool_size = 16M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
EOF
/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=${datadir} --user=mysql >/dev/null 2>&1
cp support-files/mysql.server /etc/init.d/mysqld && chmod +x /etc/init.d/mysqld && chkconfig mysqld on
cat > /etc/ld.so.conf.d/mysql.conf< <EOF
/usr/local/mysql/lib
/usr/local/lib
EOF
ldconfig
ln -sf /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -sf /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
ln -sf /usr/local/mysql/bin/myisamchk /usr/bin/myisamchk
ln -sf /usr/local/mysql/bin/mysqld_safe /usr/bin/mysqld_safe
ln -sf /usr/local/mysql/bin/mysqlcheck /usr/bin/mysqlcheck
;;
*)
echo "Mysql version error ,please check" && exit
;;
esac
}
function mysql_check_status(){
#start mysql
/etc/init.d/mysqld start
#set mysql password for user root
/usr/local/mysql/bin/mysqladmin -uroot password ${mysql_password} >/dev/null 2>&1
netstat -tunlp | grep mysqld
if [ $? -eq 0 ];then
mysql_version=`mysql -V`
echo -e "Mysql start sucess,and mysql version is :n" ${mysql_version}
echo "Mysql root password is: $mysql_password"
else
echo "Mysql start failed ,please check"
exit;
fi
}
function main(){
checkroot
create_user_mysql
install_required_libs
check_datadir
menu
mysql_version
mysql_download
mysql_install
mysql_check_status
}
main
转载请注明:西数超哥博客www.ysidc.top» [原创]linux(centos 6.x 64位)环境下安装mysql 5.6以及mysql 5.7.x的简易shell脚本
https://www.ysidc.top 西数超哥博客,数据库,西数超哥,虚拟主机,域名注册,域名,云服务器,云主机,云建站,ysidc.top










