抽空重新写了下,基于centos7下,定制编译mysql5.7。优化项已经集成到里面了,可以按需调大参数
#!/bin/sh
#author lwt
#time 2020
softpath='/'
#mysql安装文件下载路径
mysqlbin_path='https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24.tar.gz'
#boost安装文件下载路径
boost_urlpath='http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz'
#数据下载位置
soft_path='./tmp'
#mysql安装位置
mysql_path='/usr/lib/mysql'
#mysql输出存储位置
mysql_datadir='/home/mysql/datadir'
#boost位置
boost_path='/usr/local/boost'
mkdir -p $soft_path
#优化my.cnf文件
function opt_mysql() {
cat > /etc/my.cnf << LWT
[clent]
port=3306
socket=$mysql_path/tmp/mysql.sock
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
skip-external-locking
skip-name-resolve
explicit_defaults_for_timestamp=1
user=mysql
port=3306
basedir=$mysql_path
datadir=$mysql_datadir
tmpdir=/home/mysql/temp
socket=$mysql_path/tmp/mysql.sock
log-error=$mysql_path/logs/mysql_error.log
pid-file=$mysql_path/pids/mysql.pid
open_files_limit=10240
back_log=600
max_connections=500
max_connect_errors=6000
wait_timeout=605800
#open_tables=600
#table_cache = 650
#opened_tables = 630
max_allowed_packet=32M
sort_buffer_size=4M
join_buffer_size=4M
thread_cache_size=300
query_cache_type=1
query_cache_size=256M
query_cache_limit=2M
query_cache_min_res_unit=16k
tmp_table_size=256M
max_heap_table_size=256M
key_buffer_size=256M
read_buffer_size=1M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=64M
lower_case_table_names=1
default-storage-engine=INNODB
innodb_buffer_pool_size=2G
innodb_log_buffer_size=32M
innodb_log_file_size=128M
innodb_flush_method=O_DIRECT
long_query_time=2
slow-query-log=on
slow-query-log-file=$mysql_path/logs/mysql-slow.log
[mysqldump]
quick
max_allowed_packet=32M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
LWT
}
#公共环节
function install() {
echo "\033[40m开始添加mysql用户\033[0m"
useradd -s /sbin/nologin -M mysql
tar zxvf boost_1_59_0.tar.gz
mv boost_1_59_0 $boost_path
#解压mysql
tar zxvf mysql-5.7.24.tar.gz && cd mysql-5.7.24
cmake -DCMAKE_INSTALL_PREFIX=$mysql_path \
-DWITH_BOOST=$boost_path \
-DMYSQL_UNIX_ADDR=$mysql_path/tmp/mysql.sock \
-DMYSQL_DATADIR=$mysql_datadir \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_INNODB_MEMCACHED=1 \
-DWITH_DEBUG=OFF \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_PROFILING=ON \
-DMYSQL_MAINTAINER_MODE=OFF \
-DMYSQL_TCP_PORT=3306
make && make install
#添加环境变量
echo "export PATH=${mysql_path}/bin:${PATH}">>/etc/profile
echo "export PATH=${mysql_path}/bin:${mysql_path}/lib:${PATH}" >>/etc/profile
#刷新
#systemctl daemon-reload
source /etc/profile
mkdir -p $mysql_path/{tmp,logs,pids}
mkdir -p $mysql_datadir
chown -R mysql:mysql $mysql_path
chown mysql.mysql $mysql_path/tmp
chown mysql.mysql $mysql_path/logs
chown mysql.mysql $mysql_path/pids
chown mysql.mysql $mysql_datadir
opt_mysql
touch $mysql_path/logs/mysqld.log
touch $mysql_path/pids/mysqld.pid
chown mysql.mysql -R $mysql_path/logs/
chown mysql.mysql -R $mysql_path/pids/
cd $mysql_path
cp support-files/mysql.server /etc/init.d/mysqld
# systemctl daemon-reload
chmod a+x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
mysqld --initialize-insecure --user=mysql --basedir=$mysql_path --datadir=$mysql_datadir
}
#centos6安装
function install_on_centos6() {
install
service mysqld restart
}
#centos7安装
function install_on_centos7() {
install
systemctl start mysqld.service
}
#main函数
function main() {
#预先下载包
cd $soft_path
#下载wget
# yum install -y wget
# #下载数据
# wget $mysqlbin_path
# wget $boost_urlpath
if [ $? -ne 0 ];then
echo "请检查网络"
exit
fi
#检测操作系统版本
ver=`cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/'`
if [ $ver -eq 7 ];then
echo -e "\033[40m检测到操作系统为:centos7\033[0m"
echo "开始安装依赖"
`yum install -y gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel cmake ncurses ncurses-devel bison bison-devel perl perl-devel autoconf`
install_on_centos7
elif [$ver -eq 6 ];then
echo -e "\033[40m检测到操作系统为:centos6\033[0m"
echo "开始安装依赖"
`yum install -y gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel cmake ncurses ncurses-devel bison bison-devel`
install_on_centos6
else
echo -e "\033[34m此操作系统不受支持\033[0m"
fi
}
main
安装完成后默认密码是空,修改密码如下
mysql -u root -p #第一次登陆不需要密码,回车即可
set password for root@localhost = password('root'); #修改密码