邮件列表中看到的:
not sure, but it may be worth trying the following
run the script:
mysql_install_db --user=root
In the installation dir
this should change ownership and make
mysql recognise the data dir.
good luck
Ade
Foo Ji-Haw wrote:
> Hi all,
>
> My Windows-based database server crashed (no fault of
MySQL. probably
> OS or hardware), and I managed to copy out the data files. I am using
> version 5.0 of the Essentials package.
>
> I tried to install a similar setup on another server, then copy the
> data/ folder over. The
MySQL service starts, but I am not able to
> login, even as root.
>
> Is there anyone who can advise me on the recovery steps?
>
> Appreciate your feedback!
>
之后又有人回邮件,给了一个
mysql手册的链接
?
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.7.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.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 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.
|