Posted on

Restoring or Migrating WordPress Without Plugins: The Definitive Guide to the Manual Method

Modern WordPress backup plugins (like UpdraftPlus, All-in-One WP Migration, etc.) have greatly simplified site restoration and migration operations. However, there are situations where you are left with only the “raw” backup of the site—that is, the file folder and the SQL database dump.

If you find yourself in this situation, don’t panic! The manual method, while requiring a little attention, is perfectly valid and will allow you to get your site back online. This guide will walk you through the process step-by-step.

🎯 Prerequisites: What You Need to Have Ready

Before starting, make sure you have:

  1. The complete WordPress file folder (the one that includes wp-admin, wp-content, wp-includes, wp-config.php, etc.).
  2. The database export file in .sql format.
  3. Access to your cPanel/Plesk or hosting control panel.
  4. An FTP client (like FileZilla) and login credentials.
  5. A text editor (like VS Code, Sublime Text, or Notepad++ – not Windows Notepad) to modify the SQL file.

Step 1: Preparing the Destination Environment

First, we need to prepare the space where the site will be restored.

1.1 Creating the Folder and Uploading Files

  1. Create the Folder: Access your hosting control panel and create the domain or subfolder that will host the site (e.g., public_html/newsitesname).
  2. Upload the Files: Use your FTP client (or the cPanel File Manager) to upload all files and folders from your backup into the folder you just created. This process may take several minutes depending on the size of your site. ⏳

1.2 Creating the New Database

  1. Create the DB: Go to your hosting control panel and create a completely empty new MySQL database (for example, through the MySQL Databases section on cPanel).
  2. Create User: Also create a new user for this database and grant them all privileges on that database.

💡 Important: Make a note of the Database Name, the Username, and the Password of the newly created database. You will need them later.


Step 2: Database Adaptation and Import

This is the most delicate step, where we tell the database to “know” what the new site address is.

2.1 Modifying the SQL File (URL Replacement)

The WordPress database stores the old site’s URL in many tables, which is the main cause of problems after a manual migration. We need to correct these references:

  1. Open the SQL File: Open the .sql file of your backup with an advanced text editor (like Notepad++).
  2. Perform Replacements: Use the Find and Replace function to update all references to the old address:
    Find (Old Domain) Replace With (New Domain)
    https://www.olddomain.com https://www.newdomain.com
    http://www.olddomain.com http://www.newdomain.com
    https://olddomain.com https://newdomain.com
    http://olddomain.com http://newdomain.com

    Attention: It is essential to replace both versions with and without www. and both http and https to avoid issues. Make sure your editor handles replacement across the entire document and save the modified .sql file.

2.2 Importing into the New Database

  1. Access phpMyAdmin: Through your control panel, access phpMyAdmin and select the empty database you created in Step 1.2.
  2. Import: Click on the Import tab, choose the modified .sql file from your computer, and start the import.
  3. Verify: Once the import is complete, the database will no longer be empty and will contain all the tables from your old site.

Step 3: Connecting Files to the New Database

The final step is to tell your WordPress site (the files) what the database credentials (the data container) are.

3.1 Modifying the wp-config.php File

  1. Locate: In the file folder just uploaded to the server, find and open the crucial file: wp-config.php.
  2. Update Credentials: Look for the following lines and modify them with the data of the new database you created in Step 1.2:
    // The name of the database for WordPress
    define( 'DB_NAME', 'new_database_name' );
    
    // MySQL database username
    define( 'DB_USER', 'new_database_username' );
    
    // MySQL database password
    define( 'DB_PASSWORD', 'the_new_database_password' );
    
    // MySQL hostname (usually 'localhost')
    define( 'DB_HOST', 'localhost' );
    
  3. Save: Save the wp-config.php file and re-upload it via FTP to the server, overwriting the previous one.

🚀 Launch and Final Test

Your site is now online!

  1. Test the URL: Try opening the new site address (https://newdomain.com) in your browser. You should see your restored site.
  2. Verify Login: Try logging into the administration area (https://newdomain.com/wp-admin) with your old credentials.
  3. Permalinks: If the site shows “Page Not Found” errors (404), go to Settings > Permalinks in the administration area and simply click Save Changes without altering anything. This “refreshes” the permalink configuration on the new server.

Congratulations! You have manually restored a WordPress site using only the files and the database. 🎉

Posted on

Move a mysql – mariadb database from one windows server to another windows server

Install xampp on the new server and If mysql is on, turn it off.

In the folder C: \ xampp \ mysql \ data create a new folder, for example with the name of the database you are moving.

Copy in it all the data files (.frm, .ibd, .myd, .myi) from the relative folder of the old server.

Make a copy in a backup folder of the file ib_logfile0, ib_logfile1, ibdata1 those are in the folder “C: \ xampp \ mysql \ data” in the new server.

Copy the files ib_logfile0, ib_logfile1, ibdata1 from the old server to the same location as the new server, i.e. in the folder C: \ xampp \ mysql \ data

Start mysql. Open a dos prompt, go to the directory

cd C: \ xampp \ mysql \ bin

mysql -u root -p

show databases;

You should see the new database added to the previous ones.

Open another dos prompt and check the tables with the commands

cd C: \ xampp \ mysql \ bin

mysqlcheck -uroot -p YOURDATABASE

Open your browser and connect to phpmyadmin with http: // localhost / phpmyadmin

You should see the database and tables.

Posted on

WordPress on Azure: Error establishing a database connection

You have a WordPress site hosted on Microsoft Azure.Perhaps your site is part of a free or shared app service plan.

Trying to connect to the site, one day, you have this wordpress error message:  Error establishing a database connection

How to find out and solve the problem?

Connecting  to Microsoft Azure Service with FTP

First of all you have to connect to the site via ftp to understand where the error is. We can connect to Azure web application with FTP also. In the Overview section of the your Azure web application, select “Get publish profile”. It will download a file that has a lot of things and teh details about FTP username and password, which is constant and can be used for FTP connection.

Enable WordPress Debug Logging

You need FTP connection to  enable WordPress Debug Logging. To enable error logging in WordPress, you will have to make both of the following changes :

  1. In wwwroot directory, create a file named .user.ini Add the following line:log_errors=on
  2. In wwwroot directory, open wp-config.php
    Add the following lines  :

//Enable WP_DEBUG mode
define('WP_DEBUG', true);

//Enable Debug Logging to /wp-content/debug.log
define('WP_DEBUG_LOG', true);

//Supress errors and warnings to screen
define('WP_DEBUG_DISPLAY', false);

//Supress PHP errors to screen
ini_set('display_errors', 0);

Also comment the line :

    /* define('WP_DEBUG', false); */

Analyze the Log File

Try to load your site. Now, through ftp, you can enter in the directoy LogFiles and analyze the file

php_errors.log

Database error

Perhaps you have a database error, for example a duplicate key problem. On azure, in your app service, select Mysql In -app button. On the top of the section, you can see the Manage button. Click on the button and you’ll load the phpMyAdmin portal on your local Mysql DB.

Duplicate entry

If you have this kind of error : Duplicate entry ‘XXXXX’ for key ‘PRIMARY’ for the  query INSERT INTO `table_name`, just ran following command :

REPAIR TABLE table_name

That’s it! It was done.