环境为 Ubuntu 12.04 64 位的桌面版

编译的mysql 版本为 5.7.18

首先需要安装一下依赖包

sudo apt-get install libncurses5-dev cmake chkconfig

创建用户组和用户 mysql

groupadd  mysql
useradd -r -g mysql -s /bin/bash mysql -d /home/mysql -m

创建mysql 的目录

cd /home/
mkdir mysql
cd mysql/
mkdir data
mkdir log
chmod -R /home/mysql

下载boost 库,从mysql 的cmake 文件中,貌似它依赖的boost 1.59.0 版本的库,所以直接download boost 源码

wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

解压boost 源码库

mkdir -p /root/source/Boost ; \
cd /root/source/Boost ; \
mv /mnt/boost_1_59_0.tar.gz ./ ; \
tar -zxvf ./boost_1_59_0.tar.gz ;

创建一个build的目录,为后面编译做准备

mkdir build

如果大家想对这个编译环境做gdb 源码研读,那样作者建议大家修改一下编译的配置项,因为默认情况下,编译是打开了“编译优化”选项,导致跟踪代码时,非常的混乱,解决的方法是打开cmake的配置文件,将-O3 的选项删除

vi cmake/build_configurations/compiler_options.cmake

然后查找 "CMAKE_C_FLAGS_RELWITHDEBINFO" 和 "CMAKE_CXX_FLAGS_RELWITHDEBINFO" 两个关键字,将 "-O3" 删除

例如在84行,原来是

SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}")

那么删除后,变成

SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO " ${COMMON_CXX_FLAGS}")

如此类推,当然,这个步骤并非必须,大家如果希望程序未来运行速度快一点,就按照默认就好了。

编译debug 模式,除了以上方法,也可以在cmake 生成编译文件时,增加一个 -DCMAKE_BUILD_TYPE=Debug 参数

进入到build 的目录,生成mysql 的安装文件

cd /opt/mysql-5.6./build
sudo cmake ../ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE= \
-DWITH_INNOBASE_STORAGE_ENGINE= \
-DWITH_READLINE= \
-DENABLED_LOCAL_INFILE= \
-DMYSQL_DATADIR=/home/mysql/data \
-DWITH_BOOST=/root/source/Boost/boost_1_59_0
 

经过测试发现,如果在Linux 中生成 Makefile 文件时,DEFAULT_CHARSET 参数只指定 “utf8”,则编译后的mysql 可执行文件不能够支持gbk 字符集。

经过验证,如果在Linux中生成Makefile时,采用以下命令,则能够同时gbk和utf8。

sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE= \
-DWITH_INNOBASE_STORAGE_ENGINE= \
-DWITH_READLINE= \
-DENABLED_LOCAL_INFILE= \
-DMYSQL_DATADIR=/home/mysql/data \
-DWITH_BOOST=/root/software/mysql-5.7./boost/boost_1_59_0

编译安装mysql

make && make install

部署mysql服务

cd /usr/local/mysql/ ; \
cp support-files/my-default.cnf ./my.cnf ; \
cp support-files/mysql.server ./mysqld ;

将 mysqld 文件 拷贝到 /etc/init.d 目录,为了下面为操作系统添加一个 service 服务

cp /usr/local/mysql/mysqld /etc/init.d/

添加一个mysqld 的service 服务

update-rc.d mysqld defaults

随便说一下,如果删除这个mysqld 服务,可以执行以下命令

update-rc.d mysqld remove

如果是想设置开机自启动,可以参考 sysv-rc-conf 命令

初始化一下 mysql 的data 目录,初始化之后,会在屏幕上输出一个临时的密码,但是由于我们拥有mysql 的更高权限,所以可以忽略它,通过其他方式来修改root 密码。

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data

启动mysql 无鉴权服务

bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

登陆mysql shell,设置一个root 密码

/usr/local/mysql/bin/mysql -uroot
SQL> update mysql.user set authentication_string=PASSWORD('mysql') where user='root';

停止刚才的mysql 服务,然后正常启动mysql 服务

service mysqld stop;
service mysqld start;

再使用mysql shell 登陆

/usr/local/mysql/bin/mysql -uroot -pmysql

还需要再设置一次密码,就能够正常访问

mysql> set password= password('mysql');

在 mysql 上创建一个database,名为"foo",并且指定字符集为“utf8”

CREATE DATABASE IF NOT EXISTS foo DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

如果希望创建的database 字符集为 “gbk”,则命令如下

create database if not exists DATABASENAME DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

如果希望mysql 服务可以允许其他客户端远程登陆以 root 用户登陆进来,需要执行以下命令

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysql' WITH GRANT OPTION;

mysql 是指登陆的密码,用户可以根据自己的需要修改,这里我只是用习惯性的填写为 “mysql” 而已

通过源码编译、安装的mysql服务,默认配置文件my.cnf 在 /etc/mysql/my.cnf 目录下。

mysql 服务的运行日志默认在 /var/log/mysql/error.log 路径下

配置mysql

参考博客:

https://blog.phpha.com/archives/1685.html

https://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html

http://xiaorui.cc/2016/01/20/mac%E4%B8%8B%E5%AE%89%E8%A3%85mysql5-7%E9%81%87%E5%88%B0%E9%BB%98%E8%AE%A4%E5%AF%86%E7%A0%81%E7%9A%84%E5%A4%A7%E5%9D%91/

http://blog.csdn.net/xitong2012/article/details/7282448

ubuntu 14.04 源码编译mysql-5.7.17的更多相关文章

  1. ubuntu 14.04 源码编译postgresql

    环境 ubuntu 14.04 桌面版 postgresql 源码下载链接,本教程是使用postgresql 9.3.4 进行编译的 http://www.postgresql.org/ftp/sou ...

  2. [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程

    标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...

  3. Ubuntu 16.04 源码编译安装PHP7+swoole

    备注: Ubuntu 16.04 Server 版安装过程图文详解 Ubuntu16镜像地址: 链接:https://pan.baidu.com/s/1XTVS6BdwPPmSsF-cYF6B7Q 密 ...

  4. Ubuntu 16.04 源码编译安装PHP7

    一.下载PHP7的最新版源码 php7.0.9  下载地址 http://php.net/get/php-7.0.9.tar.gz/from/a/mirror 二.解压 tar -zxf /tmp/p ...

  5. Ubuntu 16.04源码编译安装nginx 1.10.0

    一.下载相关的依赖库 pcre 下载地址 http://120.52.73.43/jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.t ...

  6. ubuntu 16.04源码编译和配置caffe详细教程 | Install and Configure Caffe on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/b90033a9/,欢迎阅读! Install and Configure Caffe on ubuntu 16.04 Series ...

  7. ubuntu 16.04源码编译OpenCV教程 | compile opencv on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/15f5c3e8/,欢迎阅读! compile opencv on ubuntu 16.04 Series Part 1: comp ...

  8. Ubuntu 16.04源码编译boost库 编写CMakeLists.txt | compile boost 1.66.0 from source on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/d5d4a460/,欢迎阅读! compile boost 1.66.0 from source on ubuntu 16.04 G ...

  9. [Part 3] 在Ubuntu 16.04源码编译PCL 1.8.1支持VTK和QT

    本文首发于个人博客https://kezunlin.me/post/137aa5fc/,欢迎阅读! Part-3: Install and Configure PCL 1.8.1 with vtk q ...

随机推荐

  1. Ubuntu下安装Android studio【转】

    本文转载自:http://blog.csdn.net/walleit/article/details/65696712 版权声明:本文为博主原创文章,未经博主允许不得转载. 一,软件准备 1. Lin ...

  2. javase练习题--每天写写

    package com.javaTestDemo; import java.util.Scanner; public class JavaTest1 { public static void main ...

  3. @SuppressWarnings("serial")注解

    @SuppressWarnings J2SE 提供的一个批注或者注解.该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默,即忽略这些警告信息. 在平常的编码过程中,我们经常 ...

  4. hadoop运行测试命令遇到的问题

    2017-02-16 09:46:14,926 INFO mapreduce.Job: Task Id : attempt_1487148856575_0001_m_000001_0, Status ...

  5. ORA-03113: end-of-file on communication channel (通信通道的文件结尾)

    今天有现场反应:数据库连不上了,提示什么归档日志有问题:又问了现场有做过什么特别操作,答曰没有,出问题后,只是重启了操作系统. 现场环境oracle11.0.2.3. 于是远程查看数据库状态,发现数据 ...

  6. [原创]java在线比较两个word文件

    一.项目背景 开发文档管理系统或OA办公系统的时候,实现在线处理word文档的功能比较容易,但是也经常会有客户提出文档版本管理的需求,这就需要同时在线打开两个word文件,对比两个不同版本的word文 ...

  7. python库学习笔记——分组计算利器:pandas中的groupby技术

    最近处理数据需要分组计算,又用到了groupby函数,温故而知新. 分组运算的第一阶段,pandas 对象(无论是 Series.DataFrame 还是其他的)中的数据会根据你所提供的一个或多个键被 ...

  8. Hihocder 1639 : 图书馆 (组合数+唯一分解 求最后一位)(妙)

    给定n,(n<=10^3),然后输入n的数a[i],(a[i]<=1e10),求ans=(a1+a2+a3...an)! / (a1!*a2!*a3!...an!) 的结果的最一位数. 适 ...

  9. AOP原理

    AOP(面向切面编程):扩展功能时不修改源代码,采用横向抽取机制 纵向抽取机制: 横向抽取机制: 第一种情况: 第二种情况:

  10. CentOS7.0安装Ceph(jewel)及以上版本

    背景 由于docker的Ceph插件rexray对Ceph版本有一定的要求,当Ceph版本为hammer (0.94.10)时,rexray无法成功创建rbd设备.CentOS 7及以上版本,默认安装 ...