linux下Mysql 8.0.19 编译安装
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:
sudo yum install -y bison bzip2 git hostname ncurses-devel openssl openssl-devel pkgconfig tar wget zlib-devel doxygen
8.x:
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系
sudo apt-get update
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 解压
tar -zxvf mysql-boost-8.0.19.tar.gz
cd mysql-8.0.19
3.3 创建临时bld文件夹
mkdir bld
cd bld
4 编译与安装
4.1 cmake
cmake .. \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=. \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_SSL=system \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/server \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_TCP_PORT=3306 \
安装了boost的可以不需要:
-DDOWNLOAD_BOOST=1
-DWITH_BOOST
安装位置与数据位置根据需要自定义:
-DCMAKE_INSTALL_PREFIX=
-DMYSQL_DATADIR=

4.2 编译
make -j n
n为cpu核心数,若失败请直接使用
make
这里编译需要比较长的时间,有进度提示。

4.3 安装
sudo make install
这里笔者遇到了libstdc++.so.6这个库的问题,MySQL Server 8.0.19安装需要GLIBCXX_3.4.25.
可以看看自己的libstdc++.so.6的路径:
sudo find / -name lidstdc++.so.6
找到路径之后:
strings /xxx/libstdc++.so.6 | grep GLIBCXX

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

因此只需要根据sudo make install的提示把这个libstdc++.so.6复制到/lib/:
sudo cp libstdc++.so.6 /lib/x86_64-linux-gnu/
另一种解决办法是(针对Ubuntu系),添加ppa源,然后update:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
其他的也类似,更新gcc,手动指定lib的位置。

安装成功。
4.4 测试
make test

测试通过。
5 配置MySQL
安装完成后还需要进行MySQL的配置。
5.1 新建用户组与用户
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
5.2 修改数据目录所有者与权限
数据目录根据需要修改。
sudo chown mysql:mysql /usr/local/mysql/data
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:
[mysqld]
port=3306
basedir=/usr/local/mysql/server
datadir=/usr/local/mysql/data
character-set-server=utf8mb4
[mysql]
default-character-set=utf8
[client]
port=3306
default-character-set=utf8
参数根据需要可以后期添加,这里如果使用utf8:
[mysqld]
character-set-server=utf8
会有警告,因为MySQL5.5.3之后增加了utf8mb4,mb4是most bytes 4的意思,专门用来兼容四字节的unicode,utf8指的是utf8mb3,支持的utf8编码最大字符长度为3字节,警告提示改成utf8mb4:
[mysqld]
character-set-server=utf8mb4
(额外阅读:utf8与utf8mb4)
5.4 初始化
进入到MySQL Server的安装目录下的bin:
mysqld --initialize-insecure --user=mysql

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

5.5 支持ssl与rsa(可选)
mysql_ssl_rsa_setup
这个一般服务器需要。
5.6 开启服务
mysqld_safe --user=mysql &
5.7 修改root密码
先用root登录
mysql -u root --skip-password
如果是使用initialize初始化的,输入
mysql -u root -p
输入刚才的临时密码。
进去之后,使用alter修改root密码:
alter 'root'@'localhost' identified by 'xxxxx'
5.8 测试
使用自带的mysqlshow与mysqladmin:
mysqladmin -u root -p version
mysqlshow -u root -p

完成,至此MySQL Server8.0.19安装完毕。
6 后续处理
6.1 删除文件
可以先把安装文件给删去:
sudo rm -rf mysql-8.0.19*
另外,根据刚才cmake的时候的boost目录可以把boost库给删去:
sudo rm -rf boost_1_70_0*
因为文档说只是需要boost去build,不需要使用。

6.2 别名
加个别名只是为了方便使用,这里笔者的做法其实很偷懒,默认root登录,修改~/.bash_aliases:
alias mysqld="/usr/local/mysql/bin/mysqld_safe --user=mysql &"
alias mysql="/usr/local/mysql/bin/mysql -u root -p"
使用MySQL之前使用mysqld启动服务挂后台,然后使用mysql登录,默认root用户。
当然更偷懒的做法是
alias mysql="/usr/local/mysql/bin/mysql -u root --password=xxxx"
这样密码都不用输了。
linux下Mysql 8.0.19 编译安装的更多相关文章
- linux下MySQL 5.6源码安装
linux下MySQL 5.6源码安装 1.下载:当前mysql版本到了5.6.20 http://dev.mysql.com/downloads/mysql 选择Source Code 2.必要软件 ...
- CentOS Linux下MySQL 5.1.x的安装、优化和安全配置
下载页面:http://dev.mysql.com/downloads/mysql/5.1.html#downloads 到页面底部,找到Source downloads,这个是源码版本,下载第1个T ...
- CentOS下MySQL 5.7.9编译安装
MySQL 5.7 GA版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复. MySQL 5.7主要特性: 更好的性能:对于多核CPU.固态硬盘.锁有着更好的优化 ...
- 【Linux下Hadoop-eclipse-plus-3.2.0】编译Hadoop连接eclipse的插件遇见的一系列错误,崩溃的操作
2019-09-02 23:35:22 前言:首先,我想吐槽下自己,居然花费了4到5个夜晚和中午的时间来做这件事情,直到刚才才顺利解决,我也挺佩服自己的! 我在这个过程中参考其他人的博客,非常感谢他们 ...
- Linux 下 MySQL 的彻底卸载和安装配置字符集
前言: Linux环境下MySQL的安装和配置在网上已经有很多教程了.之所以写这篇文章是因为在配置字符集的时候找了网上的一些教程发现并不能用导致折腾了一阵子.下面的教程均是亲自实践. MySQL的彻底 ...
- Linux下MySQL的彻底卸载和安装配置字符集
前言: Linux环境下MySQL的安装和配置在网上已经有很多教程了.之所以写这篇文章是因为在配置字符集的时候找了网上的一些教程发现并不能用导致折腾了一阵子.下面的教程均是亲自实践. MySQL的彻底 ...
- Linux下./configure && make && make install 编译安装和卸载
正常的编译安装/卸载: 源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install). configure文件是一个可执行的脚本文件,它有很多选项, ...
- Windows10下mysql 8.0.19 安装配置方法图文教程
第一步 下载安装包: 官网 毕竟是甲骨文公司的产品,去官网下真的慢! 这里有两个供选择的,我建议选第一个(因为我先下了第二个,结果失败了,不知道为什么总是出错.) 下载完自行选择路径解压就可以了. 第 ...
- linux下mysql 8.0安装
安装本身同mysql 5.7,仍然建议使用tar.gz解压版,而非rpm安装包版. mysql已经将之前的mysql_native_password认证,修改成了caching_sha2_passwo ...
随机推荐
- redis五种数据类型的应用
redis的五种数据类型和使用场景 string类型 string类型多用于缓存 set key value(value可以为json字符串) setnx多用于分布式锁(后面详细整理) 计数器 inc ...
- Redis操作指南
目录 Redis安装与使用教程 一.Redis介绍 1.redis安装 2.redis与mysql的异同 3.redis与memcache的异同 二.Redis操作 1.启动服务 2.密码管理 3.连 ...
- 进位&&大数字符串处理
Have Fun with Numbers Notice that the number 123456789 is a 9-digit number consisting exactly the nu ...
- xscan的安装和使用(作业整理)
1.将学习通上下载的xscan.rar进行解压. 2.将缺少的.dll文件粘贴到软件解压目录中. 3.点击打开软件. 3.1在运行中除了发现缺少.dll文件的问题,我电脑又出现类似问题, 采取了关闭防 ...
- AWS Switching to an IAM role (AWS CLI)
一,引言 今天额外分享一篇 AWS 的技术内容,需要在 EC2 切换到跨账号 IAM 角色(AWS CLI).假设我们使用两个 AWS 账户,A账号,B账号.我们希望允许 A 账号用于 "i ...
- 手把手教你手写一个最简单的 Spring Boot Starter
欢迎关注微信公众号:「Java之言」技术文章持续更新,请持续关注...... 第一时间学习最新技术文章 领取最新技术学习资料视频 最新互联网资讯和面试经验 何为 Starter ? 想必大家都使用过 ...
- 原生JS快速实现拖放
原生 JS 快速实现拖放 拖放是很常见的一种交互效果,很多时候我们都会借助于第三方的控件来实现,其实用原生 js 实现起来也非常的方便.接下来我们就用原生 js 和 css 快速实现拖放效果 html ...
- hive中更改表impala中不能生效
hive中的更新或者新建表impala 不能实时更新 Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的meta ...
- k8s v1.18.2 centos7 下环境搭建
准备 服务器:3台机器--1台主.2台工作节点,可以使用virtualbox 搭建虚拟机 主机名 centos version ip docker version flannel version 主机 ...
- 如何读写拥有命名空间xmlns 属性的Xml文件(C#实现)
我们在进行C#项目Xml读写开发时经常遇到一些读写问题,今天我要介绍的是遇到多个命名空间xmlns属性时如何读写此类文件. 比如下面这个Xml文件: <?xml version="1. ...