重置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密码似乎都不是一个好习惯。这是已知修复的已知问题吗?
答案 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
。