Install MySQL 5.7 on CentOS/RHEL 7.3/6.8/5.11


MySQL is a relational database management system (RDBMS) that runs as a server providing multi-user access to a number of databases. This is guide, howto install or upgrade MySQL Community Server latest version 5.7 (5.7.17) on CentOS 7.3/6.8/5.11 and Red Hat (RHEL) 7.3/6.8/5.11. This guide works of course with Oracle Linux and Scientific Linux too and MySQL 5.6/5.5 installation is possible too.
Note: If you are upgrading MySQL (from earlier version), then make sure that you backup (dump and copy) your database and configs. And remember run mysql_upgrade command.
1. Install MySQL Database 5.7.17 on Fedora 25/24/23, CentOS 7.3/6.8/5.11, Red Hat (RHEL)7.3/6.8/5.111. Change root user

su -
## OR ##
sudo su -


2. Install MySQL YUM repository.

# CentOS 7 and Red Hat (RHEL) 7 #
# yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm 

# CentOS 6 and Red Hat (RHEL) 6 #
# yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm 

# CentOS 5 and Red Hat (RHEL) 5 #
# yum localinstall https://dev.mysql.com/get/mysql57-community-release-el5-7.noarch.rpm


3. Update or Install MySQL 5.7.17
# yum install mysql-community-server


4. Start MySQL server and auto start MySQL on boot

CentOS 7.3 and Red Hat (RHEL) 7.3
# systemctl start mysqld.service 
# systemctl enable mysqld.service

CentOS 6.8/5.11 and Red Hat (RHEL) 6.8/5.11
# /etc/init.d/mysql start 
# chkconfig --levels 235 mysqld on

5. Get Your Generated Random root Password
# grep 'A temporary password is generated for root@localhost' /var/log/mysqld.log |tail -1


Example Output:
# 2015-11-20T21:11:44.229891Z 1 [Note] A temporary password is generated for root@localhost: -et)QoL4MLid


And root password is: -et)QoL4MLid


6. MySQL Secure Installation

  • Change root password
  • Remove anonymous users
  • Disallow root login remotely
  • Remove test database and access to it
  • Reload privilege tables

Start MySQL Secure Installation with following command

# /usr/bin/mysql_secure_installation

Output:

Securing the MySQL server deployment.

Enter password for user root:
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y

New password:

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Note: If you don’t want some reason, do a “MySQL Secure Installation” then at least it’s very important to change the root user’s password

# mysqladmin -u root password [your_password_here]

## Example ##
# mysqladmin -u root password myownsecrectpass

7. Connect to MySQL database (localhost) with password

# mysql -u root -p

8. Create Database, Create MySQL User and Enable Remote Connections to MySQL Database

This example uses following parameters:

DB_NAME = testdb
USER_NAME = testdb_user
REMOTE_IP = 10.0.15.25
PASSWORD = password123
PERMISSIONS = ALL
SQL

## CREATE DATABASE ##
mysql> CREATE DATABASE testdb;

## CREATE USER ##
mysql> CREATE USER 'testdb_user'@'10.0.15.25' IDENTIFIED BY 'password123';

## GRANT PERMISSIONS ##
mysql> GRANT ALL ON testdb.* TO 'testdb_user'@'10.0.15.25';

##  FLUSH PRIVILEGES, Tell the server to reload the grant tables  ##
mysql> FLUSH PRIVILEGES;

Enable Remote Connection to MySQL Server –> Open MySQL Port (3306) on Iptables Firewall (as root user again)

CentOS/Red Hat (RHEL) 7.3
# firewall-cmd --permanent --zone=public --add-service=mysql

## OR ##

# firewall-cmd --permanent --zone=public --add --port=3306/tcp

Restart firewalld.service

# systemctl restart firewalld.service


CentOS/Red Hat (RHEL) 6.8/5.11
# vi /etc/sysconfig/iptables file:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

# service iptables restart

Test remote connection
# mysql -h 10.0.15.25 -u myusername -p

Comments

Popular posts from this blog

Install and configure Jenkins on Ubuntu 16.04

How to measure disk performance with fio and IOPing

How to generate and check strong passwords in Linux