MySQL8需要用gcc的版本为4.8以上,CentOS自带的版本比较低,通过yum安装的版本也低,参考下面升级GCC版本:centos7升级切换gcc版本
- 依赖安装
yum install devtoolset-7-gcc.x86_64 devtoolset-7-gcc-c++.x86_64 devtoolset-7-gcc-gdb-plugin.x86_64 gcc-c++ libstdc++-devel openssl-devel ncurses ncurses-devel cmake -y
- 下载源码并解压
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-boost-8.0.21.tar.gz
tar -zxvf mysql-boost-8.0.21.tar.gz
cd mysql-8.0.21
- 创建编译目录build
mkdir build
- 修改文件
vim ../extra/libedit/libedit-20190324-3.1/src/terminal.c
char buf[TC_BUFSIZE]; # 删除该行
char *area;
const struct termcapstr *t;
sigset_t oset, nset;
int lins, cols;
(void) sigemptyset(&nset);
(void) sigaddset(&nset, SIGWINCH);
(void) sigprocmask(SIG_BLOCK, &nset, &oset);
area = NULL; # area修改为NULL
- 参数配置
进入到前面创建的build编译目录
cd build
cmake .. -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306 -DWITH_BOOST=/root/soft/mysql-8.0.21/boost -DFORCE_INSOURCE_BUILD=1
- 编译/安装
make
make install
编译过程有点漫长,可以去喝个咖啡或者吃个饭,过程中碰到任何问题大多都是依赖缺少或其他环境问题,一个一个解决之即可
- mysql的bin加入环境变量
vim /etc/profile
加入mysql/bin路径到PATH
PATH=$PATH:/usr/local/mysql/bin
source /etc/profile
- 创建mysql数据目录并初始化数据
mkdir /data/mysql/data
mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data --initialize
- 配置my.cnf文件
[mysqld]
datadir=/data/mysql/data
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/data/mysql/data/mysql.log
pid-file=/data/mysql/data/mysql.pid
vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
- 启动mysql
systemctl start mysql
- 使用root账号登录mysql
mysqld --user=root &
- 创建/修改root密码
use mysql;
alter user 'root'@'%' identified with mysql_native_password by 'yourpassword';
flush privileges;
- 开启root账号远程登录
use mysql;
update user set host='%' where user = 'root';
grant all privileges on *.* to 'root'@'%'with grant option;
flush privileges;
Done!