前言:mysql5.7.x以上版本编译安装严重依赖boost库,不同版本boost也不同。因此下载mysql最好选择下载自带boost的版本。本文以mysql8.0.25为例,对应boost版本为boost_1_73_0,系统为centos7.x,数据库安装位置/usr/local/mysql
1、下载mysql8.0.25(地址)
注意:下载如图所示boost版本
2、创建用户组和用户(非root的安全运行账户)
groupadd mysql
useradd mysql -g mysql -M -s /sbin/nologin
3、安装必备库
yum -y install ncurses ncurses-devel cmake patchelf
注意:centos7.x和centos8.x差别很大(centos8默认依赖库版本较高,升级依赖基本免了)
1)centos7.x环境下,cmake默认版本太低(至少cmake-3.5.1),centos8貌似就木这问题
cmake -version
yum升不上去,干掉先!
yum -y remove cmake
下载最新版cmake-3.22.1,地址
cd /usr/local/src
tar zxvf cmake-3.22.1.tar.gz
cd cmake-3.22.1
./configure --prefix=/usr/
gmake && make install
注意
a)编译cmake别使用默认参数,否则cmake -version会报错,请务必指定--prefix=/usr/
b)cmake -version真报错了咋办,凉拌~加入环境变量
vim /etc/bashrc
export PATH=/usr/local/lib:$PATH
2)centos7.x的gcc版本也够不着,升级gcc?莫要瞎折腾~
centos官方为你准备了贴心小甜点,升级devtoolset就好,mysql8.0.25对应devtoolset-10,其他8.x版本俺说不准,因为官方一直在偷偷升级。编译mysql报错会提醒你版本~
以升级devtoolset-10为例,其他版本请按照报错提示,修改下面数字10即可
yum -y install centos-release-scl
yum -y install devtoolset-10-gcc devtoolset-10-gcc-c++ devtoolset-10-binutils
scl enable devtoolset-10 bash
3) centos7.x的patchelf依赖下不来(不能迷信centos,各家云平台yum源差异大)
官方patchelf去下载,地址
cd /usr/local/src
tar zxvf patchelf-0.14.5.tar.gz
cd patchelf-0.14.5
./configure
make && make install
4、 创建目录
mkdir /usr/local/mysql
mkdir /usr/local/mysql/tmp
mkdir /usr/local/mysql/etc
mkdir /data/logs # mysql日志文件夹
mkdir /data/mysql # mysql数据库文件夹
5、编译安装mysql
(注意 -DWITH_BOOST=./boost 路径是相对,解压后boost文件位于源文件目录下)
重要的事情提前说:mysql8.x是天坑,编译时文件解压的空间强烈建议>40G!!!!30G真得很勉强,成功全靠运气!编译等了one hour,系统告诉你硬盘空间不足:)
cd /usr/local/src
tar zxvf mysql-boost-8.0.25.tar.gz
cd mysql-8.0.25
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/usr/local/mysql/etc -DSYSTEMD_PID_DIR=/usr/local/mysql -DDEFAULT_charset=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_SSL=system -DWITH_READLINE=on -DMYSQL_DATADIR=/data/mysql -DWITH_BOOST=./boost
重要的事情说三遍:注意!注意!!注意!!!
1)如果主机配置较高(至少4核8G以上),建议使用加速编译,否则慢如龟速
不确定内核数?先查看下主机配置
grep processor /proc/cpuinfo | wc -l
确认配置过硬,迅速开启多核加速编译之旅~(一般20min左右,配置越好编译越快)
make -j 4 && make install # 表示4CPU核心
2)如果是弱鸡,还是老实等到海枯石烂(先快后慢,一般在1个小时左右)
make && make install
6、配置文件my.cnf(移动到安装文件夹,优化自行解决,不赘述)
mv /etc/my.cnf /usr/local/mysql/my.cnf
7、添加软链接
ln -sv /usr/local/mysql/bin/mysql /usr/sbin/mysql
ln -sv /usr/local/mysql/bin/mysqladmin /usr/sbin/mysqladmin
ln -sv /usr/local/mysql/bin/mysqldump /usr/sbin/mysqldump
8、文件夹授权(安装文件夹、数据库文件夹、日志文件夹)
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /data/logs
chmod +x /usr/local/mysql
9、数据初始化
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
10、创建额外文件夹(部分环境不创建启动会报错,原因不明,不去深究了,随手一下下)
mkdir /var/lib/mysql-files
11、设置开机启动
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable mysqld
12、启动数据库
systemctl start mysqld
13、修改root密码(默认为空)
网上有文章说,mysql8.x初始root密码在log文件里,这里默认是空,你自己改复杂点
1)默认加密方式改为mysql_native_password,密码永不过期never,要不等会儿navicat配置账户密码时总对不上!
2)友好提示:为方便navicat远程连接mysql,把root的host顺手改成%
mysql -h localhost -u root
use mysql;
select user,host,authentication_string from mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码很复杂我看不见' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码很复杂我猜不着';
update mysql.user set host='%' where user='root';
FLUSH PRIVILEGES;
14、开始愉快玩耍~over