MySQL

MySQL is a Relational Database Management System (RDBMS) that stores data in tables. Each table has rows (records) and columns (fields) that define the structure.

  • MySQL works on a Client-Server Model, meaning there's a MySQL Server where the data is stored, and Clients (like applications or users) connect to this server to retrieve or modify data.

  • MySQL listens on port 3306 by default.

  • MySQL is widely used in web applications like WordPress, Linux, Apache, PHP (LAMP) or Nginx (LEMP)

MariaDB & MySQL:

MariaDB is a fork of MySQL, created after Oracle acquired MySQL. It remains widely used due to its compatibility and additional enhancements.


Footprinting the Service

sudo nmap 10.129.14.128 -sV -sC -p3306 --script mysql*

3306/tcp open  mysql
| mysql-brute:
|   Accounts:
|     root:<empty> - Valid credentials
|_  root account has empty password
# show root account is without password

to connect on database

1st way → if account without password

mysql -u root -h 10.129.14.128

2nd way → have password

mysql -u root -p0xpass -h 10.129.14.128

some command we can use it after we connect on database

show databases;
use mysql;
show tables;

Important MySQL Databases & Tables

  • mysql → Stores system information, users, passwords, and privileges.

  • information_schema → Metadata about tables, columns, indexes, etc.

  • performance_schema → Logs and performance metrics.

  • sys → Useful reports for performance monitoring.

Securing a MySQL Server

1️⃣ Change the Default MySQL Port (3306)

Edit MySQL config file:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

2️⃣ Disable Remote Root Login

UPDATE mysql.user SET Host='localhost' WHERE User='root';
FLUSH PRIVILEGES;

3️⃣ Set a Strong Password for Root

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Str0ngP@ssw0rd!';

4️⃣ Block External Access to MySQL Port

sudo ufw deny 3306/tcp

5️⃣ Run MySQL Secure Installation Script

mysql_secure_installation

Last updated