Compiling and Installing MySQL from Source on Linux

Prerequisites

This process assumes you have downloaded mysql-5.5.10.tar.gz and cmake-2.8.4.tar.gz source packages.

Install CMake

MySQL 5.5+ requires CMake for compilation.

tar -zxvf cmake-2.8.4.tar.gz
cd cmake-2.8.4
./configure
make
sudo make install

Create Installation and Data Directories

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

Setup MySQL User and Group

sudo groupadd mysql
sudo useradd -r -g mysql mysql

Compile and Install MySQL

tar -zxvf mysql-5.5.10.tar.gz
cd mysql-5.5.10
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1

make
sudo make install

Configuration Parameters:

  • -DCMAKE_INSTALL_PREFIX: Installation directory
  • -DMYSQL_DATADIR: Database storage location
  • -DDEFAULT_CHARSET: Default character set
  • -DDEFAULT_COLLATION: Default collation rule
  • -DEXTRA_CHARSETS: Additional character sets
  • -DENABLED_LOCAL_INFILE: Enable local file import

Important: To recompile, remove existing build artifacts:

make clean
rm -f CMakeCache.txt
sudo rm -rf /etc/my.cnf

Post-Installation Configuration

Set Directory Permissions

cd /usr/local/mysql
sudo chown -R root:mysql .
sudo chown -R mysql:mysql data

Configure MySQL Service

sudo cp support-files/my-medium.cnf /etc/my.cnf

Initialize System Databases

cd /usr/local/mysql
sudo scripts/mysql_install_db --user=mysql

Update Environment Variables

Add to /root/.bash_profile:

export PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib

Apply changes:

source /root/.bash_profile

Start MySQL Service

Manual Method

cd /usr/local/mysql
sudo ./bin/mysqld_safe --user=mysql &

Startup logs are stored in /usr/local/mysql/data/localhost.err

To stop MySQL:

mysqladmin -u root -p shutdown

Service Management Method

sudo service mysql.server start
sudo service mysql.server stop
sudo service mysql.server restart

If service commands fail, register MySQL manually:

sudo cp support-files/mysql.server /etc/init.d/mysql

Then use:

sudo service mysql start

Secure Root Account and Enable Remote Access

mysql -u root mysql

USE mysql;
DESCRIBE user;

-- Grant remote access privileges
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'new_password';

-- Update root password
UPDATE user SET Password = PASSWORD('secure_password') WHERE User = 'root';

-- Verify changes
SELECT Host, User, Password FROM user WHERE User = 'root';

FLUSH PRIVILEGES;
EXIT;

Reconnect with new credentials:

mysql -u root -p

If remote connections still fail, disable firewall:

sudo /etc/rc.d/init.d/iptables stop

For connection error 1130, execute:

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

Tags: MySQL Linux installation compilation database

Posted on Thu, 29 Oct 2026 16:40:58 +0000 by UpcomingPhpDev