Ubuntu 16.04源码编译安装MySQL5.7

2023-05-16

CentOS源码编译安装,可以参考《CentOS 6源码编译安装MySQL5.6》这篇文章。

1 软件环境

  • Ubuntu 16.04
  • mysql-5.7.24

2 安装前的准备

## Ubuntu 16.04
$ sudo apt-get install make cmake gcc g++ bison libncurses5-dev build-essential

3 设置MYSQL用户名和组

[root@localhost src]# groupadd mysql
[root@localhost src]# useradd -r -g mysql mysql

4 下载源码并解压

MySQL5.7源码直接下载地址:

https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24.tar.gz

root@ubuntu:/opt/src# tar zxvf mysql-5.6.19.tar.gz
root@ubuntu:/opt/src# cd mysql-5.7.24

5 编译安装MYSQL

root@ubuntu:/opt/src/mysql-5.7.24# cmake . \
 -DCMAKE_INSTALL_PREFIX=/opt/mysql \
 -DMYSQL_DATADIR=/data/mysql \
 -DEXTRA_CHARSETS=all \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci

编译时可能会遇到下面问题:

解决方法:

  1. 下载https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
  2. 编译安装boost,安装方法参照这篇文章
root@ubuntu:/opt/src/mysql-5.7.24# make 
root@ubuntu:/opt/src/mysql-5.7.24# make install

6 设置MySQL目录权限

## 新建MYSQL数据文件目录
root@ubuntu:/opt/src/mysql-5.7.24# mkdir -p /data/mysql
## 修改MySQL目录所属的组和用户
root@ubuntu:/opt/src/mysql-5.7.24# cd /opt/mysql
root@ubuntu:/opt/mysql# chown -R mysql .
root@ubuntu:/opt/mysql# chgrp -R mysql .
## 修改MySQL数据目录所属的组和用户
root@ubuntu:/opt/mysql# chown -R mysql:mysql /data/mysql

6 初始化MYSQL数据库

root@ubuntu:/opt/mysql# bin/mysql_install_db --user=mysql  --datadir=/data/mysql
2018-12-04 19:32:06 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2018-12-04 19:32:06 [ERROR]   Can't locate the language directory.

注意:

mysql5.7和之前版本不同,很多资料上都是这个命令:./scripts/mysql_install_db --user=mysql,而mysql5.7的    mysql_install_db命令是在bin目录下,并且建议用mysqld --initialize命令。

正确执行:

root@ubuntu:/opt/mysql# bin/mysqld --initialize --user=mysql --datadir=/opt/mysql/data
2018-12-04T11:38:00.611145Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-12-04T11:38:02.454041Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-12-04T11:38:02.714693Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-12-04T11:38:02.788272Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 0f064fd9-f7b9-11e8-9ae3-000c293c34c6.
2018-12-04T11:38:02.798690Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-12-04T11:38:02.804849Z 1 [Note] A temporary password is generated for root@localhost: RvEkM50ey6:p

注意最后一行,这也是和之前版本不同的地方,它给了root一个初始密码,后面登录的时候要用到这个密码。

7 启动MYSQL

## you can start the MySQL daemon with
root@ubuntu:/opt/mysql# bin/mysqld_safe --user=mysql &

## 启动
root@ubuntu:/opt/mysql# support-files/mysql.server start

## 停止
root@ubuntu:/opt/mysql# support-files/mysql.server stop

## 进入MySQL命令行控制台,输入密码是上一步骤临时为root生成的密码
root@ubuntu:/opt/mysql-5.7.24# bin/mysql -u root  -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

8 简单使用

## 修改生成的root临时密码
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)

## 权限修改
mysql> use mysql;
mysql> desc user;
## 添加用户授权并打开远程连接
mysql> GRANT ALL PRIVILEGES ON *.* TO 'abc'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 
mysql> select Host,User,Password from user where User='abc';
mysql> flush privileges;
mysql> exit

9 遇到的问题

root@ubuntu:/opt/mysql# bin/mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.24

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Segmentation fault (core dumped)

解决方法:

修改mysql-5.7.24/cmd-line-utils/libedit/terminal.c源码,把terminal_set函数中的char buf[TC_BUFSIZE];注释,再把附近的area = buf;改为area = NULL;如下所示:

/* terminal_set():
 *      Read in the terminal capabilities from the requested terminal
 */
protected int
terminal_set(EditLine *el, const char *term)
{
        int i;
        /*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 = buf;
        area = NULL;

按照上述步骤重新编译安装MySQL和初始化数据库(建议初始化前删除/opt/mysql/data下的数据文件)。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu 16.04源码编译安装MySQL5.7 的相关文章

随机推荐

  • 201809-3 元素选择器 ccf

    建议将标签和属性分开储存 span class token macro property span class token directive keyword include span span class token string lt
  • 阿里云服务器ecs-user登录名注意事项

    阿里云服务器登录名提供root或ecs user可以选择 xff0c 如果选择root作为登录名 xff0c 一旦云服务器被入侵root权限比较大 xff0c 风险也比较大 xff0c 所以阿里云另外提供了ecs user登录名 xff0c
  • 几种基本汇编指令详解

    几种基本汇编指令详解 常见寄存器 寄存器16位32位64位累加寄存器AXEAXRAX基址寄存器BXEBXRBX计数寄存器CXECXRCX数据寄存器DXEDXRDX堆栈基指针BPEBPRBP变址寄存器SIESIRSI堆栈顶指针SPESPRSP
  • c++ 的string的格式化方法

    1 string strResult str double a 61 35 000 b 61 14 967 std ostringstream ostr ostr lt lt 34 a 43 b 61 34 lt lt a lt lt 34
  • mac硬盘空间不足

    本文参考自 xff1a mac空间不足 自我的进化 http www shanxing top p 61 108 先说结果 xff1a 是由于时间机器 xff08 time machine xff09 的自动备份造成的 在Mac的 关于本机
  • Airsim仿真

    Airsim设计的目的 xff1a 1 现实世界开发测试自动驾驶车辆算法费时费力 2 迎合AI的发展 xff0c 需要在各种条件下和环境下收集大量带注释训练数据 模块化设计 xff0c 强调可扩展性 提供很多API xff0c 核心组件包括
  • Linux 下安装Git

    一 系统 xff1a CentOS release 6 5 Final 查看是否安装过Git xff0c git version 二 下载最新的git xff1a https github com git git 解压缩 xff1a unz
  • 0404---通过SSH连接远程服务器运行图形界面程序问题

    远程运行 linux 服务器图形界面程序问题 通常部署在数据中心机房中的服务器是没有图形桌面的 xff0c 对服务器的日常运维也往往通过远程客户端命令窗口来进行 xff0c 但有时候往往需要在服务器上远程安装或运行图形窗口类软件 xff0c
  • Debian 下 Web Server 和浏览器的利用

    今天有人参观我的计算机 xff0c 呵呵 xff0c 被我的浏览器功能吓住了 xff0c 呵呵 xff0c 这年月 xff0c 浏览 器很管用啊 xff0c 不知道大家怎么用的 xff0c 谈谈我的吧 xff1a 1 wiki mediaw
  • Ubuntu查看linux系统版本号

    查看ubuntu版本 输入命令 cat proc version 显示如下 Linux version 5 0 0 13 generic buildd 64 lcy01 amd64 020 linux内核版本号 gcc version 8
  • Mac识别time machine出错或者打开备份盘里空白

    最近恢复Mac xff0c 从苹果售后拿来的给我预装的是mojova xff0c 10 x xff0c 我备份时候的系统是12 x所以差距比较大 在客服的远程帮助下 xff08 使用我手机远程 xff0c 打开相机就能看到我相机看到的东西
  • Mac终端首行显示特定字符便于查看

    方法一 xff1a 2022年11月3日亲测有效 xff1a 在终端中输入 sudo scutil set HostName x1f412 x1f412 x1f412 x1f412 x1f412 x1f412 就是你想修改的名字 回车之后重
  • VSC 配置c++调试环境

    弄了半天 xff0c 总算弄好了 xff0c 结合网上的教程 xff0c 整理分享一下 总体流程 xff1a 下载安装vscode安装cpptools插件安装编译 调试环境修改vscode调试配置文件 下载安装vscode https co
  • 字符串子序列匹配问题

    题目给你长度为n的字符串L xff0c 给你q个长度为0 m的字符串b xff0c 让你判断每一个b是否是字符串L的子序列 L和b长度小于1e5 xff09 例题 xff1a Long Long Ago 有三种做法 最后一种能过 一 最长公
  • 字符串最小字典序子序列

    给出一个长度为n 1 lt n lt 10000 的只有小写字母的字符串 xff0c 然后找出一个长度为m的最小字典子序列 做一个预处理 xff0c 首先26个vector存储每个字母出现位置的下标 xff0c O n 遍历字符串 xff0
  • 关于vscode中使用c语言链接mysql的问题

    关于vscode中使用c语言链接mysql的问题 最近想着写一个图书管理系统 用来当C语言的期末设计作业 xff0c 想着反正都要写了 就写 大 一点就想着连一下数据库吧 xff01 xff01 就碰到了N多的问题 首先我使用的是vscod
  • debain 、pve虚拟化平台修改国内源并修改dns

    pve 是基于debain的一个linux 虚拟化平台 xff0c 可以实现创建虚拟机 问题 xff1a Failed to fetch xxxxxxx E Failed to fetch http ftp debian org debia
  • 虚拟化平台PVE(ProxmoxVirtual Environment)安装部署

    1 iso下载 官方ISO下载地址 2 ventoyu盘制作工具 ventoy官方下载 使用上边制作好u盘 xff0c 将下载好的PVE镜像文件拖入u盘中 3 进入主板bios xff0c 设置u盘为第一启动项 4 进入pe系统选择镜像 5
  • ubuntu22.04安装教程

    1 选择语言 默认 2 取消安装更新 默认 3 选择键盘语言 默认 4 配置ip xff0c 可以直接选择dhcp xff0c 也可选择配置静态ip 默认 5 配置代理 跳过不填写 6 设置镜像源 默认 https mirrors aliy
  • Ubuntu 16.04源码编译安装MySQL5.7

    CentOS源码编译安装 xff0c 可以参考 CentOS 6源码编译安装MySQL5 6 这篇文章 1 软件环境 Ubuntu 16 04mysql 5 7 24 2 安装前的准备 Ubuntu 16 04 sudo apt get i