用户访问被拒绝' root' localhost' - root帐户每次重新启动后都需要重置PW(Windows 7 SP1)

时间:2014-10-06 18:13:12

标签: mysql sql root

重置root密码后,我可以毫无问题地连接到mysql数据库:

C:\\> C:\mysql\bin\mysqld-nt --init-file=C:\\\\mysql-init.txt

mysql-init.txt包含:

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;

但是,每次重启Windows时,当我尝试连接数据库时都会收到此错误消息:

C:\\>mysql -u root -p Enter Password: ******** ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我也尝试过没有密码,同样的失败。

每次重新启动时重置root密码似乎都不是一个好习惯。这是已知修复的已知问题吗?

1 个答案:

答案 0 :(得分:0)

正确的方法是,如下。

以管理员身份登录系统。

如果MySQL服务器正在运行,请将其停止。对于作为Windows服务运行的服务器,请转到服务管理器:从“开始”菜单中选择“控制面板”,然后选择“管理工具”,再选择“服务”。在列表中找到MySQL服务并停止它。

如果您的服务器没有作为服务运行,您可能需要使用任务管理器强制它停止。

创建包含以下语句的文本文件。将密码替换为您要使用的密码。

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES; 将UPDATE和FLUSH语句分别写在一行上。 UPDATE语句重置所有root帐户的密码,FLUSH语句告诉服务器将授权表重新加载到内存中,以便它注意到密码更改。

保存文件。对于此示例,该文件将命名为C:\mysql-init.txt

打开控制台窗口以进入命令提示符:从“开始”菜单中选择“运行”,然后输入cmd作为要运行的命令。

使用特殊--init-file选项启动MySQL服务器(注意选项值中的反斜杠加倍):

C:\> C:\mysql\bin\mysqld-nt --init-file=C:\\mysql-init.txt 如果您将MySQL安装到C:\ mysql以外的位置,请相应地调整命令。

服务器在启动时执行--init-file选项命名的文件内容,更改每个root帐户密码。

如果希望服务器输出显示在控制台窗口而不是日志文件中,也可以在命令中添加--console选项。

如果使用MySQL安装向导安装MySQL,则可能需要指定--defaults-file选项:

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 可以使用服务管理器找到相应的--defaults文件设置:从“开始”菜单中选择“控制面板”,然后选择“管理工具”,再选择“服务”。在列表中找到MySQL服务,右键单击它,然后选择“属性”选项。 “可执行文件的路径”字段包含--defaults-file设置。

服务器成功启动后,删除C:\mysql-init.txt