安装gcc
./configure --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
zypper -n install git
zypper -n install insserv-compat
zypper -n install libtirpc-devel
cd /tmp
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26.tar.gz
tar xvzf mysql-5.7.26.tar.gz
cd mysql-5.7.26/
# 清除之前的生成和缓存
make clean
rm CMakeCache.txt
# 默认安装在/usr/local/mysql下 DENABLED_LOCAL_INFILE=1设定local-infile的默认值 该值决定mysql客户端也就是mysql/bin/mysql能否使用load data语句
cmake . -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/tmp/boost -DENABLED_LOCAL_INFILE=1
# 指定安装在/opt/mysql下 会影响service文件以及mysql mysqld mysqldump等文件安装路径
# cmake . -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/tmp/boost -DENABLED_LOCAL_INFILE=1 -DCMAKE_INSTALL_PREFIX=/opt/mysql -DSYSCONFDIR=/etc/mysql
make
make install
# 添加组和用户 -r表示系统用户 -g表示组 -s表示所使用的shell为/bin/false 禁止登陆
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
# 源码编译时cmake选项DINSTALL_LAYOUT决定了secure_file_priv的默认值 该值把load data语句使用到的infile文件限制在一个目录中
# DINSTALL_LAYOUT默认等于standalone 使得secure_file_priv默认等于null 使得mysql不能使用load data语句(可以接受)
# DINSTALL_LAYOUT如果设置为未列出的值 会使得secure_file_priv默认等于/usr/local/mysql/mysql-files 如果该目录不存在 mysql服务将无法启动
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
# 初始化mysql --initialize-insecure表示无root密码 方便后续登录设置密码 --log-timestamps=SYSTEM使得初始化mysql数据库的打印时间戳不至于跟本地差8小时
bin/mysqld --initialize-insecure --user=mysql --log-timestamps=SYSTEM
sleep 5
bin/mysql_ssl_rsa_setup
chown mysql:mysql data/*.pem
# --mysqld-safe-log-timestamps=SYSTEM使得mysqld_safe打印时间戳不至于跟本地差8小时
# mysqld的打印还是用的utc时间,跟本地差了8小时,除非在my.cnf中指定了log-timestamps=SYSTEM
bin/mysqld_safe --user=mysql --mysqld-safe-log-timestamps=SYSTEM &
mysql -u root --skip-password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql';
update mysql.user set host = '%' where user = 'root';
flush privileges;
exit
cp /tmp/mysql-5.7.26/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
# 添加环境变量 对opensuse15.1而言 推荐添加在/etc/profile.local centos7则是在/etc/profile.d/下面创建sh文件添加进去
cat >> /etc/profile.local <<EOF
export PATH=$PATH:/usr/local/mysql/bin
export MANPATH=$MANPATH:/usr/local/mysql/man
EOF
source /etc/profile.local