1 前言

linux下安装MySQL的方式有很多种,包括以仓库的方式安装(yum,apt,zypper),以包的方式安装(rpm,deb),以docker方式安装,从压缩包解压安装,从源码编译安装,这里使用的是最后一种,从源码编译安装。

编译安装需要大量的耐心与时间,而且还会遇到非常多奇奇怪怪的问题,因此,需要极大的毅力,很有可能一万次失败也换不来一次的成功,请做好心理准备。

2 准备工作

下面是安装要求,已安装的可以跳过。

  • cmake
  • boost
  • gcc
  • ncurses
  • openssl
  • bison
  • doxygen

2.1 gcc

gcc的话一般linux都配备,最低要求版本为5.3,需要更新的话可以看笔者的另一篇博客

2.2 boost

boost不需要手动安装,后面运行cmake脚本的时候会自动下载安装,当然也可以手动安装,官网的文档说是需要特定版本,这里的MySQL Server 8.0.19需要的是1.70.0,目前最新的boost库为1.72.0。



2.3 cmake

看笔者的另一篇博客

2.4 其他

其他一般使用仓库安装即可,当然也可以每一个都去折腾从源码安装,你喜欢就好。

2.4.1 Red Hat系

7.x:

  1. sudo yum install -y bison bzip2 git hostname ncurses-devel openssl openssl-devel pkgconfig tar wget zlib-devel doxygen

8.x:

  1. sudo yum install -y bison bzip2 git hostname ncurses-devel openssl openssl-devel pkgconfig tar wget zlib-devel doxygen diffutils rpcgen make libtirpc-devel

2.4.2 ubuntu系

  1. sudo apt-get update
  2. sudo apt-get install -y bison git hostname libncurses-dev libssl-dev make openssl pkg-config doxygen

3 下载与解压

3.1 下载

MySQL Server下载

这里不知道带boost与不带boost的有什么区别,后面使用cmake的时候都需要手动下载boost,所以就随便选一个吧。有知道的大神可以留言,小弟感激不尽。

3.2 解压

  1. tar -zxvf mysql-boost-8.0.19.tar.gz
  2. cd mysql-8.0.19

3.3 创建临时bld文件夹

  1. mkdir bld
  2. cd bld

4 编译与安装

4.1 cmake

  1. cmake .. \
  2. -DDOWNLOAD_BOOST=1 \
  3. -DWITH_BOOST=. \
  4. -DDEFAULT_CHARSET=utf8 \
  5. -DDEFAULT_COLLATION=utf8_general_ci \
  6. -DENABLED_LOCAL_INFILE=ON \
  7. -DWITH_SSL=system \
  8. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/server \
  9. -DMYSQL_DATADIR=/usr/local/mysql/data \
  10. -DMYSQL_TCP_PORT=3306 \

安装了boost的可以不需要:

  1. -DDOWNLOAD_BOOST=1
  2. -DWITH_BOOST

安装位置与数据位置根据需要自定义:

  1. -DCMAKE_INSTALL_PREFIX=
  2. -DMYSQL_DATADIR=

4.2 编译

  1. make -j n

n为cpu核心数,若失败请直接使用

  1. make

这里编译需要比较长的时间,有进度提示。

4.3 安装

  1. sudo make install

这里笔者遇到了libstdc++.so.6这个库的问题,MySQL Server 8.0.19安装需要GLIBCXX_3.4.25.

可以看看自己的libstdc++.so.6的路径:

  1. sudo find / -name lidstdc++.so.6

找到路径之后:

  1. strings /xxx/libstdc++.so.6 | grep GLIBCXX



笔者这里只有GLIBCXX_3.4.22,由于之前手动更新了gcc,在gcc的lib目录中:



因此只需要根据sudo make install的提示把这个libstdc++.so.6复制到/lib/:

  1. sudo cp libstdc++.so.6 /lib/x86_64-linux-gnu/

另一种解决办法是(针对Ubuntu系),添加ppa源,然后update:

  1. sudo add-apt-repository ppa:ubuntu-toolchain-r/test
  2. sudo apt-get update
  3. sudo apt-get upgrade
  4. sudo apt-get dist-upgrade

其他的也类似,更新gcc,手动指定lib的位置。



安装成功。

4.4 测试

  1. make test



测试通过。

5 配置MySQL

安装完成后还需要进行MySQL的配置。

5.1 新建用户组与用户

  1. sudo groupadd mysql
  2. sudo useradd -r -g mysql -s /bin/false mysql

5.2 修改数据目录所有者与权限

数据目录根据需要修改。

  1. sudo chown mysql:mysql /usr/local/mysql/data
  2. sudo chmod 777 /usr/local/mysql/data

这里官网的文档写的是750权限,但是后面会出现不可写错误,755也不行,所以直接改成了777。

5.3 my.cnf

my.cnf在/etc或/etc/mysql下,笔者这里安装后默认有一个my.cnf在/etc/mysql下:



/etc/mysql/my.cnf是全局配置,~/.my.cnf是用户特定的配置,这里直接修改/etc/mysql/my.cnf:

  1. [mysqld]
  2. port=3306
  3. basedir=/usr/local/mysql/server
  4. datadir=/usr/local/mysql/data
  5. character-set-server=utf8mb4
  6. [mysql]
  7. default-character-set=utf8
  8. [client]
  9. port=3306
  10. default-character-set=utf8

参数根据需要可以后期添加,这里如果使用utf8:

  1. [mysqld]
  2. character-set-server=utf8

会有警告,因为MySQL5.5.3之后增加了utf8mb4,mb4是most bytes 4的意思,专门用来兼容四字节的unicode,utf8指的是utf8mb3,支持的utf8编码最大字符长度为3字节,警告提示改成utf8mb4:

  1. [mysqld]
  2. character-set-server=utf8mb4

(额外阅读:utf8与utf8mb4

5.4 初始化

进入到MySQL Server的安装目录下的bin:

  1. mysqld --initialize-insecure --user=mysql



这里使用-insecure是因为后面不用输入随机密码。当然也可以去掉insecure,这样就会有一个随机密码,要记住。

  1. mysqld --initialize --user=mysql

5.5 支持ssl与rsa(可选)

  1. mysql_ssl_rsa_setup

这个一般服务器需要。

5.6 开启服务

  1. mysqld_safe --user=mysql &

5.7 修改root密码

先用root登录

  1. mysql -u root --skip-password

如果是使用initialize初始化的,输入

  1. mysql -u root -p

输入刚才的临时密码。

进去之后,使用alter修改root密码:

  1. alter 'root'@'localhost' identified by 'xxxxx'

5.8 测试

使用自带的mysqlshow与mysqladmin:

  1. mysqladmin -u root -p version
  2. mysqlshow -u root -p



完成,至此MySQL Server8.0.19安装完毕。

6 后续处理

6.1 删除文件

可以先把安装文件给删去:

  1. sudo rm -rf mysql-8.0.19*

另外,根据刚才cmake的时候的boost目录可以把boost库给删去:

  1. sudo rm -rf boost_1_70_0*

因为文档说只是需要boost去build,不需要使用。

6.2 别名

加个别名只是为了方便使用,这里笔者的做法其实很偷懒,默认root登录,修改~/.bash_aliases:

  1. alias mysqld="/usr/local/mysql/bin/mysqld_safe --user=mysql &"
  2. alias mysql="/usr/local/mysql/bin/mysql -u root -p"

使用MySQL之前使用mysqld启动服务挂后台,然后使用mysql登录,默认root用户。

当然更偷懒的做法是

  1. alias mysql="/usr/local/mysql/bin/mysql -u root --password=xxxx"

这样密码都不用输了。

linux下Mysql 8.0.19 编译安装的更多相关文章

  1. linux下MySQL 5.6源码安装

    linux下MySQL 5.6源码安装 1.下载:当前mysql版本到了5.6.20 http://dev.mysql.com/downloads/mysql 选择Source Code 2.必要软件 ...

  2. CentOS Linux下MySQL 5.1.x的安装、优化和安全配置

    下载页面:http://dev.mysql.com/downloads/mysql/5.1.html#downloads 到页面底部,找到Source downloads,这个是源码版本,下载第1个T ...

  3. CentOS下MySQL 5.7.9编译安装

    MySQL 5.7 GA版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复. MySQL 5.7主要特性: 更好的性能:对于多核CPU.固态硬盘.锁有着更好的优化 ...

  4. 【Linux下Hadoop-eclipse-plus-3.2.0】编译Hadoop连接eclipse的插件遇见的一系列错误,崩溃的操作

    2019-09-02 23:35:22 前言:首先,我想吐槽下自己,居然花费了4到5个夜晚和中午的时间来做这件事情,直到刚才才顺利解决,我也挺佩服自己的! 我在这个过程中参考其他人的博客,非常感谢他们 ...

  5. Linux 下 MySQL 的彻底卸载和安装配置字符集

    前言: Linux环境下MySQL的安装和配置在网上已经有很多教程了.之所以写这篇文章是因为在配置字符集的时候找了网上的一些教程发现并不能用导致折腾了一阵子.下面的教程均是亲自实践. MySQL的彻底 ...

  6. Linux下MySQL的彻底卸载和安装配置字符集

    前言: Linux环境下MySQL的安装和配置在网上已经有很多教程了.之所以写这篇文章是因为在配置字符集的时候找了网上的一些教程发现并不能用导致折腾了一阵子.下面的教程均是亲自实践. MySQL的彻底 ...

  7. Linux下./configure && make && make install 编译安装和卸载

    正常的编译安装/卸载: 源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install).   configure文件是一个可执行的脚本文件,它有很多选项, ...

  8. Windows10下mysql 8.0.19 安装配置方法图文教程

    第一步 下载安装包: 官网 毕竟是甲骨文公司的产品,去官网下真的慢! 这里有两个供选择的,我建议选第一个(因为我先下了第二个,结果失败了,不知道为什么总是出错.) 下载完自行选择路径解压就可以了. 第 ...

  9. linux下mysql 8.0安装

    安装本身同mysql 5.7,仍然建议使用tar.gz解压版,而非rpm安装包版. mysql已经将之前的mysql_native_password认证,修改成了caching_sha2_passwo ...

随机推荐

  1. 搭建SSH框架

    以下为链接地址:https://www.2cto.com/kf/201606/518341.html

  2. Vue学习笔记-chrome84版本浏览器跨域设置

    一  使用环境: windows 7 64位操作系统 二  chrome84版本浏览器跨域设置   报错问题:Indicate whether to send a cookie in a cross- ...

  3. 边缘计算k8s集群之SuperEdge

    什么是边缘计算? 边缘计算,是指在靠近物或数据源头的一侧,采用网络.计算.存储.应用核心能力为一体的开放平台,就近提供最近端服务.其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务.应 ...

  4. 通过const app = getApp()实现在 page 页面获取 app.js 定义的属性globalData,即获取全局数据

    App.js是项目的入口文件,页面的 page.js 文件会覆盖 app.js文件, App.js文件里面的一些方法: onLaunch : function(){}:这个方法是当小程序加载完毕后就执 ...

  5. SpringBoot2.1中添加过滤器配置

    1:构造一个实现 Filter 接口的过滤器,并在类上添加@component注释: notice1:若不添加,则需在spring中注入该bean,不然会报错. package com.dev.fil ...

  6. windows server 2008 r2 AD域服务器设置

    域控制器是指在"域"模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样,称为"域控制器(Domain Controller,简写为 ...

  7. windows本地连接虚拟机上的ubuntu的redis,以及无法连接解决方法(redisDesktopManager Jedis详细步骤)

    一.环境 1.ubuntu20.04 . redis 5.0.7 在ubuntu上下载redis,执行命令 sudo apt install redis 2.redisDesktopManager下载 ...

  8. free命令查看内存

    [root@jojo ~]# free -h total used free shared buff/cache available Mem: 991M 273M 64M 1.1M 653M 535M ...

  9. TorchVision Faster R-CNN 微调,实战 Kaggle 小麦检测

    本文将利用 TorchVision Faster R-CNN 预训练模型,于 Kaggle: 全球小麦检测 上实践迁移学习中的一种常用技术:微调(fine tuning). 本文相关的 Kaggle ...

  10. C# 基础 - linq 举例应用

    public class Player { public string Id { get; set; } public string Name { get; set; } public int Age ...