It often happens. You are given the job of administrating a MySQL server where the root password was lost.
What to do? Here is the solution I found in Internet at the link below. Thanks for the useful tip.
by Vivek Gite · 121 comments
You can recover MySQL database server password with following five easy steps.
Step # 1: Stop the MySQL server process.
Step # 2: Start the MySQL (mysqld) server/daemon process with the –skip-grant-tables option so that it will not prompt for password.
Step # 3: Connect to mysql server as the root user.
Step # 4: Setup new mysql root account password.
Step # 5: Exit and restart the MySQL server.
Here are commands you need to type for each step (login as the root user):
Step # 1 : Stop mysql service
Stopping MySQL database server: mysqld.
Step # 2: Start to MySQL server w/o password:
mysqld_safe --skip-grant-tables &
Starting mysqld daemon with databases from /var/lib/mysql
Well for some unknwon reason mysql server didn’t start (in Debian Lenny)
So to solve this I modified the start/stop script (/etc/init.d/mysql) as follows:
Around line: 100 (Addition is in bold here)
This way it retained its environment etc. to be able to start…and it worked 🙂
# Start daemon
log_daemon_msg "Starting MySQL database server" "mysqld"
if mysqld_status check_alive nowarn; then
log_progress_msg "already running"
/usr/bin/mysqld_safe --skip-grant-tables > /dev/null 2>&1 &
# 6s was reported in #352070 to be too few when using ndbcluster
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do
Step # 3: Connect to mysql server using mysql client:
mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
Step # 4: Setup new MySQL root user password
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
Step # 5: Stop MySQL Server:
Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
+ Done mysqld_safe –skip-grant-tables
Step # 6: Start MySQL server and test it
# /etc/init.d/mysql start
# mysql -u root -p