- Login as root to the Windows or Unix-like (Unix, Linux or BSD) machine with the MySQL server.
- Stop the MySQL server by using either of the following command:
Linux:
/etc/rc.d/init.d/mysql stop
FreeBSD:
/usr/local/etc/rc.d/mysql-server.sh stop
- Open the mysql server start-up script (i.e. mysql-server.sh or mysql which is the file executed to start or stop MySQL server).
- ADD –skip-grant-tables to the end of the line that contains the mysqld_safe command as its parameter.
- Start MySQL server with the following command:
Linux:
/etc/rc.d/init.d/mysql start
FreeBSD:
/usr/local/etc/rc.d/mysql-server.sh start
- Alternatively, start the MySQL server directly and skip the editing with the following command (if you’re using this step, you don’t need to modify the MySQL startup script):
mysqld_safe --skip-grant-tables &
Depending on your path environment, you may need to point to the correct directory where mysqld_safe is instead.
- Run the following commands to login as the mysql user and connect to mysql user/permission database:
# mysql -u root mysql
- Run the update queries to change the MySQL password:
mysql> UPDATE user SET Password=PASSWORD('newrootpassword') WHERE User='root'; mysql> FLUSH PRIVILEGES;
Note: Replace newrootpassword with the new root password for MySQL server. Flush Privileges is needed to making the password change effect immediately.
- Exit mysql database client by typing exit.
- Stop MySQL server with commands listed at step 2.
- Open the mysql server startup script edit in step 3 again and REMOVE the –skip-grant-tables parameter that has been added.
- Start MySQL server by using command from step 5 or 6.
For Redhat Linux users, use the following instructions as the root user of Redhat Linux machine:
- Stop MySQL process by using command:
# killall mysqld
- Start the MySQL server with following options:
# /usr/libexec/mysqld -Sg --user=root &
- Start the MySQL client:
# mysql
You should see the following message:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1 to server version: 3.xx.xxType ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.
mysql>
- Use mysql database:
mysql> USE mysql
You should see the following message:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
- Then, update the password for the root user with the following command:
UPDATE user SET password=password("newpassword") WHERE user="root";
Replace newpassword with your desired password. You should see the following message:
Query OK, 2 rows affected (0.03 sec)
Rows matched: 2 Changed: 2 Warnings: 0Rows affected may be different, but the Query OK should be there.
- Flush the database privileges to reload it in order to make the changes effective:
mysql> flush privileges;
You should get the following result:
Query OK, 0 rows affected (0.02 sec)
- Exit the MySQL client by typing exit.
- Kill the MySQL server process by typing killall mysqld.
- Then start MySQL again:
/etc/init.d/mysqld start