• Categories
    Category
  • Categories
    Category
  • News
  • Tutorials
  • Forums
  • Tags
  • Users
Tutorial Comments FAQ Related Articles

How to install MySQL from source on CentOS 6

2150

To install MySQL from source on CentOS 6

MySQL is a database server which can be installed from either source code or by using yum package manager. Installing an application directly from its source contains a lot of benefits, and in this tutorial, you are going to learn about the installation of MySQL from its source on CentOS 6.  MySQL' s source code is available on it' s official website, you can download it from there and install it on your server.

 

Installing MySQL from Source Code

Before compiling MySQL from it' s source, make sure you install the following dependency packages by running the following command.

[root@linuxhelp ~]# yum groupinstall " Development Tools"  -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Group Process
Determining fastest mirrors
* base: centos.excellmedia.net
* extras: centos.excellmedia.net
* updates: centos.excellmedia.net
Package 1:make-3.81-23.el6.x86_64 already installed and latest version
Package patch-2.6-6.el6.x86_64 already installed and latest version
Package 1:pkgconfig-0.23-9.1.el6.x86_64 already installed and latest version
Package gettext-0.17-18.el6.x86_64 already installed and latest version
Package elfutils-0.164-2.el6.x86_64 already installed and latest version
Package cvs-1.11.23-16.el6.x86_64 already installed and latest version
Resolving Dependencies
-->  Running transaction check
--->  Package autoconf.noarch 0:2.63-5.1.el6 will be installed
--->  Package automake.noarch 0:1.11.1-4.el6 will be installed
--->  Package binutils.x86_64 0:2.20.51.0.2-5.46.el6 will be updated
--->  Package binutils.x86_64 0:2.20.51.0.2-5.47.el6_9.1 will be an update
--->  Package bison.x86_64 0:2.4.1-5.el6 will be installed
--->  Package byacc.x86_64 0:1.9.20070509-7.el6 will be installed
--->  Package cscope.x86_64 0:15.6-7.el6 will be installed
.
.
.
Dependency Installed:
cloog-ppl.x86_64 0:0.15.7-1.2.el6 cpp.x86_64 0:4.4.7-18.el6 gettext-devel.x86_64 0:0.17-18.el6 gettext-libs.x86_64 0:0.17-18.el6
kernel-devel.x86_64 0:2.6.32-696.13.2.el6 libgcj.x86_64 0:4.4.7-18.el6 libgfortran.x86_64 0:4.4.7-18.el6 libstdc++-devel.x86_64 0:4.4.7-18.el6
mpfr.x86_64 0:2.4.1-6.el6 perl-Compress-Raw-Zlib.x86_64 1:2.021-144.el6 perl-Compress-Zlib.x86_64 0:2.021-144.el6 perl-Error.noarch 1:0.17015-4.el6
perl-Git.noarch 0:1.7.1-9.el6_9 perl-HTML-Parser.x86_64 0:3.64-2.el6 perl-HTML-Tagset.noarch 0:3.20-4.el6 perl-IO-Compress-Base.x86_64 0:2.021-144.el6
perl-IO-Compress-Zlib.x86_64 0:2.021-144.el6 perl-URI.noarch 0:1.40-2.el6 perl-XML-Parser.x86_64 0:2.36-7.el6 perl-libwww-perl.noarch 0:5.833-5.el6
ppl.x86_64 0:0.10.2-11.el6 systemtap-client.x86_64 0:2.9-7.el6 systemtap-devel.x86_64 0:2.9-7.el6

Updated:
binutils.x86_64 0:2.20.51.0.2-5.47.el6_9.1

Complete!

Since the MySQL source code can be installed by using cmake command, let' s install Cmake package as follows.

[root@linuxhelp ~]# yum install cmake ncurses-devel -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: centos.excellmedia.net
* extras: centos.excellmedia.net
* updates: centos.excellmedia.net
Resolving Dependencies
-->  Running transaction check
--->  Package cmake.x86_64 0:2.8.12.2-4.el6 will be installed
--->  Package ncurses-devel.x86_64 0:5.7-4.20090207.el6 will be installed
-->  Finished Dependency Resolution
.
.
.
Running Transaction
Installing : ncurses-devel-5.7-4.20090207.el6.x86_64 1/2
Installing : cmake-2.8.12.2-4.el6.x86_64 2/2
Verifying : cmake-2.8.12.2-4.el6.x86_64 1/2
Verifying : ncurses-devel-5.7-4.20090207.el6.x86_64 2/2

Installed:
cmake.x86_64 0:2.8.12.2-4.el6 ncurses-devel.x86_64 0:5.7-4.20090207.el6
Complete!

 

MySQL also requires boost, so it should be installed on your machine for the source code compilation. You can install it by using yum command or by using source code for boost. Or else by simply downloading the MySQL package along its boost package by including it in the command as follows.

[root@linuxhelp ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
--2017-11-12 23:58:25-- https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
Resolving dev.mysql.com... 137.254.60.11
Connecting to dev.mysql.com|137.254.60.11|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz [following]
--2017-11-12 23:58:27-- https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
Resolving cdn.mysql.com... 23.207.128.216
Connecting to cdn.mysql.com|23.207.128.216|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 48833145 (47M) [application/x-tar-gz]
Saving to: “ mysql-boost-5.7.20.tar.gz” 

100%[=================================================================================================================================================================> ] 48,833,145 951K/s in 59s

2017-11-12 23:59:27 (807 KB/s) - “ mysql-boost-5.7.20.tar.gz”  saved [48833145/48833145]

 

You shall now extract downloaded package.

[root@linuxhelp ~]# tar -xzf mysql-boost-5.7.20.tar.gz

 

Now, move to extracted directory so that you can install MySQL source. Also, run the cmake command as in the following way. 

[root@linuxhelp ~]# cd mysql-5.7.20/
[root@linuxhelp mysql-5.7.20]# ls
boost cmake config.h.cmake dbug extra libbinlogevents libmysql man mysys_ssl rapid scripts storage testclients vio
BUILD CMakeLists.txt configure.cmake Docs include libbinlogstandalone libmysqld mysql-test packaging README sql strings unittest win
client cmd-line-utils COPYING Doxyfile-perfschema INSTALL libevent libservices mysys plugin regex sql-common support-files VERSION zlib

[root@linuxhelp mysql-5.7.20]# cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql -DWITH_BOOST=/root/mysql-5.7.20/boost/
-- Running cmake version 2.8.12.2
-- Found Git: /usr/bin/git (found version " 1.7.1" )
-- Configuring with MAX_INDEXES = 64U
-- The C compiler identification is GNU 4.4.7
-- The CXX compiler identification is GNU 4.4.7
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- CMAKE_GENERATOR: Unix Makefiles
-- Looking for SHM_HUGETLB
-- Looking for SHM_HUGETLB &ndash  found
.
.
.
-- COMPILE_DEFINITIONS: _GNU_SOURCE _FILE_OFFSET_BITS=64 HAVE_CONFIG_H HAVE_LIBEVENT1
-- CMAKE_C_FLAGS: -Wall -Wextra -Wformat-security -Wvla -Wwrite-strings -Wdeclaration-after-statement
-- CMAKE_CXX_FLAGS: -Wall -Wextra -Wformat-security -Wvla -Woverloaded-virtual -Wno-unused-parameter
-- CMAKE_C_LINK_FLAGS:
-- CMAKE_CXX_LINK_FLAGS:
-- CMAKE_C_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF
-- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF
-- Configuring done
-- Generating done
-- Build files have been written to: /root/mysql-5.7.20

 

 

Now run make command, this command may take a while to process, may be more than 2 hours, but it depends on the system performance. So, wait until the process gets over.

[root@linuxhelp mysql-5.7.20]# make
Scanning dependencies of target INFO_BIN
[ 0%] Built target INFO_BIN
Scanning dependencies of target INFO_SRC
[ 0%] Built target INFO_SRC
Scanning dependencies of target abi_check
[ 0%] Built target abi_check
Scanning dependencies of target zlib
[ 0%] Building C object zlib/CMakeFiles/zlib.dir/adler32.c.o
[ 0%] Building C object zlib/CMakeFiles/zlib.dir/compress.c.o
[ 0%] Building C object zlib/CMakeFiles/zlib.dir/crc32.c.o
[ 0%] Building C object zlib/CMakeFiles/zlib.dir/deflate.c.o
[ 0%] Building C object zlib/CMakeFiles/zlib.dir/gzio.c.o
[ 0%] Building C object zlib/CMakeFiles/zlib.dir/infback.c.o
[ 0%] Building C object zlib/CMakeFiles/zlib.dir/inffast.c.o
[ 0%] Building C object zlib/CMakeFiles/zlib.dir/inflate.c.o
[ 0%] Building C object zlib/CMakeFiles/zlib.dir/inftrees.c.o
[ 0%] Building C object zlib/CmakeFiles/zlib.dir/trees.c.o
.
.
.
-- Up-to-date: /usr/local/mysql/mysql-test/mtr
-- Up-to-date: /usr/local/mysql/mysql-test/mysql-test-run
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Up-to-date: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/Base.pm
-- Installing: /usr/local/mysql/support-files/mysqld_multi.server
-- Installing: /usr/local/mysql/support-files/mysql-log-rotate
-- Installing: /usr/local/mysql/support-files/magic
-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server

 

All the MySQL files will be located under /usr/local/mysql directory where you can find bin directory for MySQL daemon files. Now create my.cnf file on MySQL installed path.

[root@linuxhelp mysql-5.7.20]# cd /usr/local/mysql/
[root@linuxhelp mysql]# vim my.cnf


[client]
port=3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
port=3306
socket=/usr/local/mysql/mysql.sock

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/mysqld.pid

Once it is done, create a user for MySQL with no login shell as follows.

[root@linuxhelp mysql]# useradd mysql -s /sbin/nologin

And then, change ownership for mysql directory by making use of the following command.

[root@linuxhelp mysql]# chown -R mysql.mysql /usr/local/mysql/

And after that, you should initialize mysqld daemon, and for that make sure you run the following command.

[root@linuxhelp mysql]# bin/mysqld --initialize --user=mysql
2017-11-13T09:41:23.751963Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-11-13T09:41:26.623584Z 0 [Warning] InnoDB: New log files created, LSN=45790
2017-11-13T09:41:26.882632Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-11-13T09:41:27.014087Z 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: d1c4626e-c856-11e7-a67a-000c292f80f2.
2017-11-13T09:41:27.017861Z 0 [Warning] Gtid table is not ready to be used. Table ' mysql.gtid_executed'  cannot be opened.
2017-11-13T09:41:27.022076Z 1 [Note] A temporary password is generated for root@localhost: qSkPXuVgy3%w

A temporary password is generated for MySQL root user, copy it as you' ll need it when you log in for the first time in the MySQL database.

 

Now start MySQL daemon using the following command. The daemon is started from the directory in which MySQL is installed(/usr/local/mysql).

[root@linuxhelp mysql]# bin/mysqld_safe --user=mysql & 
[1] 22616
[root@linuxhelp mysql]# 2017-11-13T09:43:38.765561Z mysqld_safe Logging to ' /var/log/mysqld.log' .
2017-11-13T09:43:38.883409Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

 

You shall login to your MySQL database with the help of the following command and enter the copied temporary root password in there.

[root@linuxhelp mysql]# bin/mysql -u root -p -S /usr/local/mysql/mysql.sock
Enter password:
Welcome to the MySQL monitor. Commands end with   or g.
Your MySQL connection id is 3
Server version: 5.7.20

Copyright (c) 2000, 2017, 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.

 

 

Now we can change root password using below command inside mysql shell prompt

mysql>  ALTER USER ' root' @' localhost'  IDENTIFIED BY ' root'  
Query OK, 0 rows affected (0.00 sec)

mysql>  exit
Bye

 

You can now re-login to MySQL database with your new password. Once you are done with that, you need to configure MySQL service daemon, hence use the following command to copy init script for mysqld daemon to /etc/init.d/ directory.

[root@linuxhelp mysql]# cp /root/mysql-5.7.20/support-files/mysql.server /etc/init.d/mysqld
[root@linuxhelp mysql]# chmod +x /etc/init.d/mysqld

 

Since the MySQL service is already running, you need to kill it before you use the service command, and that can be done by using the following command.

[root@linuxhelp mysql]# ps aux | grep mysql
root 22616 0.0 0.1 106220 1580 pts/0 S 04:43 0:00 /bin/sh bin/mysqld_safe --user=mysql
mysql 22816 0.1 19.3 1173384 194532 pts/0 Sl 04:43 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/usr/local/mysql/mysqld.pid --socket=/usr/local/mysql/mysql.sock --port=3306
root 22920 0.0 0.0 103328 888 pts/0 S+ 04:51 0:00 grep mysql
[root@linuxhelp mysql]# kill -9 22616
[root@linuxhelp mysql]# kill -9 22816
[1]+ Killed bin/mysqld_safe &ndash user=mysql

 

Now start MySQL daemon with service command as follows.

[root@linuxhelp mysql]# service mysqld start
Starting MySQL.. [ OK ]
[root@linuxhelp mysql]# service mysqld status
MySQL running (23151)

With this, the installation of MySQL  from its source code comes to an end. 

 

 

Tags:
matthew
Author: 

Comments ( 6 )

gogreen
Hi thank you for your post.
After I execute 'make' command successfully, it doesn't make 'usr/local/mysql' folder.
Could you help me?
itsaVlad
hello thank you for the tutorial and reading through the mysql.com page documentation for us. I ran into a problem with 5.7.14 in which make install fails to copy mysqldmin to /usr/local/mysql as root. the output actually saids cmake Error at client/cmake_install.cmake:186(FILE): file INSTALL connot copy file. .. I haven't been able to find anything on that
linuxhelp
Often this is because of permissions, did you try?
sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start
plaza
after cmake , there is no mysql directory formed under /usr/local .tried many times .pls help
linuxhelp
Thanks We appreciate your Feedback
view More
Add a comment

Frequently asked questions ( 5 )

Q

Does MySQL Workbench support the TLSv1.2 protocol?

A

Because TLSv1.2 requires OpenSSL, support for this protocol is available for MySQL Workbench Commercial Editions, and not for the Community Edition (which is compiled using yaSSL and supports

Q

How can I view my MySQL Workbench query history?

A

n bottom pane, change Action Output to History and then choose the appropriate date. The SQL statement history is stored as plain text on your system under your user's MySQL Workbench config

Q

What do the column flag acronyms (PK, NN, UQ, BIN, UN, ZF, AI, G) in the MySQL Workbench Table Editor mean?

A

Checking these boxes will alter the table column by assigning the checked constraints to the designated columns. Hover over an acronym to view a description, and see the Section 8.1.10.2, “C

Q

How to update MySQL Workbench from terminal?

A

If already exist means, then just run the below command to update it.



apt-get update

Q

How do I copy my saved MySQL connections in MySql Workbench to a different computer?

A

Copy my saved MySQL connections in MySql Workbench to a different computer Go to the main navigation menu, choose Tools, Configuration, and then Backup Connections to create a Zip file with your configured MySQL connections. Next, load this file into your new Workbench.

Related Tutorials in How to install MySQL from source on CentOS 6

Related Tutorials in How to install MySQL from source on CentOS 6

How To Install AnyDesk on Centos 7
How To Install AnyDesk on Centos 7
Apr 2, 2018
How to install Tiki Wiki CMS Groupware on CentOS 7
How to install Tiki Wiki CMS Groupware on CentOS 7
May 31, 2018
How to install PHP ImageMagick on CentOS 7
How to install PHP ImageMagick on CentOS 7
Nov 4, 2017
How to Upgrade and Downgrade the PHP Versions on CentOS 7.6
How to Upgrade and Downgrade the PHP Versions on CentOS 7.6
Jun 4, 2019
How to install Apache from Source Code on CentOS 7
How to install Apache from Source Code on CentOS 7
Oct 21, 2017
How to enable or disable repositories in CentOS
How to enable or disable repositories in CentOS
Mar 28, 2018
How to install AWStats on CentOS 7
How to install AWStats on CentOS 7
Dec 8, 2017
How to install Apache JMeter in CentOS 7
How to install Apache JMeter in CentOS 7
Mar 24, 2017

Related Forums in How to install MySQL from source on CentOS 6

Related Forums in How to install MySQL from source on CentOS 6

CentOS
connor class=
How To Completely Remove Apache package On CentOS 7.6
May 14, 2019
CentOS
ceriaimmaculate class=
setfacl : command not found
Jan 3, 2018
MySQL
rolando class=
Mysqldump: Couldn't execute 'SHOW VARIABLES LIKE 'gtid\_mode'': Table 'performance_schema.session_variables' doesn't exist (1146)
May 9, 2019
MySQL
isaiah class=
ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists
Feb 8, 2017
CentOS
mason class=
Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)
Nov 20, 2018
CentOS
landon class=
Command to find SNMP Version
May 28, 2018
CentOS
arjitharon class=
cannot start minio service help
Mar 10, 2018
Apache tomcat
AadrikaAnshu class=
Cannot find ./catalina.sh The file is absent or does not have execute permission This file is needed to run this program
Jun 17, 2019

Related News in How to install MySQL from source on CentOS 6

Related News in How to install MySQL from source on CentOS 6

SQL sequel - worm rear its head after a decade
SQL sequel - worm rear its head after a decade
Feb 8, 2017
Nine Popular WordPress plugins affected with critical SQL injection vulnerabilities
Nine Popular WordPress plugins affected with critical SQL injection vulnerabilities
Sep 7, 2019
GandCrab Ransomware Infection Made by Scanning MySQL Databases
GandCrab Ransomware Infection Made by Scanning MySQL Databases
May 28, 2019
Back To Top!
Rank
User
Points

Top Contributers

userNamenaveelansari
135850

Top Contributers

userNameayanbhatti
92510

Top Contributers

userNamehamzaahmed
32150

Top Contributers

1
userNamelinuxhelp
31040

Top Contributers

userNamemuhammadali
24500
Can you help Gibbson ?
How do i run both nginx and apache in same instance on centos

Hi...,

my server is based centos operating system and my webserver is already running on Apache.... i need to run both apache and nginx on same instance ... please help me to implement this concept...

Networking
  • Routing
  • trunk
  • Netmask
  • Packet Capture
  • domain
  • HTTP Proxy
Server Setup
  • NFS
  • KVM
  • Memory
  • Sendmail
  • WebDAV
  • LXC
Shell Commands
  • Cloud commander
  • Command line archive tools
  • last command
  • Shell
  • terminal
  • Throttle
Desktop Application
  • Linux app
  • Pithos
  • Retrospect
  • Scribe
  • TortoiseHg
  • 4Images
Monitoring Tool
  • Monit
  • Apache Server Monitoring
  • EtherApe 
  • Arpwatch Tool
  • Auditd
  • Barman
Web Application
  • Nutch
  • Amazon VPC
  • FarmWarDeployer
  • Rukovoditel
  • Mirror site
  • Chef
Contact Us | Terms of Use| Privacy Policy| Disclaimer
© 2025 LinuxHelp.com All rights reserved. Linux™ is the registered trademark of Linus Torvalds. This site is not affiliated with linus torvalds in any way.