Comprehensive Technical Guide for MySQL Root Password Reset and Change in Ubuntu Server

Nov 05, 2025 · Programming · 14 views · 7.8

Keywords: MySQL | Ubuntu | password_reset | root_account | skip-grant-tables | phpMyAdmin

Abstract: This article provides an in-depth exploration of various technical methods for resetting and changing MySQL root passwords in Ubuntu server environments. By analyzing password management mechanisms across different MySQL versions, it offers complete solutions including secure reset procedures based on skip-grant-tables, privilege refresh strategies, and phpMyAdmin integration configurations. Combining official documentation with community best practices, the article deeply examines core concepts such as password authentication plugins and user privilege table structures, providing reliable operational guidance for system administrators.

Overview of MySQL Root Password Management

In Ubuntu server environments, MySQL database root account password management forms the foundation of system security. When resetting or changing root passwords becomes necessary, administrators must follow specific security procedures to ensure database service continuity and data integrity. This article provides comprehensive technical guidance based on community-verified best practices and official documentation.

Preparatory Steps Before Password Reset

Before executing any password change operations, the MySQL service must be stopped first. This is a critical step to ensure data consistency and avoid concurrent access conflicts. In Ubuntu systems, the following command can be used to stop the service:

sudo /etc/init.d/mysql stop

In certain system configurations, it may be necessary to manually create the MySQL runtime directory and set correct permissions:

sudo mkdir -v /var/run/mysqld && sudo chown mysql /var/run/mysqld

Secure Reset Method Using skip-grant-tables

Starting the MySQL service with the --skip-grant-tables parameter bypasses privilege verification, which is the core mechanism for password reset. This mode allows password-free login but also requires additional security measures:

sudo mysqld --skip-grant-tables &

In this mode, you can connect directly to the MySQL server for password reset operations:

mysql -u root mysql

Password Update Syntax for Different MySQL Versions

MySQL 8.0 and later versions introduced new authentication mechanisms and password storage methods. For these versions, using the ALTER USER statement is recommended:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';
FLUSH PRIVILEGES;

For MySQL 5.7 and earlier versions, the password update syntax differs. Note the use of the authentication_string field:

UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD') WHERE User='root';
FLUSH PRIVILEGES;

Authentication Plugin Compatibility Handling

In certain MySQL configurations, it may be necessary to explicitly set authentication plugins to ensure backward compatibility:

UPDATE user SET plugin="mysql_native_password" WHERE User='root';
FLUSH PRIVILEGES;

This step is crucial for ensuring normal connections with various client tools, including phpMyAdmin.

Service Recovery and Verification

After completing the password reset, the temporary privilege-free MySQL process needs to be terminated and the service restarted normally:

sudo killall -9 mysqld
sudo service mysql start

After restarting, test the connection using the new password to ensure the configuration has taken effect correctly.

phpMyAdmin Integration Considerations

When phpMyAdmin is deployed in the system, its configuration file needs to be updated accordingly after password changes. phpMyAdmin does not automatically detect MySQL password changes; administrators need to manually modify the password settings in the config.inc.php file:

$cfg['Servers'][$i]['password'] = 'YOURNEWPASSWORD';

Security Best Practices

Although the --skip-grant-tables method is effective in emergency situations, it carries security risks. In production environments, it is recommended to prioritize regular change methods using known passwords:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewSecurePassword123!';
FLUSH PRIVILEGES;

Regular password rotation, strong password policies, and restricting remote access for root accounts are all important security measures.

Troubleshooting and Common Issues

Common problems that may be encountered during password reset processes include privilege table corruption, plugin mismatches, or service startup failures. By checking MySQL error logs and system logs, these issues can be quickly identified and resolved. Ensuring all steps are executed in sequence and verifying results after each critical operation are effective methods for preventing failures.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.