|
|
|
|
A.4.1. How to Reset the Root Password
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.6.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 .
If you install MySQL using the MySQL Installation Wizard,
you may need to specify a --defaults-file
option:
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld-nt.exe"
--defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\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 options
(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.
|
|
|