Installing MySQL 8 on Linux

From Server rental store
Jump to navigation Jump to search
🖥️ Need a Server? Compare VPS & GPU hosting deals
PowerVPS → GPU Cloud →
⭐ Recommended KuCoin 60% Revenue Share
Register Now →
    • Installing MySQL 8 on Linux: A Comprehensive Guide**

Are you looking to set up a robust database for your web applications on a Linux server? Installing MySQL 8 provides a powerful and widely-used relational database management system. This guide will walk you through the installation, essential security hardening, and basic performance tuning for MySQL 8 on a Linux environment. For optimal performance and control, consider a dedicated server from [PowerVPS](https://powervps.net/?from=32), offering full root access to your system.

Prerequisites

Before you begin, ensure you have the following:

  • A Linux server (e.g., Ubuntu, Debian, CentOS, Fedora). This guide uses commands common to Debian/Ubuntu-based systems.
  • Root or sudo privileges on your server.
  • Basic familiarity with the Linux command line.
  • Internet connectivity to download packages.

Step 1: Updating Your System Package List

It's crucial to start with an up-to-date system. This ensures you're installing the latest available versions of software and security patches.

sudo apt update
sudo apt upgrade -y

This command refreshes the list of available packages and then installs any upgrades for your currently installed software.

Step 2: Installing MySQL 8

The easiest way to install MySQL 8 is through your distribution's package manager.

sudo apt install mysql-server -y

This command downloads and installs the MySQL server package and its dependencies. Once installed, the MySQL service should start automatically. You can verify its status with:

sudo systemctl status mysql

You should see output indicating the service is "active (running)".

Step 3: Securing Your MySQL Installation

Newly installed MySQL instances are not secure by default. Running the security script is a vital step to protect your database.

sudo mysql_secure_installation

This script will guide you through several important security configurations:

  • **VALIDATE PASSWORD component:** This allows you to set password strength policies for MySQL users. It's recommended to enable this.
  • **Change the root password:** You will be prompted to set a strong password for the MySQL `root` user. Do not skip this step.
  • **Remove anonymous users:** Anonymous users can access your MySQL server without a password, posing a significant security risk.
  • **Disallow root login remotely:** This prevents the MySQL `root` user from connecting from outside the local host, enhancing security.
  • **Remove test database and access to it:** The `test` database is created by default and is not needed for production environments.
  • **Reload privilege tables:** This ensures all changes take effect immediately.

For each prompt, carefully consider the implications and choose the option that best suits your security needs.

Step 4: Connecting to MySQL

After securing your installation, you can connect to the MySQL server using the `root` user and the password you just set.

sudo mysql -u root -p

You will be prompted to enter the MySQL `root` password. Once entered correctly, you'll see the MySQL command-line prompt, which looks like this:

mysql>

To exit the MySQL prompt, type:

exit

Step 5: Creating a New MySQL User and Database

It's best practice to avoid using the MySQL `root` user for your applications. Instead, create dedicated users with specific privileges for each database.

First, log in as the MySQL root user:

sudo mysql -u root -p

Then, create a new database:

CREATE DATABASE my_application_db;

Next, create a new user and grant them privileges on that database. Replace `your_username` and `your_password` with your desired credentials.

CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON my_application_db.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;

This creates a user that can only connect from the local machine (`localhost`) and has full control over `my_application_db`.

Step 6: Basic Performance Tuning

MySQL performance can be significantly impacted by its configuration. The primary configuration file is typically located at `/etc/mysql/mysql.conf.d/mysqld.cnf` or `/etc/my.cnf`.

A crucial setting is `innodb_buffer_pool_size`. This is the memory area where InnoDB (the default storage engine) caches table data and indexes. A larger buffer pool can improve read performance. A common recommendation is to set it to 50-70% of your server's available RAM, but **be cautious not to allocate too much**, as it can lead to system instability.

For example, on a server with 4GB of RAM, you might set:

innodb_buffer_pool_size = 2G

After making changes to the configuration file, you must restart the MySQL service for them to take effect:

sudo systemctl restart mysql
    • Warning:** Incorrectly configuring MySQL can lead to performance degradation or even prevent the server from starting. Always back up your configuration file before making changes.

Troubleshooting

  • **MySQL service not starting:** Check the MySQL error logs, usually located at `/var/log/mysql/error.log`. Common causes include syntax errors in the configuration file or insufficient disk space.
  • **Cannot connect to MySQL:** Ensure the MySQL service is running. If connecting remotely, verify that your firewall allows connections on port 3306 and that the user is configured to allow remote access (e.g., `'your_username'@'%'`).
  • **"Access denied" error:** Double-check the username and password you are using. Ensure the user has been granted the necessary privileges for the database you are trying to access.

Related Articles