Fading Coder

One Final Commit for the Last Sprint

Home > Tech > Content

Installing MySQL 8.0 Offline on Rocky Linux 9

Tech May 14 1

Prerequisites and Package Acquisition

Before beginning the installation, ensure you have downloaded the MySQL 8.0 RPM bundle for Rocky Linux 9 from the official MySQL website. The file will typically be named something like mysql-8.0.xx.rpm-bundle.tar. Transfer this archive to your target Rocky Linux 9 server.

Extracting and Installing the RPM Packages

Once the archive is on the server, extract its contents and install the necesary RPM packages in the correct sequence. The installation process relies on the DNF package manager.

# Extract the downloaded archive
tar -xvf mysql-8.0.xx.rpm-bundle.tar

# Install MySQL server and its dependencies
dnf -y localinstall mysql-community-common-8.0.xx-1.el9.x86_64.rpm
dnf -y localinstall mysql-community-libs-8.0.xx-1.el9.x86_64.rpm
dnf -y localinstall mysql-community-client-8.0.xx-1.el9.x86_64.rpm
dnf -y localinstall mysql-community-icu-data-files-8.0.xx-1.el9.x86_64.rpm
dnf -y localinstall mysql-community-server-8.0.xx-1.el9.x86_64.rpm

Configuring MySQL Server

After installation, it's crucial to configure the MySQL server settings. The primary configuration file is /etc/my.cnf. Below is a sample configuration that includes essential settings for performance and character encoding.

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set = utf8mb4

[mysql]
prompt="MySQL [\d]> "
no-auto-rehash

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
default_authentication_plugin = mysql_native_password

datadir = /var/lib/mysql
pid-file = /var/lib/mysql/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1

init-connect = 'SET NAMES utf8mb4'
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci

skip-name-resolve
back_log = 300

max_connections = 2000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 1024
max_allowed_packet = 256M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 128M

read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 256M

thread_cache_size = 64

log_bin = mysql-bin
binlog_format = row
binlog_expire_logs_seconds = 604800

log_error = /var/lib/mysql/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /var/lib/mysql/mysql-slow.log

performance_schema = 0
explicit_defaults_for_timestamp

lower_case_table_names = 1

skip-external-locking

default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 512M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120

bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 64M
myisam_max_sort_file_size = 10G

interactive_timeout = 28800
wait_timeout = 28800

binlog_rows_query_log_events = 1
log_bin_trust_function_creators = 1
log_timestamps = SYSTEM

sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
innodb_strict_mode = 0

[mysqldump]
quick
max_allowed_packet = 256M

Disabling Initial Password Generation

To allow the server to start without generating a random root password, you need to modify the initialization script. This step ensures the server starts with a empty root password, which you can then set manually.

# Modify the systemd pre-initialization script to use --initialize-insecure
sed -i 's/--initialize /--initialize-insecure /' /usr/bin/mysqld_pre_systemd

Starting the MySQL Service

Finally, enable and start the MySQL service to complete the installation. The server will now be running and ready for initial configuration.

# Enable and start the MySQL service
systemctl enable --now mysqld

Tags: Rocky Linux

Related Articles

Understanding Strong and Weak References in Java

Strong References Strong reference are the most prevalent type of object referencing in Java. When an object has a strong reference pointing to it, the garbage collector will not reclaim its memory. F...

Comprehensive Guide to SSTI Explained with Payload Bypass Techniques

Introduction Server-Side Template Injection (SSTI) is a vulnerability in web applications where user input is improper handled within the template engine and executed on the server. This exploit can r...

SBUS Signal Analysis and Communication Implementation Using STM32 with Fus Remote Controller

Overview In a recent project, I utilized the SBUS protocol with the Fus remote controller to control a vehicle's basic operations, including movement, lights, and mode switching. This article is aimed...

Leave a Comment

Anonymous

◎Feel free to join the discussion and share your thoughts.