Linux 使用脚本编译安装mysql5.7.19(使用前请仔细阅读脚本)

mysql5.7.4之后的编译必须使用c语言的库boost1.59版本,这个不太好下载,国外的网址,比较慢,下载网址为:

https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz三个所需要的软件下载地址都在脚本内,如果手头没有这三个软件,cmake,mysql5.7.19,boost1.59,对自己的网速比较有信心,那么将脚本内的下载注释去掉,脚本会自动帮你下载好并安装,如果有这几个软件,只要你的电脑内存在,不需要管放在哪,执行脚本,剩下的工作交给脚本处理。

脚本运行完毕,请执行命令:source /etc/profile && mysql_secure_installation,

并按照自己的需求初始化mysql,初始密码在root目录下的passwd.txt文件内。

#!/bin/bash
#auther alwaysbefine
echo "本脚本用于编译安装mysql5.7及以上版本,在使用前
请确保没有安装过mysql或者mariadb,并保持网络畅通,并将国内yum源以及国内epel源配置为可用
由于是源码编译安装,时间比较长,请耐心等待,并在脚本运行结束后运行命令进行初始化,命令为:
source /etc/profile && mysql_secure_installation ,首先输入脚本最后所生成的密码,然后按命令
提示选择y,重置密码后的选项为选择密码模式,分三种,低中高,分别用0.1,2代表,请根据自己的
需求输入数字,剩下的都为y除了再次提示修改密码选项为n
"
yum install -y -q autoconf automake apr  apr-devel  apr-util apr-util-devel \
                 bison  bzip2-devel cpp fontconfig-devel freetype-devel  gcc gcc-c++  compat-dapl \
                 compat-db-headers  compat-db47   compat-gcc-44 compat-gcc-44-c++  compat-glibc  \
                 compat-glibc-headers compat-libcap1 compat-libf2c-34  compat-libgfortran-41 \
                 compat-libtiff3 compat-openldap ncurses-devel libaio libaio-devel wget
echo "编译所需安装包已安装完毕"
useradd -M -s /sbin/nologin mysql
echo "添加mysql用户"
mkdir -p /usr/local/mysql/var
mkdir /usr/local/mysql/etc
echo "新建mysql数据库存放目录以及配置文件目录"
#wget https://cmake.org/files/v3.2/cmake-3.2.0-rc2-Linux-x86_64.tar.gz
#wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.19.tar.gz
#wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

echo "开始解压相关安装包,分别为cmake,所需c语音库boost.1.59,mysql5.7.19"
tar -zxf `find / -name cmake-3.2.0-rc2-Linux-x86_64.tar.gz` 
tar -zxf `find / -name boost_1_59_0.tar.gz` -C /usr/local/src/
tar -zxf `find / -name mysql-5.7.19.tar.gz` -C /usr/local/src/
mv cmake-3.2.0-rc2-Linux-x86_64 /usr/local/src/cmake
echo "mysql的环境变量和cmake的环境变量添加"
echo "export PATH=$PATH:/usr/local/src/cmake/bin:/usr/local/mysql/bin" >> /etc/profile && source /etc/profile
cd /usr/local/src/mysql-5.7.19/
echo "开始预编译"
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DINSTALL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/usr/local/mysql/etc -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=0 -DWITH_BOOST=/usr/local/src/boost_1_59_0
echo "正式编译,并生成编译日志在root目录下的makelog.log"
make 2>&1 |tee /root/makelog.log && make install
echo "mysql启动脚本放入开机启动目录"
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
rm -rf /etc/my.cnf && rm -rf /usr/local/mysql/var/*  \
&&chown -Rf mysql:mysql /usr/local/mysql && chown mysql:mysql /etc/init.d/mysql \
echo "生成mysql最主要的配置文件 my.cnf"
&& echo "[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# skip-name-resolve
 #设置3306端口
port = 3306
# # 设置mysql的安装目录
basedir=/usr/local/mysql
# # 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/var
# # 允许最大连接数
max_connections=1000
# # 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# # 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# lower_case_table_names=1
default_authentication_plugin=mysql_native_password
max_allowed_packet=16M">/etc/my.cnf
echo "赋予开机启动脚本执行权限"
chmod +x /etc/init.d/mysql
chown -Rf mysql:mysql /usr/local/mysql
chown mysql:mysql /etc/init.d/mysql
echo "生成数据库初始文件,并产生mysql初始密码,密码也保存在root目录下的passwd.txt"
/usr/local/mysql/bin/mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --collation-server=utf8_general_ci \
 2>&1 |tee /root/passwd.txt
echo "mysql加入启动项,并首次启动mysql服务"
 chkconfig --add mysql && chkconfig mysql on && service mysql start