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;