请选择 进入手机版 | 继续访问电脑版

CentOS 7 编译安装mysql 8

[复制链接]
查看1432 | 回复0 | 2019-7-3 17:41:08 | 显示全部楼层 |阅读模式
一、环境

CentOS 7.4
服务器 双核CPU 2G内存


二、安装方法

1、安装gcc

服务器自带的gcc版本过低(4.8.5-36),需要升级gcc。本文将gcc升级到5.4.0。
(之前尝试过将gcc升级到8.3.0,但是在编译安装mysql8的时候出现很多报错,最后无法解决。)

编译安装gcc 5.4.0的方法,参考以下链接:
https://www.51anidea.com/forum.php?mod=viewthread&tid=1108


2、编译安装mysql8

1)、下载mysql-boost

进入mysql的下载页面:
https://dev.mysql.com/downloads/mysql/

QQ截图20190703114550.jpg

如上图所示,在 Select Operating System 一栏,选择 Source Code ,在 Select OS Version 一栏,选择 Generic Linux (Architecture Independent);
点击 Compressed TAR Archive, Includes Boost Headers  右侧的下载按钮,在弹出的下载页面,点击 No thanks, just start my download. 可以跳过注册页面,如下图所示:


QQ截图20190703115024.jpg

下载好 mysql-boost-8.0.16.tar.gz 后,将其上传到服务器。


2)、安装准备

创建安装需要的目录:
# mkdir -p /opt/mysql-8.0.16/boost
# mkdir /usr/local/mysql
# mkdir -p /data/mysql
# useradd mysql
# chown -R mysql:mysql /usr/local/mysql
# chown -R mysql:mysql /data/mysql

安装依赖包:
# yum -y install openssl-devel openssl ncurses-devel


3)编译安装mysql8

# tar -zxvf mysql-boost-8.0.16.tar.gz -C /usr/local
# cd /usr/local/mysql-8.0.16/
# cmake . -DWITH_BOOST=/opt/mysql-8.0.16/boost/ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DWITHOUT_CSV_STORAGE_ENGINE=1 -DWITHOUT_BLACKHOLD_STORAGE_ENGINE=1 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 -DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 -DWITHOUT_MRG_MYISAM_STORAGE_ENGINE=1 -DWITHOUT_NDBCLUSTER_STORAGE_ENGINE=1 -DFORCE_INSOURCE_BUILD=1 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++ -DCMAKE_C_COMPILER=/usr/local/bin/gcc -DDOWNLOAD_BOOST=1

如果没有安装cmake,会报错 -bash: cmake: 未找到命令。解决方法参考以下链接:https://www.51anidea.com/forum.php?mod=viewthread&tid=1102

# make -j 2
(注:服务器 双核cpu 2G内存 机器配置过低会导致卡住。-j 后面跟cpu的核心数)

如果make过程中出现问题,退出make后,先执行make clean.再执行一次cmake命令:

cmake . -DWITH_BOOST=/opt/mysql-8.0.16/boost/ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DWITHOUT_CSV_STORAGE_ENGINE=1 -DWITHOUT_BLACKHOLD_STORAGE_ENGINE=1 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 -DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 -DWITHOUT_MRG_MYISAM_STORAGE_ENGINE=1 -DWITHOUT_NDBCLUSTER_STORAGE_ENGINE=1 -DFORCE_INSOURCE_BUILD=1 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++ -DCMAKE_C_COMPILER=/usr/local/bin/gcc -DDOWNLOAD_BOOST=1

再执行:
# make -j 2
# make install

编辑/etc/my.cnf文件,加入以下内容:

[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/data/mysql/mysql.sock

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/data/mysql/mysqld.pid

[client]
socket=/data/mysql/mysql.sock

保存文件,退出。

初始化mysql:
# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/data/mysql/
  1. 2019-07-02T10:20:15.866930Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
  2. 2019-07-02T10:20:15.870320Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.16/bin/mysqld (mysqld 8.0.16) initializing of server in progress as process 33846
  3. 2019-07-02T10:20:21.985652Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: hf1d;s*jys)X
  4. 2019-07-02T10:20:23.995479Z 0 [System] [MY-013170] [Server] /usr/local/mysql-8.0.16/bin/mysqld (mysqld 8.0.16) initializing of server has completed
复制代码
从输出信息(A temporary password is generated for root@localhost: hf1d;s*jys)X)可以看出,mysql已经为root用户生成了一个随机密码:hf1d;s*jys)X

安装SSL:
# /usr/local/mysql/bin/mysql_ssl_rsa_setup

启动mysql:
# /usr/local/mysql/bin/mysqld_safe --user=mysql &

登录mysql:
# /usr/local/mysql/bin/mysql -u root -p

# ln -s /usr/local/mysql/bin/* /usr/local/bin/
添加软链接后,就能直接用 mysql -u root -p 命令 登录mysql了。

登录mysql后,还需要重新设置root账号的密码。不然会报错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 该问题的解决方法 参考以下链接:
https://www.51anidea.com/forum.php?mod=viewthread&tid=1112

在服务器本地登录mysql 时,报错:Segmentation fault,然后自动退出mysql。这个问题的解决方法 参考以下链接:
https://www.51anidea.com/forum.php?mod=viewthread&tid=1111

以上就是编译安装mysql8的完整过程。如有问题,欢迎回帖提问。




上一篇:编译安装mysql 8 报错:Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
下一篇:请问,有搭建MySQL数据库的命令或者教程吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1249

主题

2736

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
70208
QQ