:: DEVELOPER ZONE
If you have never set a root password for MySQL,
the server does not require a password at all for connecting as
root. However, it is recommended to set a
password for each account. See
Section 5.5.1, “General Security Guidelines”.
If you set a root password previously, but have
forgotten what it was, you can set a new password. The following
procedure is for Windows systems. The procedure for Unix systems is
given later in this section.
The procedure under Windows:
Log on to your system as Administrator.
Stop the MySQL server if it is running. For a server that is running as a Windows service, go to the Services manager:
Start Menu -> Control Panel -> Administrative Tools -> Services
Then find the MySQL service in the list, and stop it.
If your server is not running as a service, you may need to use the Task Manager to force it to stop.
Create a text file and place the following command within it on a single line:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
Save the file with any name. For this example the file will be
C:\mysql-init.txt.
Open a console window to get to the DOS command prompt:
Start Menu -> Run -> cmd
We are assuming that you installed MySQL to
C:\mysql. If you installed MySQL to another
location, adjust the following commands accordingly.
At the DOS command prompt, execute this command:
C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
The contents of the file named by the
--init-file option are executed at server
startup, changing the root password. After the
server has started successfully, you should delete
C:\mysql-init.txt.
Users of MySQL 4.1 and higher who install MySQL using the MySQL
Installation Wizard may need to specify a
--defaults-file option:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe
--defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini"
--init-file=C:\mysql-init.txt
The appropriate --defaults-file setting can be
found using the Services Manager:
Start Menu -> Control Panel -> Administrative Tools -> Services
Find the MySQL service in the list, right-click on it, and choose
the Properties option. The Path to
executable field contains the
--defaults-file setting.
Stop the MySQL server, then restart it in normal mode again. If you run the server as a service, start it from the Windows Services window. If you start the server manually, use whatever command you normally use.
You should be able to connect using the new password.
In a Unix environment, the procedure for resetting the
root password is as follows:
Log on to your system as either the Unix root
user or as the same user that the mysqld server
runs as.
Locate the .pid file that contains the
server's process ID. The exact location and name of this file
depend on your distribution, hostname, and configuration. Common
locations are /var/lib/mysql/,
/var/run/mysqld/, and
/usr/local/mysql/data/. Generally, the
filename has the extension of .pid and begins
with either mysqld or your system's hostname.
You can stop the MySQL server by sending a normal
kill (not kill -9) to the
mysqld process, using the pathname of the
.pid file in the following command:
shell> kill `cat /mysql-data-directory/host_name.pid`
Note the use of backticks rather than forward quotes with the
cat command; these cause the output of
cat to be substituted into the
kill command.
Create a text file and place the following command within it on a single line:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
Save the file with any name. For this example the file will be
~/mysql-init.
Restart the MySQL server with the special
--init-file=~/mysql-init option:
shell> mysqld_safe --init-file=~/mysql-init &
The contents of the init-file are executed at server startup,
changing the root password. After the server has started
successfully you should delete ~/mysql-init.
You should be able to connect using the new password.
Alternatively, on any platform, you can set the new password using the mysql client(but this approach is less secure):
Stop mysqld and restart it with the
--skip-grant-tables --user=root option (Windows
users omit the --user=root portion).
Connect to the mysqld server with this command:
shell> mysql -u root
Issue the following statements in the mysql client:
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd')
-> WHERE User='root';
mysql> FLUSH PRIVILEGES;
Replace ``newpwd'' with the actual
root password that you want to use.
You should be able to connect using the new password.
© 1995-2005 MySQL AB. All rights reserved.

User Comments
Warning: query failed: Unknown column 'user.firstname' in 'field list' in /data0/sites/live/web-main/lib/mysql-cxn.php on line 69
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data0/sites/live/web-main/lib/docbook.php on line 245
Add your own comment.