在linux 平台上源码编译安装MySQL 8.0
从根源上掌握MySQL安装,以此类推,在linux 平台上通过源码安装其他c/c++软件都是大同小异。
1. 安装方式
linux 的安装包分为RPM 包、二进制包和源码包。
不同的安装方式各有优缺点,比较三者
|
|
RPM |
二进制 |
源码 |
|
优点 |
安装简单,适合初学者学习使用 |
安装简单;灵活性好;单台服务器可以安装多个版本的 MySQL 软件 |
与平台无关,可按需定制编译,最灵活;性能最好;单台服务器可以安装多个版本的 MySQL 软件 |
|
缺点 |
需要单独下载客户端和服务器;安装路径不灵活,默认路径不能修改,一台服务器只能安装一个版本的MySQL软件 |
已经经过编译,性能不如源码编译得好;不能灵活定制编译参数 |
安装过程较复杂;编译时间长 |
|
文件布局 |
/usr/bin (客户端程序和脚本) /usr/sbin (mysqld服务器) /var/lib/mysql (日志文件和数据库) /usr/share/man (Linux 文档页) /usr/include/mysql (包含(头)文件) /usr/lib/mysql (库文件) /usr/share/mysql (错误信息和字符集文件) |
bin (客户端程序、mysqld服务器和实用程序) docs (文档) man (Linux 文档页) include (包含(头)文件) lib (库文件) share (错误消息和字典、安装数据库的SQL文件) support-files (其他支持文件) |
bin (客户端程序、mysqld服务器和实用程序) docs (文档) man (Linux 文档页) include (包含(头)文件) lib (库文件) share (错误消息和字典、安装数据库的SQL文件) support-files (其他支持文件) |
二进制和源码的本质区别在于,源码安装多了:源代码程序编译参数配置、编译和安装成二进制的过程,然而最耗时的就是这三步。
2. 选择源码安装的原因
原因很简单:与平台无关,可按需定制编译,最灵活;性能最好;可以安装到自己想要安装的目录、并且支持单台服务器安装多个版本的MySQL。
官网直接下载下来的二进制安装包是按照一般情况配置好了编译的默认参数,有些默认编译配置也许不是你想要的,这时就要在编译阶段按需自定义编译参数,制作完全符合自己要求的二进制MySQL安装包。如:只编译支持utf8mb4编码。
2.1. 怎么选择安装方式
用户既不想安装最简单却不够灵活的RPM包,又不想安装复杂费时的源码包的情况选择二进制安装。
对数据库的性能要求更高,希望能够更加灵活地定制编译参数选项的情况选择源码安装。
3. 安装过程
演示过程的安装环境:
内存:2G
磁盘:50G
系统:CentOS 7.9
编译环境:gcc-10.2.0、cmake-3.21.3
数据库版本:mysql-8.0.27
3.1. 安装MySQL前环境准备
硬件最低要求:内存2G、磁盘40G
这个很重要!!!当初我只给了虚拟机20G磁盘,结果编译不到一半磁盘爆满了。
3.1.1.安装一些依赖
yum install -y gcc gcc-c++ ncurses-devel openssl openssl-devel bison bzip2
在Solaris Express上的还需要安装依赖: m4
3.1.2.安装gcc 10.2.0
1.下载:wget -P /home https://mirrors.aliyun.com/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz
2.解压:cd /home && tar -xzvf /home/gcc-10.2.0.tar.gz
3.配置依赖项:cd /home/gcc-10.2.0 && ./contrib/download_prerequisites
如果出现error: Cannot download gmp-6.1.0.tar.bz2 from ftp://gcc.gnu.org/pub/gcc/infrastructure/错误
wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
如果报错其他文件不能下载,去https://gcc.gnu.org/pub/gcc/infrastructure/下载对应文件,复制到/home/gcc-10.2.0即可。
4.创建安装文件夹:mkdir /usr/lib/gcc/x86_64-redhat-linux/10.2.0
5.创建编译文件夹:mkdir /home/gcc-build-10.2.0
cd /home/gcc-build-10.2.0
6.配置安装文件:../gcc-10.2.0/configure --prefix=/usr/lib/gcc/x86_64-redhat-linux/10.2.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib
7.编译和安装:make && make install
两小时后再回来看看安装好没……
8.备份原gcc
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
mv /usr/bin/g++ /usr/bin/g++-4.8.5
9.链接新gcc
alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8.5 88 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8.5
alternatives --install /usr/bin/gcc gcc /usr/lib/gcc/x86_64-redhat-linux/10.2.0/bin/x86_64-pc-linux-gnu-gcc 99 --slave /usr/bin/g++ g++ /usr/lib/gcc/x86_64-redhat-linux/10.2.0/bin/x86_64-pc-linux-gnu-g++ alternatives --config gcc
键入选项编号:2
查看gcc版本
gcc -v
10.替换库链接
rm -f /usr/lib64/libstdc++.so.6
ln -s /usr/lib/gcc/x86_64-redhat-linux/10.2.0/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6
不替换libstdc++.so.6库链接,在使用时可能会出现这些错误
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found
查看目前包含哪些库
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
3.1.3.安装cmake-3.21.3
查看linux位数:getconf LONG_BIT
下载cmake: https://cmake.org/download/
解压: tar zxvf cmake-3.21.3.tar.gz
连接: cd cmake-3.21.3
引导: ./bootstrap
编译: gmake
安装: make install
添加软连接方便cmake的使用:ln -s /home/software/cmake-3.21.3/bin/cmake /usr/bin/cmake
查看cmake版本:cmake --version
3.2. 正式安装MySQL
1.下载包含Boost C++ 库的MySQL源码包
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.27.tar.gz
2.新建用户和组
groupadd mysql && useradd -g mysql mysql
3.上传到mysql用户目录并解压
tar -zxvf mysql-boost-8.0.27.tar.gz && cd mysql-8.0.27
4.用cmake工具来编译源码参数配置
cmake . -DCMAKE_INSTALL_PREFIX=/home/mysql/mysql-install \
-DMYSQL_DATADIR=/home/mysql/mysql-data \
-DWITH_DEBUG=1 \
-DWITH_BOOST=/home/mysql/mysql-8.0.27/boost \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DFORCE_INSOURCE_BUILD=1
更多详细配置请参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html#option_cmake_with_boost
5.编译和安装
编译:make
安装:make install
编译报错:
make[2]: *** [CMakeFiles/abi_check] 错误 1
make[1]: *** [CMakeFiles/abi_check.dir/all] 错误 2
单元测试报错,但不影响编译
解决办法:将gtest_disable_pthreads设置为ON
编译和安装需要两小时…………
6.编辑配置文件:vi /etc/my.cnf
############### 客户端配置 ###############
[client]
port = 3306
socket = /home/mysql/mysql-data/mysql.sock ############### 服务端配置 ###############
[mysqld]
port = 3306
autocommit = ON
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
default-storage-engine = INNODB
basedir = /home/mysql/mysql-install
datadir = /home/mysql/mysql-data
tmpdir = /home/mysql/mysql-data/tmp
socket = /home/mysql/mysql-data/mysql.sock
pid-file = /home/mysql/mysql-data/mysql.pid
log-error = /home/mysql/mysql-data/log/error.log
#mysql8.0请在初始化前配上强制小写,否则后续配上会报错
lower_case_table_names = 1 [mysql]
#关闭自动补全sql命令功能
no-auto-rehash
7.修改目录所有者与权限
数据目录
chown -R mysql:mysql /home/mysql/mysql-data
chmod -R 750 /home/mysql/mysql-data
安装目录
chown -R mysql:mysql /home/mysql/mysql-install
chmod -R 750 /home/mysql/mysql-install
8.初始化数据库
bin/mysqld --initialize --user=mysql
初始化数据库后记得保存初始化密码:
password is generated for root@localhost: 0%HS>=+x/Ttf
9.启动MySQL服务
bin/mysqld_safe --user=mysql &
或
bin/mysqld --user=mysql &
10.重置登录密码
用初始化密码登录:mysql -u root -p修改密码:alter user 'root'@'localhost' identified by 'root';
不重置无法正常使用mysql
11.后续配置(方便管理和使用mysql)
添加软连接
ln -s /home/mysql/mysql-install/support-files/mysql.server /etc/init.d/mysql
ln -s /home/mysql/mysql-install/bin/mysql /usr/bin/mysql
更方便的使用官方的脚本(mysql.server)来管理MySQL服务
更方便的使用官方的客户端工具(mysql)来连接MySQL服务
MySQL服务管理
重启服务
service mysql restart
开启服务
service mysql start
停止服务
service mysql stop
查看状态
service mysql status
强制重新载入
service mysql force-reload
查看服务:netstat -anp|grep 3306
参考:
官方文档:https://dev.mysql.com/doc/refman/8.0/en/source-installation.html
书籍:《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》
原创不易,转载请指明出处!!!
获取相关书记的PDF下载链接>>>请关注公众号,发送:135810

在linux 平台上源码编译安装MySQL 8.0的更多相关文章
- CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境
CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境 什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/ ...
- Linux环境PostgreSQL源码编译安装
Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- CentOS 6.6 下源码编译安装MySQL 5.7.5
版权声明:转自:http://www.linuxidc.com/Linux/2015-08/121667.htm 说明:CentOS 6.6 下源码编译安装MySQL 5.7.5 1. 安装相关工具# ...
- [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程
标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...
- CentOS源码编译安装MySQL 5.5.15
CentOS源码编译安装MySQL 5.5.15 文章目录 [隐藏] 安装编译工具 下载源码 安装cmake和bison 编译安装MySQL 一些相关设置 安装编译工具 yum install g ...
- Shell脚本一键部署——源码编译安装MySQL及自动补全工具
Shell脚本一键部署--源码编译安装MySQL及自动补全工具 编译安装MySQL 1.软件包 Mysql安装包 将安装包拖至/opt目录下,编辑一个脚本文件,将以下内容复制进去,然后source或者 ...
- 总结源码编译安装mysql
最近在学习源码编译安装LAMP.LNMP时,一直遇到一个难题,就是就是mysql无论怎么源码编译安装,到最后启动服务都提示"Starting MySQL.The server quit wi ...
- 源码编译安装 MySQL 5.5.x 实践
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
- 源码编译安装 MySQL 5.5.x 实践(转)
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
随机推荐
- 基于python的租房网站-房屋出租租赁系统(python+django+vue)
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品.欢迎大家提出宝贵建议. 功能介绍 平台采用B/S结构,后端采用主流的Python+Django进行 ...
- 【ThreadX-FileX】Azure RTOS FileX概述
Azure RTOS FileX嵌入式文件系统是Azure RTOS的高级工业级解决方案,适用于Microsoft FAT文件格式,专门针对深度嵌入式,实时和IoT应用程序而设计.Azure RTOS ...
- [转帖]【Kafka】Kafka配置参数详解
Kafka配置参数详解 Kafka得安装与基本命令 Kafka配置参数 kafka生产者配置参数 kafka消费者配置参数 本篇文章只是做一个转载的作用以方便自己的阅读,文章主要转载于: Kafka核 ...
- idb单副本时-TiKV节点损坏后有损数据恢复的方法
Tidb单副本时-TiKV节点损坏后有损数据恢复的方法 背景 UAT环境下,为了减少存储. 搭建了一套单副本的TiDB集群 但是随着数据量的增多, UAT上面的数据可以丢失,但是表结构等信息是无法接受 ...
- [转帖]学习如何编写 Shell 脚本(基础篇)
https://juejin.cn/post/6930013333454061575 前言 如果仅仅会 Linux 一些命令,其实已经可以让你在平时的工作中游刃有余了.但如果你还会编写 Shell 脚 ...
- [转帖]harbor镜像仓库清理操作
https://www.cnblogs.com/FengGeBlog/p/15517706.html 两年前清理过一次harbor镜像,而现在又要面临清镜像的操作了,笔者目前所在的公司镜像是存放在ce ...
- [转帖]PostgreSQL(三) 内存参数优化和原理(work_mem)内存表 pgfincore插件使用方法
1.常用内存参数 1.1 shared_buffers shared_buffers是PostgreSQL用于共享缓冲区的内存,是由8kb大小的块所形成的数组.PostgreSQL在进行更新.查询等操 ...
- 两千字讲明白java中instanceof关键字的使用!
写在开头 在过往的内容中,我们讲了不少的Java关键字,比如final.static.this.super等等,Java中的关键字非常之多,下图是整理的关键字集合 而我们今天要学习的就是其中的inst ...
- Spring 应用合并之路(一):摸石头过河 | 京东云技术团队
公司在推进降本增效,在尝多种手段之后,发现应用太多,每个应用都做跨机房容灾部署,则最少需要 4 台机器(称为容器更合适).那么,将相近应用做一个合并,减少维护项目,提高机器利用率就是一个可选方案. 经 ...
- MyBatis 源码系列:MyBatis 体系结构、六大解析器
体系结构 MyBatis是一个持久层框架,其体系结构分为三层:基础支持层.核心处理层和接口层. 基础支持层包括数据源模块.事务管理模块.缓存模块.Binding模块.反射模块.类型转换模块.日志模块. ...