关闭

MySQL5.6.12源码编译安装详细过程

1720人阅读 评论(0) 收藏 举报
分类:

本人转自:http://blog.csdn.net/mchdba/article/details/35994251

1 下载安装包download tar.gz

wget http://download.csdn.net/detail/mchdba/7545037

ps:修改yum源为163.

看个人情况而定,可以忽略

cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS6-Base-163.repo CentOS-Base.repo
yum clean all
2 安装cmake软件包

yum install cmake -y

3 create account of mysql
groupadd mysql           
useradd -g mysql mysql           
autoreconf --force --install
libtoolize --automake --force
automake --force --add-missing

注意autoreconf和automake可以通过yum install automake -y
libtoolize可以通过yum install libtool -y

4  complie the sources

数据目录  : /home/data/mysql/data
mysql软件目录  : /usr/local/mysql
mkdir -p /home/data/mysql/data
mkdir -p /usr/local/mysql
tar -xvf mysql-5.6.12.tar.gz 
cd mysql-5.6.12

5 预编译

[root@squid-2 mysql-5.6.12]# time cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/home/data/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR==/usr/local/mysql/mysql.sock -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

time cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/home/data/mysql/data/ -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci > tlog.log 2>tlogerr.log
然后查看tlogerr.log日志,看里面是否有ERROR信息,WARNING没关系.

# more tlogerr.log

......
-- Check size of wint_t
-- Check size of wint_t - done
-- Could NOT find Curses  (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:85 (MESSAGE):
  Curses library not found.  Please install appropriate package,
      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
  cmake/readline.cmake:128 (FIND_CURSES)
  cmake/readline.cmake:202 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:325 (MYSQL_CHECK_EDITLINE)

-- Configuring incomplete, errors occurred!
real 0m41.872s
user 0m23.508s
sys 0m16.328s


可能会出的问题:

CMake was unable to find a build program corresponding to "Unix Makefiles".....CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool..

大概的意思就是说cmake没有安装好,解决办法就是

yum install make -y

再预编译就可以了.


6 yum install make
ok
[root@472322 mysql-5.6.13]# 

[解决办法]

删除当前目录中的CMakeCache.txt

[root@squid-2 mysql-5.6.12]# rm -fCMakeCache.txt


安装ncurses-devel
yum -y install ncurses-devel

再报错如下:
-- Performing Test HAVE_PEERCRED
CMake Error at /usr/share/cmake/Modules/CMakeCXXInformation.cmake:17 (GET_FILENAME_COMPONENT):
  get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
  CMakeLists.txt:3 (PROJECT)


CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Performing Test HAVE_PEERCRED - Failed
-- Library mysqlclient depends on OSLIBS -lpthread;m;rt;dl
-- Googlemock was not found. gtest-based unit tests will be disabled. You can run cmake . -DENABLE_DOWNLOADS=1 to automatically download and build required components from source.
-- If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://foo.bar.com:80
Warning: Bison executable not found in PATH
-- Library mysqlserver depends on OSLIBS -lpthread;m;rt;crypt;dl
-- Configuring incomplete, errors occurred!

real 0m42.841s
user 0m24.527s
sys 0m16.543s
-- Configuring incomplete, errors occurred!

real    0m0.510s
user    0m0.275s
sys     0m0.112s
[root@472322 mysql-5.6.13]# 

yum install gcc gcc-c++ -y
yum install -y ncurses-devel.x86_64
yum install -y cmake.x86_64
yum install -y libaio.x86_64
yum install -y bison.x86_64
yum install -y gcc-c++.x86_64

[解决办法]:

删除原来的mysql-5.6.12目录,重新解压缩tar.gz包


8 重新执行编译
rm -rf /root/mysql-5.6.12
cd /root/
tar -xvf mysql-5.6.12.tar.gz 
cd /root/mysql-5.6.12
time cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/home/data/mysql/data/ -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci > tlog.log 2>tlogerr.log

real 0m45.943s
user 0m26.213s
sys 0m17.661s

等待执行完后先查看more tlogerr.log看里面是否有ERROR信息,WARNING没关系.如果有,反复删除当前目录中的CMakeCache.txt,解决ERROR,再执行 cmake直到没有error信息为止.

再查看more tlog.log如果输出如下信息就可以进行make操作了.

-- Library mysqlclient depends on OSLIBS -lpthread;m;rt;dl
-- Googlemock was not found. gtest-based unit tests will be disabled. You can run cmake . -DENABLE_
DOWNLOADS=1 to automatically download and build required components from source.
-- If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://foo.ba
r.com:80
-- Library mysqlserver depends on OSLIBS -lpthread;m;rt;crypt;dl
-- Configuring done
-- Generating done
-- Build files have been written to: /root/downloads/mysql-5.6.12

执行MAKE操作:

# time make 

这一步时间比较长,需要耐心等待,看中间是否有error信息产生。
会看到很多Building信息
......
[ 38%] Building CXX object storage/innobase/CMakeFiles/innobase.dir/lock/lock0iter.cc.o
[ 38%] Building CXX object storage/innobase/CMakeFiles/innobase.dir/lock/lock0lock.cc.o
[ 38%] Building CXX object storage/innobase/CMakeFiles/innobase.dir/lock/lock0wait.cc.o
[ 38%] Building CXX object storage/innobase/CMakeFiles/innobase.dir/log/log0log.cc.o
[ 39%] Building CXX object storage/innobase/CMakeFiles/innobase.dir/log/log0recv.cc.o
[ 39%] Building CXX object storage/innobase/CMakeFiles/innobase.dir/mach/mach0data.cc.o
[ 39%] Building CXX object storage/innobase/CMakeFiles/innobase.dir/mem/mem0mem.cc.o
......
[100%] Building CXX object mysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.o
Linking CXX executable my_safe_process
[100%] Built target my_safe_process

real 21m39.375s
user 18m9.239s
sys 1m34.320s

time make install
这个命令比较快
......
-- Installing: /usr/local/mysql/man/man8/mysqld.8
-- Installing: /usr/local/mysql/support-files/solaris/postinstall-solaris

real 0m8.439s
user 0m3.353s
sys 0m4.616s

9 init db,初始化数据库
ll /home/data/mysql/data
cd /home/data/mysql/data

先赋予文件夹mysql权限

chown -R mysql /home/data/mysql/data
chgrp -R mysql /home/data/mysql/data
chown -R mysql /usr/local/mysql/
chgrp -R mysql /usr/local/mysql/
cd /usr/local/mysql/
cp support-files/my-default.cnf /etc/my.cnf
编辑my.cnf,参考本文最后配置.编辑完后执行下面命令:
[root@localhost mysql]# scripts/mysql_install_db  --user=mysql --basedir=/usr/local/mysql --datadir=/home/data/mysql/data --defaults-file=/etc/my.cnf

Installing MySQL system tables.../usr/local/mysql/bin/mysqld: File '/home/data/mysql/binlog/mysql-bin.index' not found (Errcode: 2 - No such file or directory)
2014-06-27 10:47:14 9686 [ERROR] Aborting

2014-06-27 10:47:14 9686 [Note] Binlog end
2014-06-27 10:47:14 9686 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

[root@localhost mysql]# mkdir -p /home/data/mysql/binlog/
[root@localhost mysql]#
[root@localhost mysql]# chown -R mysql /home/data/mysql/binlog/
[root@localhost mysql]# chgrp -R mysql /home/data/mysql/binlog/
建好目录,再执行数据库初始化:
[root@472322 mysql56]# scripts/mysql_install_db  --user=mysql --basedir=/usr/local/mysql --datadir=/home/data/mysql/data --defaults-file=/etc/my.cnf
Installing MySQL system tables...2013-08-22 05:06:03 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2013-08-22 05:06:03 19416 [Note] InnoDB: The InnoDB memory heap is disabled
2013-08-22 05:06:03 19416 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2013-08-22 05:06:03 19416 [Note] InnoDB: Compressed tables use zlib 1.2.3
2013-08-22 05:06:03 19416 [Note] InnoDB: Using CPU crc32 instructions
2013-08-22 05:06:03 19416 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2013-08-22 05:06:03 19416 [Note] InnoDB: Completed initialization of buffer pool
2013-08-22 05:06:03 19416 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
2013-08-22 05:06:03 19416 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
2013-08-22 05:06:03 19416 [Note] InnoDB: Database physically writes the file full: wait...
2013-08-22 05:06:03 19416 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2013-08-22 05:06:03 19416 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2013-08-22 05:06:03 19416 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2013-08-22 05:06:03 19416 [Warning] InnoDB: New log files created, LSN=45781
2013-08-22 05:06:03 19416 [Note] InnoDB: Doublewrite buffer not found: creating new
2013-08-22 05:06:03 19416 [Note] InnoDB: Doublewrite buffer created
2013-08-22 05:06:03 19416 [Note] InnoDB: 128 rollback segment(s) are active.
2013-08-22 05:06:03 19416 [Warning] InnoDB: Creating foreign key constraint system tables.
2013-08-22 05:06:03 19416 [Note] InnoDB: Foreign key constraint system tables created
2013-08-22 05:06:03 19416 [Note] InnoDB: Creating tablespace and datafile system tables.
2013-08-22 05:06:03 19416 [Note] InnoDB: Tablespace and datafile system tables created.
2013-08-22 05:06:03 19416 [Note] InnoDB: Waiting for purge to start
2013-08-22 05:06:03 19416 [Note] InnoDB: 5.6.13 started; log sequence number 0
2013-08-22 05:06:04 19416 [Note] Binlog end
2013-08-22 05:06:04 19416 [Note] InnoDB: FTS optimize thread exiting.
2013-08-22 05:06:04 19416 [Note] InnoDB: Starting shutdown...
2013-08-22 05:06:05 19416 [Note] InnoDB: Shutdown completed; log sequence number 1625977
OK

Filling help tables...2013-08-22 05:06:05 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2013-08-22 05:06:05 19439 [Note] InnoDB: The InnoDB memory heap is disabled
2013-08-22 05:06:05 19439 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2013-08-22 05:06:05 19439 [Note] InnoDB: Compressed tables use zlib 1.2.3
2013-08-22 05:06:05 19439 [Note] InnoDB: Using CPU crc32 instructions
2013-08-22 05:06:05 19439 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2013-08-22 05:06:05 19439 [Note] InnoDB: Completed initialization of buffer pool
2013-08-22 05:06:05 19439 [Note] InnoDB: Highest supported file format is Barracuda.
2013-08-22 05:06:05 19439 [Note] InnoDB: 128 rollback segment(s) are active.
2013-08-22 05:06:05 19439 [Note] InnoDB: Waiting for purge to start
2013-08-22 05:06:05 19439 [Note] InnoDB: 5.6.13 started; log sequence number 1625977
2013-08-22 05:06:05 19439 [Note] Binlog end
2013-08-22 05:06:05 19439 [Note] InnoDB: FTS optimize thread exiting.
2013-08-22 05:06:05 19439 [Note] InnoDB: Starting shutdown...
2013-08-22 05:06:06 19439 [Note] InnoDB: Shutdown completed; log sequence number 1625987
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

  /usr/local/mysql56/bin/mysqladmin -u root password 'new-password'
  /usr/local/mysql56/bin/mysqladmin -u root -h 472322.ea.com password 'new-password'

Alternatively you can run:

  /usr/local/mysql56/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
  cd . ; /usr/local/mysql56/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
  cd mysql-test ; perl mysql-test-run.pl
Please report any problems with the ./bin/mysqlbug script!
The latest information about MySQL is available on the web at
  http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com

New default config file was created as /usr/local/mysql56/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings

WARNING: Default config file /etc/my.cnf exists on the system
This file will be read by default by the MySQL server
If you do not want to use this, either remove it, or use the
--defaults-file argument to mysqld_safe when starting the server
[root@472322 mysql56]# 

10 copy start command 
cp support-files/mysql.server /etc/init.d/mysqld5612
chmod 700 /etc/init.d/mysqld5612
echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile 
source /etc/profile

11 添加开机启动
chkconfig --add mysqld5612

12  start service 
service mysqld5612 start
[root@squid-2 mysql]# service mysqld5612 start
Starting MySQL.......The server quit without updating PID f[失败]usr/local/mysql/mysqld.pid).
[root@squid-2 mysql]# 
查看日志报错如下:
2014-06-24 14:56:54 31726 [Note] Server socket created on IP: '::'.
2014-06-24 14:56:54 31726 [ERROR] Can't start server : Bind on unix socket: Permission denied
2014-06-24 14:56:54 31726 [ERROR] Do you already have another mysqld server running on socket: /usr/local/mysql/mysql.sock ?
2014-06-24 14:56:54 31726 [ERROR] Aborting
解决原因是:
/usr/local/mysql跟目录需要赋予mysql权限
根据日志文件显示,首先检查运行权限,再看一下/usr/local/mysql/mysql.sock,发现/usr/local/mysql目录下并没有该文件,是否是没有权限写目录?
看到/usr/local/mysql目录是root用户,所以赋予mysql操作权限。
chown -R mysql.mysql /usr/local/mysql
 
[root@472322 data56]# service mysqld5612 start
Starting MySQL. SUCCESS! 
[root@472322 data56]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.13 Source distribution

Copyright (c) 2000, 2013, 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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> 


总结源码安装的所有命令:

yum install cmake -y
groupadd mysql
useradd -g mysql mysql  
autoreconf --force --install
libtoolize --automake --force
automake --force --add-missing
yum install -y libtoolize


yum install gcc gcc-c++ -y
yum install -y ncurses-devel.x86_64
yum install -y cmake.x86_64
yum install -y libaio.x86_64
yum install -y bison.x86_64
yum install -y gcc-c++.x86_64
yum install make -y


mkdir -p /home/data/mysql/data
mkdir -p /usr/local/mysql


 tar -xvf mysql-5.6.12.tar.gz 
 cd mysql-5.6.12




time cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/home/data/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR==/usr/local/mysql/mysql.sock -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci


time make 
time make install
cd /home/data/mysql/data
chown -R mysql /home/data/mysql/data
chgrp -R mysql /home/data/mysql/data
chown -R mysql /usr/local/mysql/
chgrp -R mysql /usr/local/mysql/


mkdir -p /home/data/mysql/binlog/
chown -R mysql /home/data/mysql/binlog/
chgrp -R mysql /home/data/mysql/binlog/


time scripts/mysql_install_db  --user=mysql --basedir=/usr/local/mysql --datadir=/home/data/mysql/data --defaults-file=/etc/my.cnf


cp support-files/mysql.server /etc/init.d/mysql
chmod 700 /etc/init.d/mysql
echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile 
source /etc/profile
chkconfig --add mysql



最后附上最基本的my.cnf文件,其他参数未加

[root@localhost mysql]# more /etc/my.cnf 
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock

[mysqld]
port = 3306
socket = /usr/local/mysql/mysql.sock
pid-file = /usr/local/mysql/mysqld.pid
basedir = /usr/local/mysql
datadir = /home/data/mysql/data
user = mysql

server_id = 213130

log-bin = /home/data/mysql/binlog/mysql-bin.log

innodb_buffer_pool_size = 128M


# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysql_safe]
open-files-limit = 8192
log-error = /usr/local/mysql/mysqld.log

我自己亲自测试,可能各位安装过程还有很多这样那样的问题,欢迎留言,大家一块儿解决和学习.


0
0
查看评论

源码编译安装MySQL5.6.12详细过程

1 下载安装包download tar.gzwget http://download.csdn.net/detail/mchdba/7545037​2 安装cmake软件包yum install cmake -y3 create account of mysqlgroupadd mysql ...
  • mchdba
  • mchdba
  • 2014-06-30 17:50
  • 9160

RedHat/CentOS源码编译安装MySQL5.6.12

一、环境准备: 我尝试过以下环境都是能成功的: 1、CentOS6.4 minimal镜像最小化缺省安装; 2、RedHat6.4 DVD基本服务器安装; 3、RedHat5.4 DVD基本服务器安装; 4、其他Linux版本未验证。 注意系统安装好之后需要配置好网卡,关闭防火墙及SEL...
  • stuartjing
  • stuartjing
  • 2013-08-02 17:35
  • 4905

centOS下编译安装php

centOS下编译安装php
  • hellojammy
  • hellojammy
  • 2015-01-07 16:17
  • 253

docker源码编译安装步骤解析

原料:linux 系统,本人在Ubuntu16.04上运行 step 0: 安装docker,终端执行 sudo apt—get install docker.io 因为docker的源码需要在容器中 运行,因此必须要有docker存在 step 1: git clone https://gi...
  • wujianyongw4
  • wujianyongw4
  • 2017-04-24 15:52
  • 2659

centos7下源码编译配置 apache2.4+mysql5.6+php7.1

在centos7系统下编译apache2.4,PHP7,mysql5.6
  • yuzengyuan
  • yuzengyuan
  • 2017-08-27 23:29
  • 1288

mysql 5.6.12 安装

mysql 从5.5之后,安装方式发生了变化,本文针对5.6.12进行安装。
  • ls3648098
  • ls3648098
  • 2013-07-24 16:19
  • 4995

Alisql源码编译安装(详细篇)

AliSQL 在 2016 云栖大会宣布开放源代码之后,迅速就获得了广泛的关注,目前(2016-10-27) star 数目已达 1187,欢迎访问 AliSQL GitHub 项目关注。社区反应也非常活跃,在 Issue 中提了不少反馈建议,其中有一部分是和编译安装相关的,因为官方目前并没有提供 ...
  • xzknet
  • xzknet
  • 2016-12-16 02:16
  • 6005

CentOS 7 使用源代码编译并安装软件

CentOS 7 使用源代码编译并安装软件 1. 确保有编译开发环境 # yum group list 看看是否有 Development Tools 没有的话需要安装 # yum group install "Development To...
  • Shirley_John_Thomas
  • Shirley_John_Thomas
  • 2016-09-03 18:01
  • 1852

串口调试助手VC源程序及详细编程过程

 串口调试助手VC源程序及编程详细过程作者:龚建伟  可以任意转载,注明作者和说明来自 ◆龚建伟技术主页◆ 目次:1.建立项目  2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量4.在对话框中添加控件...
  • roaringwind
  • roaringwind
  • 2002-07-16 15:29
  • 12543

linux下编译安装软件的一般步骤

首先来看window安装软件的一般步骤 (1)找到网站下载安装源文件 (2)点开安装 (3)指定安装目录 (4)选择配置属性(可选) (5)安装并完成linux安装只是采用命令行形式。1.找到网站下载安装源文件下载方式: 方式1:在浏览器中搜索并下载文件 方式2:直接使用命令行下载 ...
  • ktigerhero3
  • ktigerhero3
  • 2017-02-22 16:05
  • 2005
    个人资料
    • 访问:2017199次
    • 积分:15301
    • 等级:
    • 排名:第887名
    • 原创:148篇
    • 转载:241篇
    • 译文:0篇
    • 评论:235条
    最新评论