为什么要折腾?
首先说明的是ubuntu上安装mysql等软件是非常容易简单的,其简单的程度盖过windows上的安装,一句sudo apt-get install就可以搞定。如果想用最简便的方法安装mysql,那么本文不适合你;如果你喜欢“折腾”,有兴趣了解这一条sudo apt-get install帮你做了什么,有兴趣了解internal linux的细节并想尝试自己编译软件,那么你是本文的目标读者,希望你能从这篇文章中获得收获。

编译安装的几大步骤:

  1. 编译前的准备工作
  2. 初识CMAKE——配置MySQL编译选项
  3. 编译安装
  4. 安装后的MySQL配置
  5. 设置开机自动启动MySQL服务

一、编译前的准备工作

  • 官方网站下载Source Code(点此进入下载页)选择Source Code–>Generic Linux(mysql-VERSION.tar.gz)(PS:chrome访问此页,可能会遇到显示不正常的情况,建议换FF访问)
  • 建议有兴趣的童鞋读一读解压后的mysql目录下的相关文档,有许多重要的信息。比如此文以及大部分的类似文章都参考自INSTALL-SOURCE文档。
  • 创建mysql用户以及用户组,方便管理
    代码:
    sudo groupadd mysql
    代码:
    sudo useradd -r -g mysql mysql

二、初识CMAKE——配置MySQL编译选项
MySQL 5.5的编译工具由Autotool转变为了cmake(有关于更多关于cmake的信息,请大家自行google了解)。MySQL团队也撰写了一篇Autotools to CMake Transition Guide,本文将要列出的各个编译选项以及更多的编译选项的说明可以参考该文档。在troubleshooting时,此文档更是不得不看。编译时我习惯于一些选项(比如安装位置)不按默认的来,因为如果按默认选项出了问题,更不好解决(因为到时你不仅需要知道到底有选项有何含义还要知道默认的是什么,反而更麻烦)。进入解压的源代码目录mysql-VERSION

代码:
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/mysql \
-DMYSQL_DATADIR=/usr/mysql/data
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DWITH_DEBUG=0 \
-DWITH_INNOBASE_STORAGE_ENGINE=1

一些主要的参数说明:

引用:
选项名称 选项含义
DCMAKE_INSTALL_PREFIX 安装路径
DMYSQL_DATADIR 数据库路径
DDEFAULT_CHARSET 默认字符
DDEFAULT_COLLATION 默认字符集
DMYSQL_UNIX_ADDR 连接数据库socket路径
DWITH_DEBUG bool值,表示是否开启debug模式

在这里我开始的时候有一个疏忽:只设置DDEFAULT_CHARSET而没有设置DDEFAULT_COLLATION,因此总是出现

引用:
COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8'

三、编译安装

代码:
sudo make
sudo make install

这个阶段出现的问题概率较小。但是记得一定要以root权限执行make和make install,因为填写的安装路径不是home,而是/usr,必须有root权限才能进行写操作

四、安装后的MySQL配置
出问题的地方主要是在这里。出现问题的根源在于配置文件以及默认配置。由于是源代码安装且安装的位置不是默认位置,因此有一些选项必须制定才能使MySQL正常运行

  1. 进入安装后的目录执行

    代码:
    sudo chown -R mysql .
    代码:
    chgrp -R mysql .
    代码:
    sudo bin/scripts/mysql_install_db \
    --user=mysql \
    --basedir=/usr/mysql \
    --datadir=/usr/mysql/data \
    --no-defaults
  2. 切记后面有个–no-defaults选项,如果没有该选项,则程序会自动载入默认的配置文件,而目前你还没有完成配置文件的编写,因此很可能载入的是错误的信息。如果该指令能够运行成功,那么恭喜你,你的MySQLy可以成功的启动了。如果这一步出现了错误,不要着急,相关的log以及mysqld的启动信息提供了足够的信息帮助你trouble shooting(我就是这么过来的…)完成之后再执行
    代码:
    chown -R root .
    chown -R mysql data

    这两条指令应该是安全性考虑。

  3. 配置my.cnf——mysql的配置文件,这是很重要的一步,配置得当以后就不需要在启动时写上大段的参数了。
    首先应该知道:MySQL寻找配置文件的路径以及顺序。最开始检索的位置是/etc/my.cnf之后是/etc/mysql/my.cnf因此我们要做的就是在这两个地方之一建立配置文件my.cnf。MySQL为我们准备了几种不同方案的默认配置文件(在/usr/mysql/support-files/中),因此我们可以复制一份到上述的位置
    代码:
    sudo cp /usr/mysql/support-files/my-medium.cnf /etc/mysql/my.cnf

    通常我们是通过脚本传入适当的参数启动mysqld。因此在/etc/mysql/my.cnf中加入如下的内容:

    引用:
    [mysqld]
    basedir=/usr/mysql
    datadir=/usr/mysql/data
    user=mysql

    更多关于my.cnf的配置限于篇幅就不再讲了,但为了日常的开发需要还应该继续配置的,这部分内容就参考google搜索以及MySQL Manual吧

五、设置开机自动启动MySQL服务
这一部分讲解如何添加MySQL在开机时自动启动。MySQL Manual关于此部分的内容不准确,没有涵盖debian类的linux发行版的做法。
MySQL已经提供了默认的脚本mysql.server(在[mysql安装目录]/support-files/),首先进入该目录,尝试运行该脚本

代码:
sudo ./mysql.server start

运行正常的话则执行

代码:
sudo cp mysql.server /etc/init.d/mysql

Debian/Ubuntu上开机启动服务的管理不是使用chkconfig,而使用的是sysv-rc-conf,尝试执行

代码:
sudo sysv-rc-conf

若提示没有安装,则

代码:
sudo apt-get install sysv-rc-conf

之后运行即可,该工具采用的是图形界面,很直观在此就不介绍如何使用了,我们需要做的是找到【mysql】一栏,选定【3】【4】【5】这三列,这样就完成了开机自动启动MySQL daemon了。

MySQL的安装就基本完成了,希望大家能和我一样在“折腾”的过程中有所收获,“痛并快乐着”!

原文链接:http://liuyix.com/install-mysql-on-ubuntu-10-04-from-source

ubuntu上安装mysql 编译安装的更多相关文章

  1. 20190418 CentOS7实用技能综合:系统安装 + WinScp客户端连接 + 防火墙端口号iptables + Nginx编译安装 + MySQL编译安装 + Redis编译安装 + MongoDB编译安装 + ActiveMQ/RocketMQ/RabbitMQ编译安装 + ...各类常用生产环境软件的编译安装

    系统安装 + WinScp客户端连接 + 防火墙端口号iptables + Nginx编译安装 + MySQL编译安装 + Redis编译安装 + MongoDB编译安装 + ActiveMQ/Roc ...

  2. rpm安装MySQL5.5后配置,在centos5上;mysql编译安装在centos6.5上;

    [1] 没有/etc/my.cnf: rpm包安装的MySQL是不会安装/etc/my.cnf文件的:处理:cp /usr/share/mysql/my-huge.cnf /etc/my.cnf [2 ...

  3. CentOS6.9安装MySQL(编译安装、二进制安装)

    目录 CentOS6.9安装MySQL Linux安装MySQL的4种方式: 1. 二进制方式 特点:不需要安装,解压即可使用,不能定制功能 2. 编译安装 特点:可定制,安装慢 5.5之前: ./c ...

  4. ubuntu上源码编译安装mysql5.7.27

    一.查看操作系统环境和目录结构,并创建mysql用户和组,以及规划安装mysql所需要的目录. #cat /etc/issue 查看发行版本信息: #cat  /proc/version 查看正在运行 ...

  5. 在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6564592 在前一篇文章提到,从源代码树下载下 ...

  6. CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境

    CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境 什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/ ...

  7. Ubuntu 16.04下编译安装Apache2.4和PHP7结合

    Ubuntu 16.04下编译安装Apache2.4和PHP7结合,并安装PDOmysql扩展. 1.编译安装apache2.4.20 1 第一步: ./configure --prefix=/usr ...

  8. MySQL第01课- CentOS + 单实例MySql编译安装总结

    2016年2月,从oracle转向MySql ,碰上几个坑,特此记录 总结 1.注意环境变量.配置文件,操作过程不能出错 2.相比rpm方式安装,编译安装方式可以指定安装路径,再说安装是简单活,将来安 ...

  9. 2、mysql编译安装

    2.1前言: 此文档介绍的是cmake编译安装的方式: 二进制的安装方式在linux运维_集群_01中有详细的安装说明(已经编译完成,进行初始操作即可) 初始化操作时需要对编译好的mysql进行一下备 ...

随机推荐

  1. shell中单引号和双引号

    在shell中声明变量后直接使用: #!/bin/bash na=zhagnsan ag=11 echo '$na is $ag years old' 输出:$na is $ag years old ...

  2. nyoj 737 石子合并(一)。区间dp

    http://acm.nyist.net/JudgeOnline/problem.php?pid=737 数据很小,适合区间dp的入门 对于第[i, j]堆,无论你怎么合并,无论你先选哪两堆结合,当你 ...

  3. 解决Linux c语言运行时候“段错误 (核心已转储)”问题-采用gdb 解决

    编译没有警告,没有错误,运行就打印 段错误 (核心已转储) 网上找了一下,都是各种问题,都推荐用gdb 调试解决,咱也来趁机学习gdb一下.   gcc+gdb)输入命令行 运行 sudo apt-g ...

  4. Ajax2

    一.完整版Ajax $.ajax({ url: "Ashxs/Login.ashx", data: { "name": name, "pwd" ...

  5. hdu 5818 (优先队列) Joint Stacks

    题目:这里 题意: 两个类似于栈的列表,栈a和栈b,n个操作,push a x表示把数x放进a栈的栈底,pop b 表示将栈b的栈顶元素取出输出,并释放这个栈顶元素,merge a b表示把后面的那个 ...

  6. 解决 label 多行间距

    使用. 一个是间距,一个是行高,但是鉴于多行,都写的话,就相当于双倍行高了.我就用行高代替间距. self.textLabel.attributedText = [self getAttributed ...

  7. Sql Server 2008修改Sa密码

    1.用Windows验证模式进入数据库管理器 右键根目录 >>>>属性>>>>左边的安全性 选择sql server 和windows 验证(SQL S ...

  8. 组合(composition)与继承(inheritance)

    c++中一个重要的特点就是代码的重用,为了代码重用,有两个非常重要的手段,一个是继承,一个是组合 上面两种类的关系就分别是继承和组合.下面我们看一下代码示例: #ifndef USEFUL_H #de ...

  9. html及css常用的单词

    string? 字符串 boolean? 布尔数学体系,1,0 node? 节点,结 log? ? 日志,记录 console? 控制台 alert? ? 警报 document? 文档 write? ...

  10. [Chapter 3 Process]Practice 3.12 Including the initial parent process, how many processes are created by the program shown in Figure 3.32?

    3.12 Including the initial parent process, how many processes are created by the program shown in Fi ...