Sign In
Sign In

How to Find and Delete Duplicate Rows in MySQL with GROUP BY and HAVING Clauses

How to Find and Delete Duplicate Rows in MySQL with GROUP BY and HAVING Clauses
Shahid Ali
Technical writer
MySQL
19.11.2024
Reading time: 8 min

Duplicate entries may inadvertently accumulate in databases, which are crucial for storing vast amounts of structured data. These duplicates could show up for a number of reasons, including system errors, data migration mistakes, or repeated user submissions. A database with duplicate entries may experience irregularities, sluggish performance, and erroneous reporting. Using the GROUP BY and HAVING clauses, as well as a different strategy that makes use of temporary tables, we will discuss two efficient methods for locating and removing duplicate rows in MySQL. With these techniques, you can be sure that your data will always be accurate, clean, and well-organized.

Database duplication in MySQL tables can clog your data, resulting in inaccurate analytics and needless storage. Locating and eliminating them is a crucial database upkeep task. This is a detailed guide on how to identify and remove duplicate rows.

If two or more columns in a row have identical values, it is called a duplicate row. For instance, rows that have the same values in both the userName and userEmail columns of a userDetails table may be considered duplicates.

Benefits of Removing Duplicate Data

The advantage of eliminating duplicate data is that duplicate entries can slow down query performance, take up extra storage space, and produce misleading results in reports and analytics. The accuracy and speed of data processing are improved by keeping databases clean, which is particularly crucial for databases that are used for critical applications or are expanding.

Requirements

Prior to starting, make sure you have access to a MySQL database or have MySQL installed on your computer. The fundamentals of general database concepts and SQL queries. One can execute SQL commands by having access to a MySQL client or command-line interface.

To gain practical experience, you can create a sample database and table that contains duplicate records so that you can test and comprehend the techniques for eliminating them.

Creating a Test Database

Launch the MySQL command-line tool to create a Test Database.

mysql -u your_username -p

Create a new database called test_dev_db after entering your MySQL credentials.

CREATE DATABASE test_dev_db;

Then, switch to this newly created database:.

USE test_dev_db;

Add several rows, including duplicates, to the userDetails table after creating it with the CREATE TABLE query and INSERT query below.

CREATE TABLE userDetails (
userId INT AUTO_INCREMENT PRIMARY KEY,
userName VARCHAR(100),
userEmail VARCHAR(100)
);
INSERT INTO userDetails (userName, userEmail) VALUES
(‘Alisha’, ‘[email protected]’),
(‘Bobita, ‘[email protected]’),
(‘Alisha’, ‘[email protected]’),
(‘Alisha’, ‘[email protected]’);

Using GROUP BY and HAVING to Locate Duplicates

Grouping rows according to duplicate-defining columns and using HAVING to filter groups with more than one record is the simplest method for finding duplicates.

Now that you have duplicate data, you can use SQL to determine which rows contain duplicate entries. MySQL's GROUP BY and HAVING clauses make this process easier by enabling you to count instances of each distinct value. An example of a table structure is the userDetails table, which contains the columns userId, userName, and userEmail. The GROUP BY clause is useful for counting occurrences and identifying duplicates because it groups records according to specified column values. The HAVING clause  allows duplicate entries in groups formed by GROUP BY to be found by combining groups based on specific criteria.

Table userDetails Structure

userId

userName

userEmail

1

Alisha 

[email protected]

2

Bobita 

[email protected]

3

Alisha 

[email protected]

4

Alisha 

[email protected]

In the above table userDetails, records with identical userName and userEmail values are considered duplicates.

Finding Duplicates

Query for find the duplicate entries:

SELECT userName, userEmail, COUNT(*) as count
FROM userDetails
GROUP BY userName, userEmail
HAVING count > 1;

Rows are grouped by userName and userEmail in the aforementioned query, which also counts entries within the group and eliminates groups with a single entry (no duplicates).

Explanation:

  • SELECT userName, userEmail, COUNT(*) as count: Retrieves the count of each combination of username and userEmail, as well as their unique values.
  • GROUP BY userName, userEmail: Records are grouped by username and user email using the GROUP BY userName, userEmail function
  • COUNT (*): Tallies the rows in each set.
  • HAVING occurrences > 1: Recurring entries are identified by displaying only groups with more than one record.

This query will return groups of duplicate records based on the selected columns.

userName

userEmail

count

Alisha

[email protected]

3

Eliminating Duplicate Rows

After finding duplicates, you may need to eliminate some records while keeping the unique ones. Joining the table to itself and removing rows with higher userId values is one effective method that preserves the lowest userId for every duplicate.

Use the SQL query to remove duplicate rows while keeping the lowest userId entry.

DELETE u1
FROM userDetails u1
JOIN userDetails u2
ON u1. userName = u2. userName
AND u1. userEmail = u2. userEmail
AND u1. userId > u2. userId ;

Explanation:

  • u1 & u2: Aliases for the userDetails table to ease a self-join.
  • ON u1. userName = u2. userName AND u1. userEmail = u2. userEmail: Matches rows with identical userName, userEmail.
  • AND u1. userId > u2. userId: Removes rows with higher userId values, keeping only the row with the smallest userId.

Because this action cannot be undone, it is advised that you backup your data before beginning the deletion procedure.

Confirming Duplicate Removal

To confirm that all duplicates have been removed, repeat the Step 1 identification query.

SELECT userName, userEmail, COUNT(*) as count
FROM userDetails
GROUP BY userName, userEmail
HAVING count > 1;

All duplicates have been successfully eliminated if this query yields no rows.

Benefits of Employing GROUP BY and HAVING

The GROUP BY and HAVING clauses serve as vital instruments for the aggregation of data and the filtration of grouped outcomes. These functionalities are especially useful for detecting and handling duplicate entries or for condensing extensive datasets. Below are the primary benefits of employing these clauses.

  • Efficient Identification of Duplicates
  • Data Aggregation and Summarization
  • Filtering Aggregated Results with Precision
  • Versatility Across Multiple Scenarios
  • Compatibility and Simplicity
  • Enhanced Query Readability
  • Support for Complex Aggregations

The GROUP BY and HAVING clauses serve as essential instruments for data aggregation, identifying duplicates, and filtering results. Their effectiveness, ease of use, and adaptability render them crucial for database management and data analysis activities, allowing users to derive insights and handle data proficiently across a variety of applications.

Identifying Duplicates Using a Temporary Table

When dealing with large datasets, it can be easier and more efficient to separate duplicates using a temporary table before deleting them.

Creating the Table

Make a temporary table to store duplicate groups according to predetermined standards (e.g. A. username, along with userEmail.

CREATE TEMPORARY TABLE temp_view_duplicates AS
SELECT username, userEmail, MIN (userId) AS minuid
FROM userDetails
GROUP BY username, userEmail,
HAVING COUNT(*) > 1;

Explanation:

  • CREATE TEMPORARY TABLE temp_view_duplicates AS: Creates a temporary table named temp_view_duplicates.
  • SELECT userName, userEmail, MIN(userId) AS minuid: Groups duplicates by userName and userEmail, keeping only the row with the smallest userId.
  • GROUP BY userName, userEmail: Groups rows by userName, userEmail.
  • HAVING COUNT(*) > 1: Filters only groups with more than one row, identifying duplicates.

This temporary table will now contain one representative row per duplicate group (the row with the smallest id).

Deleting Duplicates from the Main Table

Now that we have a list of unique rows with duplicates in the temp_view_duplicates table, we can use the temporary table to remove duplicates while keeping only the rows with the smallest userId.

Use the following DELETE command:

DELETE FROM userDetails
WHERE (username, userEmail) IN (
SELECT username, userEmail FROM temp_view_duplicates
) AND userId NOT IN (
SELECT minuid FROM temp_view_duplicates
);

Explanation:

  • WHERE (username, userEmail,) IN: Targets only duplicate groups identified in temp_view_duplicates.
  • AND userId NOT IN (SELECT minuid FROM temp_view_duplicates): Ensures that only duplicate rows (those with higher userId values) are deleted.

Verifying Results

To confirm that duplicates have been removed, query the userDetails table:

SELECT * FROM userDetails;

Only unique rows should remain.

Temporary tables (CREATE TEMPORARY TABLE) are automatically dropped when the session ends, so they don’t persist beyond the current session.

When making extensive deletions, think about utilizing a transaction to safely commit or undo changes as necessary.

Key Advantages of Using a Temporary Table

  • Lower Complexity: By isolating duplicates, the removal process is simpler and clearer.
  • Enhanced Efficiency: It's faster for large datasets, as it avoids repeated joins.
  • Improved Readability: Using a temporary table makes the process more modular and easier to understand.

Conclusion

Eliminating duplicate records is essential for maintaining a well-organized database, improving performance, and ensuring accurate reporting. This guide presented two approaches:

  • Direct Method with GROUP BY and HAVING Clauses: Ideal for small datasets, using self-joins to delete duplicates.
  • Temporary Table Approach: More efficient for larger datasets, leveraging temporary storage to streamline deletion.

Choose the method that best fits your data size and complexity to keep your database clean and efficient.

MySQL
19.11.2024
Reading time: 8 min

Similar

MySQL

Installing MariaDB on Ubuntu 22.04

MariaDB is an open-source relational database management system, which has made it a popular alternative to MySQL. It is often included in LAMP stacks (which consist of Linux, Apache, MySQL, and PHP, sometimes with Python and Perl compilers). This document provides a brief guide to setting up MariaDB. The setup involves three steps: updating the package index, installing the mariadb-server, and activating a security script restricting unauthorized access to the remote host.   The sequence of commands looks like this: sudo apt update sudo apt install mariadb-server sudo mysql_secure_installation For this tutorial, we will use a Hostman cloud server with Ubuntu 22.04 installed. Before diving into this guide, we recommend performing initial setup steps, such as creating a user account with sudo privileges and setting basic UFW firewall rules. Step 1: Installing MariaDB Repositories are regularly updated to include stable versions of utilities. Distributions, on the other hand, include outdated releases that were current at the time of the build, so they need to be updated to avoid compatibility issues. This procedure is executed with the following command: sudo apt update Now we can install the package we need: sudo apt install mariadb-server The installation proceeds without prompting for a password or making any other configuration changes. Using MariaDB in this form on the server is not advisable, as it will operate in an insecure mode. To rectify this situation, we will apply the mysql_secure_installation script that comes with the software. This script will restrict access to the server and eliminate unauthorized accounts. Step 2: Setting Up MariaDB The security script modifies the insecure options that are set by default. For instance, it creates test accounts and allows remote connections using the root account. This potentially poses a risk of hacking and unauthorized access to the information stored in the created database. To run the script, use the following command: sudo mysql_secure_installation This command will initiate a series of prompts that allow you to change the database's security parameters.  The first prompt relates to the root account, and the system will request the password for the active database. Press Enter. This indicates that there is currently no protection. Enter current password for root (enter for none): Switch to unix_socket authentication [Y/n] Enter n and press Enter Change the root password? [Y/n] Enter Y and press Enter. New password: Re-enter new password: Enter and re-enter the new root user password and press Enter. Answer Yes (Y) to all the following prompts. Remove anonymous users? [Y/n] Disallow root login remotely? [Y/n] Remove test database and access to it? [Y/n] Reload privilege tables now? [Y/n] The system will remove the test database and anonymous accounts, disable access through the root account, and load the updated rules.  The installation and configuration of the MariaDB package are complete, and you can now begin using it. Alternatively, you can proceed to an optional step to create an administrator account to enable password access. Step 3: Create an Administrator Account By default, on Ubuntu, MariaDB is installed using the unix_socket plugin, which means that password prompts do not apply. In most cases, this approach provides a high level of security. However, it also complicates administrative tasks, such as those done through phpMyAdmin. When starting or stopping the server or managing logs, the root account is used. That is why we did not change its data. However, during a package update, these settings may change on their own, so it's better to enable password authentication right away. As an example, we will create an account named admin and give it the same privileges as the root account. First, open the MariaDB command line: sudo mariadb Next, create the new user: GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; Replace admin and password with any preferred combinations.  After creating the account, flush the privileges while keeping the settings in the current session: FLUSH PRIVILEGES; Now you can close the shell: exit; Next, you should test MariaDB to ensure that the settings are correct. Step 4: Diagnostics When the MariaDB is installed from the official repository, it automatically configures the settings to ensure that the MariaDB module starts automatically. However, it's still a good practice to manually check its status: sudo systemctl status mariadb The output on the screen will look something like this: If the utility is not running, you will need to start it manually and also enable the service: sudo systemctl enable mariadb sudo systemctl start mariadb After forcibly starting the service, you can make a test connection to the database using mysqladmin. It allows you to interact with the database with administrative rights, execute commands, and change settings. Here’s an example of connecting and displaying the version number: sudo mysqladmin version The output on the screen will look like this: If access was configured using the administrator password, you can use the command: mysqladmin -u admin -p version The current version output confirms that the database is running and functioning, and that the user has access to its contents. Conclusions We have completed an overview of the installation and configuration for the MariaDB database management system. We discussed methods to protect against unauthorized access to the database and the creation of a new user who will have access to information equal to that of the root user.
07 November 2024 · 5 min to read
MySQL

How to Calculate Age From Date of Birth Using TIMESTAMPDIFF in MySQL

Calculating age from a date of birth (DOB) is a common requirement in many applications. In MySQL, this can be efficiently achieved using the TIMESTAMPDIFF function. This tutorial will guide you through the process of calculating age using TIMESTAMPDIFF, handling edge cases, and integrating the query into applications. Prerequisites Before diving into the tutorial, ensure you have: A MySQL database set up and accessible. Basic knowledge of SQL queries and MySQL functions. A table with a date of birth column to work with. Overview of TIMESTAMPDIFF Function The TIMESTAMPDIFF function calculates the difference between two dates based on the specified unit of time (e.g., years, months, days). For calculating age, you will use TIMESTAMPDIFF to find the difference in years between the current date and the date of birth. TIMESTAMPDIFF(unit, datetime1, datetime2) unit: The unit of time for the result (e.g., YEAR, MONTH, DAY). datetime1: The first date (usually the date of birth). datetime2: The second date (usually the current date). Writing the Basic TIMESTAMPDIFF Query To calculate age from a date of birth, use the following query: SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS ageFROM users; In this query: YEAR specifies that the result should be in years. date_of_birth is the column containing the date of birth. CURDATE() returns the current date. Handling Edge Cases When calculating age, consider the following edge cases: Leap Years Leap years do not significantly affect age calculations, as TIMESTAMPDIFF accurately accounts for these in its calculations. Birthdays on February 29 For individuals born on February 29, TIMESTAMPDIFF will handle their age calculation correctly, but be aware of potential issues if you use functions that do not recognize leap years. Different Date Formats Ensure that the date format stored in the database matches MySQL's date format (YYYY-MM-DD). If you encounter format issues, use the STR_TO_DATE function to convert strings to date formats. Practical Examples and Use Cases Here are some practical examples of using TIMESTAMPDIFF: Example 1: Calculate Age for a Specific User SELECT TIMESTAMPDIFF(YEAR, '1990-05-15', CURDATE()) AS age; This query calculates the age of someone born on May 15, 1990. Example 2: Age Calculation for All Users SELECT name, TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS ageFROM users; This query retrieves names and ages of all users from the users table. Integrating the Query in Applications To integrate this query into an application: In a PHP Application: $query = "SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS age FROM users";$result = mysqli_query($conn, $query); In a Python Application:  query = "SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS age FROM users"  cursor.execute(query) Ensure that your application handles database connections securely and efficiently. Performance Considerations The TIMESTAMPDIFF function is optimized for performance, but be mindful of the following: Indexes: Ensure that the date_of_birth column is indexed to speed up queries. Query Optimization: For large datasets, consider optimizing queries to improve performance. Troubleshooting Common Issues Here are some common issues and their solutions: Incorrect Results Issue: Age calculation is incorrect. Solution: Ensure that dates are correctly formatted and the date_of_birth column contains valid date values. Query Errors Issue: Syntax or execution errors. Solution: Verify that the SQL syntax is correct and that you are using valid MySQL functions. Conclusion Calculating age from a date of birth using TIMESTAMPDIFF in MySQL is straightforward and efficient. By following the steps outlined in this tutorial, you can accurately determine age and handle various edge cases. Integrate these calculations into your applications and optimize performance for the best results.
10 September 2024 · 4 min to read
MySQL

How to Install and Configure phpMyAdmin on Ubuntu 22.04

phpMyAdmin is a specialized utility written in PHP that provides a graphical interface for managing MySQL databases via a browser. In addition to displaying tables visually, phpMyAdmin simplifies database management, allowing the creation of SQL queries through a control panel without directly writing commands or code. It implements the full functionality of SQL queries: viewing, adding, deleting, and modifying databases, as well as their tables, fields, and indexes. In this guide, we will install phpMyAdmin and all its dependencies on a remote host. The technological stack within which phpMyAdmin will work is as follows: MySQL database Nginx web server PHP interpreter Note that this guide uses the Nginx web server instead of the more common Apache for PHP. Therefore, the overall toolset demonstrated in this instruction looks like this: PHP + phpMyAdmin + Nginx + MySQL. Thus, Nginx handles user requests and redirects them to PHP via the FastCGI protocol. The PHP interpreter processes phpMyAdmin scripts, which "communicate" with and manage the MySQL database. Prerequisites To install and configure phpMyAdmin, you will need: A cloud server running Ubuntu 22.04.  Below we will describe how to deploy an Ubuntu server on Hostman. Step 1: Preparing the System Configuring the Cloud Server To create a cloud server on Hostman, log into the control panel and go to Cloud Servers in the left menu. Next, click Create server. The most important thing is to choose Ubuntu 22.04. You can customize the rest of the parameters as you wish. After completing the configuration, click Order. In a couple of minutes the server will be online and you'll be able to connect to it remotely via SSH, using the command: ssh root@IP For example: ssh [email protected] You can copy the command from your server's Dashboard. In our case, root is the default username for the Hostman cloud server. After entering the command, the terminal will prompt for the root password, which you also find on the Dashboard.  Updating the System Before installing the necessary components, update the list of available repositories: sudo apt update And update the packages already installed on the system: sudo apt upgrade Step 2: Installing MySQL First, install MySQL on your Ubuntu server: sudo apt install mysql-server -y Ensure the MySQL service is running: systemctl status mysql If it is, the console output will include the following status: Active: active (running) You can also check the MySQL version: mysql --version The console will display something like this: mysql  Ver 8.0.36-0 ubuntu 0.22.04.1 for Linux on x86_64 ((Ubuntu)) Note that this guide uses MySQL version 8.0.36. Next, run a special security script to configure MySQL: sudo mysql_secure_installation Log into MySQL to set a password for the root user: mysql Check the list of existing users: SELECT User, Host FROM mysql.user; The console will display a list of usernames and hosts: +------------------+-----------+| User             | Host      |+------------------+-----------+| debian-sys-maint | localhost || mysql.infoschema | localhost || mysql.session    | localhost || mysql.sys        | localhost || root             | localhost |+------------------+-----------+5 rows in set (0.00 sec) We are interested in the root user, so execute the following command for it: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_pass_123'; Replace my_pass_123 with a strong password. Exit MySQL: exit In the future, to log into MySQL, use the following command: mysql -u root -p The console will always prompt for the password that you just set. Efficient and scalable Virtual Servers Step 3: Installing Nginx In this example, we will use the Nginx web server as an alternative to Apache. Install it via the APT package manager: sudo apt install nginx -y After installation, check the status of the Nginx service: systemctl status nginx After installing, Nginx starts automatically, so the console output should show the status: Active: active (running) Check the Nginx version: nginx -v The console will display: nginx version: nginx/1.18.0 (Ubuntu) So, in this tutorial, phpMyAdmin will run on Nginx version 1.18.0. Now you can enter your server's address in the browser to ensure that Nginx responds to user HTTP requests. In our case: http://166.1.227.252 The browser should open the standard Nginx welcome page. After we install phpMyAdmin, it will be available at http://server-ip/phpmyadmin. Step 4: Installing PHP For phpMyAdmin to work, you need to install PHP on your Ubuntu server. We will download it from an independent software provider's repository, so first add a new remote repository to the APT package manager: sudo add-apt-repository ppa:ondrej/php Then install the FastCGI Process Manager (FPM) and an additional module for working with MySQL: sudo apt install php8.3-fpm php8.3-mysql -y To check that the installation was successful, query the PHP version: php -v The console will display an output similar to this: PHP 8.3.4 (cli) (built: Mar 16 2024 08:40:08) (NTS)Copyright (c) The PHP GroupZend Engine v4.3.4, Copyright (c) Zend Technologies    with Zend OPcache v8.3.4, Copyright (c), by Zend Technologies As you can see, this guide uses PHP version 8.3.4. Step 5: Installing phpMyAdmin To install phpMyAdmin on Ubuntu, download it from the official website. Select the latest version of the program in a .tar.gz archive, then copy the download link and use it in the wget command: wget -c https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-english.tar.gz Next, unpack the downloaded archive: tar -xzvf phpMyAdmin-5.2.1-english.tar.gz In our case, we are using phpMyAdmin version 5.2.1. You can delete the archive itself: rm phpMyAdmin-5.2.1-english.tar.gz Move the unpacked directory to a separate directory specifically for phpMyAdmin: sudo mv phpMyAdmin-5.2.1-english /usr/share/phpmyadmin Create a symbolic link associated with the local host's web directory: ln -s /usr/share/phpmyadmin /var/www/html Now proceed to configure the Nginx web server. Step 6: Configuring Nginx Make changes to the web server's main configuration file to allow Nginx to open phpMyAdmin's root web page. sudo nano /etc/nginx/sites-available/default First, find the line defining the root page index parameter. By default, it looks like this: index index.html index.htm index.nginx-debian.html; To allow Nginx to process PHP files, add index.php so that the final line looks like this: index index.php index.html index.htm index.nginx-debian.html; Next, make changes to the FastCGI protocol handler so that Nginx can forward all requests to PHP files directly to the PHP interpreter. Find the root request handler code, which by default looks like this: location / {    # First attempt to serve request as file, then    # as directory, then fall back to displaying a 404.    try_files $uri $uri/ =404;} Add the PHP file request handler code right after it: location ~ \.php$ {    try_files $fastcgi_script_name =404;    include fastcgi_params;    fastcgi_pass unix:/run/php/php8.3-fpm.sock;    fastcgi_index index.php;    fastcgi_param DOCUMENT_ROOT $realpath_root;    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;} Overall, the file content should look like this: server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $fastcgi_script_name =404; include fastcgi_params; fastcgi_pass unix:/run/php/php8.3-fpm.sock; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; } } Check the Nginx configuration: nginx -t If the syntax is correct, the console will display: nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful Restart the Nginx web server to apply all changes: sudo systemctl restart nginx At this point, all the necessary dependencies are installed, and you can access phpMyAdmin by going to: http://server-ip/phpmyadmin For example: http://166.1.227.252/phpmyadmin The main phpMyAdmin page should open in the browser. You can login to phpMyAdmin using the username and password of the MySQL user created to access the control panel and start managing databases. Hostman Cloud Databases As an alternative to deploying databases and management tools, Hostman provides pre-configured and ready-to-use cloud databases, including MySQL, PostgreSQL, Redis, MongoDB, and others. MySQL and PostgreSQL databases have pre-installed web-interfaces for database management: phpMyAdmin and Adminer. To create a cloud database, log in to the Hostman control panel and select Databases in the left sidebar menu. Click Create database. This will open the cloud database configuration page, which is similar to the cloud server configuration pages. In our case, we choose MySQL as the database type. However, in your projects, you can use any other databases. To apply the selected settings, you need to click the Order button. After this, you will be redirected to the main cloud database management page. The database will be configured and started in a few minutes, after which it will be available for work through the web interface or remote connection. To work with the database through the console terminal, you need to go to the Connection tab and copy the command to connect to the remote database via the MySQL client. For example, the connection command might look like this: mysql -u gen_user -p')<07dCV46*GdPE' -h 91.206.179.29 -P 3306 -D default_db After the -u flag, specify the username. After the -p flag, specify the root password in single quotes. After the -h flag, specify the IP address of the remote host. After the -P flag, specify the host port (for example, the standard port for MySQL is 3306, and for MongoDB, it is 27017). After the -D flag, specify the database name. Alternatively, in the upper left corner, you can click on the Web Interface button and choose one of the two available database management utilities. After this, a familiar login page will open in a new tab, where you will need to enter the login credentials for the database. Setup and manage your cloud database with ease Conclusion This tutorial demonstrated the installation and configuration of phpMyAdmin with the preliminary manual installation of all necessary dependencies: MySQL database Nginx web server PHP interpreter in FPM format In your own projects, you can expand the technological stack shown in this guide to a more familiar and common combination of Nginx + Apache + PHP. Additionally, as an alternative to manually deploying MySQL and phpMyAdmin, the creation of a pre-configured and ready-to-use cloud database on Hostman servers with pre-installed web-based database management interfaces, one of which is phpMyAdmin, was demonstrated. Hostman provides pre-configured and ready-to-use cloud databases, including MySQL, PostgreSQL, Redis, MongoDB, and others.
28 June 2024 · 9 min to read

Do you have questions,
comments, or concerns?

Our professionals are available to assist you at any moment,
whether you need help or are just unsure of where to start.
Email us
Hostman's Support