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
項4.6.1. 「セキュリティ ガイドライン」.
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.