Home » Articles » Mysql » Here
This article gives examples of installing MySQL on both Oracle Linux 6 (RHEL6/CentOS6) and Oracle Linux 7 (RHEL7/CentOS7). It also includes examples of MySQL 5.6 and 5.7 installations. Pick the combination that you need.
- Installation
- Start the MySQL Service (mysqld)
- Basic Configuration
- Secure the Installation
- Create Database
- SELinux
Related articles.
- Linux : Using a Yum Repository to Install MySQL
Installation
The Secure Deployment Guide suggests installing using the Generic Binary distribution, not the Yum repositories as we do here. It's worth checking out that guide and making a decision for yourself what works best for you.
If you want to run the most recent versions, you can use the MySQL Yum repository available here. Download and install the repository package.
# # Example from installing 5.6 on Oracle Linux 6. # rpm -Uvh mysql-community-release-el6-4.noarch.rpm # # Example from installing 5.7 on Oracle Linux 7. # rpm -Uvh mysql57-community-release-el7-7.noarch.rpm # # Example from installing 8 on Oracle Linux 7. # rpm -Uvh mysql80-community-release-el8-3.noarch.rpm # # Example from installing 8 on Oracle Linux 8. # rpm -Uvh mysql80-community-release-el8-3.noarch.rpm # # Example from installing 8 on Oracle Linux 9. # rpm -Uvh mysql80-community-release-el9-1.noarch.rpmWith the repository in place, you can install the latest version using the same command shown previously.
# # Example from installing 5.6 on Oracle Linux 6. # yum install -y mysql mysql-server # # Example from installing 5.7 on Oracle Linux 7. # yum install -y mysql-community-server # # Example from installing 8 on Oracle Linux 8 or 9. # dnf module disable mysql # dnf install -y mysql-community-serverStart the MySQL Service (mysqld)
Make sure the mysqld service is set to start on reboot and start the service.
# # Oracle Linux 6. # chkconfig mysqld on # service mysqld start # # Oracle Linux 7, 8 and 9. # systemctl enable mysqld # systemctl start mysqldBasic Configuration
Make sure SELinux is running in permissive mode, so you can change the locations of the MySQL files.
Make the setting permanent, by editing the "/etc/selinux/config" file, setting the following value.
SELINUX=permissiveCreate directories to hold data and binary logs.
# mkdir -p /u01/data # mkdir -p /u01/log_bin # mkdir -p /u01/tmpdir # chown -R mysql:mysql /u01 # chmod -R 755 /u01Stop the mysqld service.
# # Oracle Linux 6 # service mysqld stop # # Oracle Linux 7, 8 and 9 # systemctl stop mysqldEdit the "/etc/my.cnf" file, setting the following values in the "[mysqld]" section. Be sure to reflect any path changes you require in these settings.
user=mysql log_bin=/u01/log_bin/myDB datadir=/u01/data tmpdir=/u01/tmpdirStart the mysqld service.
# # Oracle Linux 6 # service mysqld start # # Oracle Linux 7, 8 and 9 # systemctl start mysqldSecure the Installation
As suggested by the startup output, run the "/usr/bin/mysql_secure_installation" script to secure the installation.
# /usr/bin/mysql_secure_installationThe process is a little different depending on the version you are using. For MySQL 5.6 hit return when prompted for the root password and pick all the default options, specifying the new root password along the way.
If you are securing MySQL 5.7 onward, there is a random root password defined by default. You can see what it is by issuing the following command. If there are multiple lines, assume it is the last.
Once you run the "/usr/bin/mysql_secure_installation" script, you will be asked to supply the root password. Use the password displayed by the previous command. In this version, the default answer to every question is "N", so you will have to explicitly answer "Y/y" for every prompt.
You are now ready to start using MySQL.
There are additional hardening steps you should consider, as described here.
Create Database
The first thing you will probably want to do is create a database. First you must connect to MySQL.
$ mysql --user=root --password Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 Server version: 8.0.30 MySQL Community Server - GPL Copyright (c) 2000, 2022, Oracle and/or its affiliates. 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>Create a new database using the following command.
mysql> create database mydatabase; Query OK, 1 row affected (0.01 sec) mysql>You can see the current databases using the following command.
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mydatabase | | mysql | +--------------------+ 3 rows in set (0.00 sec) mysql>To switch between databases using the following command.
mysql> use mydatabase; Database changed mysql>You can make new connections directly to the database as follows.
SELinux
If you are using SELinux in "enforcing" mode on the server, moving the datadir and log_bin directories can cause SELinux to complain. You will either need to set it to permissive, explained here, or put the correct policies in place.
Policies already in place due to default installation.
# semanage port -a -t mysqld_port_t -p tcp 3306 # semanage fcontext -a -t mysqld_etc_t "/etc/my.cnf" # semanage fcontext -a -t mysqld_log_t "/etc/mysqld.log"The following policies will need to be applied if you've altered the datadir and log_bin directories.
# semanage fcontext -a -t mysqld_db_t "/u01/data(/.*)?" # restorecon -Rv /u01/data # semanage fcontext -a -t mysqld_db_t "/u01/log_bin(/.*)?" # restorecon -Rv /u01/log_binFor more information see:
- Linux : Using a Yum Repository to Install MySQL
- MySQL Documentation: MySQL Reference Manuals
- How to Run MySQL as a Normal User
- Secure Deployment Guide
Hope this helps. Regards Tim...
Back to the Top.