在OSX上重置MySQL密码不起作用(无法连接没有授权的表)

我首先说我已经浏览了大量关于重置mysql密码的post(在这里和在互联网上以及在mysql.com上关于重置pipe理员密码的文章 ),但没有任何东西似乎适用于我。 噢,我在命令行上工作也很新。

在似乎适用于所有人的“解决scheme”之下,但不适合我:

Last login: Mon Nov 3 12:02:21 on console maurice@Maurices-MacBook-Pro:~$ sudo /usr/local/mysql/support-files/mysql.server stop Password: Shutting down MySQL . SUCCESS! maurice@Maurices-MacBook-Pro:~$ sudo mysqld_safe --skip-grant-tables 141103 12:25:35 mysqld_safe Logging to '/usr/local/mysql/data/Maurices-MacBook-Pro.local.err'. 141103 12:25:35 mysqld_safe A mysqld process already exists maurice@Maurices-MacBook-Pro:~$ 

我不知道其他进程来自哪里,我不知道如何结束这个进程。 如果我继续按照说明并打开一个新的控制台选项卡,我会得到以下内容:

 Last login: Mon Nov 3 12:25:16 on ttys000 maurice@Maurices-MacBook-Pro:~$ mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) maurice@Maurices-MacBook-Pro:~$ sudo mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) maurice@Maurices-MacBook-Pro:~$ 

我无法进入MySQL更新密码。 我可以通过mysql命令与MySQL通信,但是(当然)我不能做任何查询:

 maurice@Maurices-MacBook-Pro:~$ mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.6.21 MySQL Community Server (GPL) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root'; ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user' mysql> 

昨天晚上我花了整个晚上寻找解决scheme,但在任何地方找不到任何东西。 请记住,我在命令行上工作相当新,所以如果我忽略了一些基本的东西, 抱歉!

我真的希望有人知道一个解决scheme,因为我没有select

编辑(解决scheme): Paul Haldane指出我正确的方向。 我忘了我已经添加了一个com.mysql.mysql.plist文件,我启动时通过launchctl加载启动时自动启动MySQL。 首先做一个sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysql.plist停止MySQL并让我以安全模式login。

太高兴了:)

这种行为意味着有一个MySQL守护进程已经运行,当你尝试启动新的没有身份validation。 这有两个可能的原因。 1.尽pipe报告成功,但是mysql.server stop命令不起作用,或者2.有一个pipe理程序正在运行,如果服务器死了,它将自动重新启动服务器。 通过使用ps查看正在运行的进程,您应该能够知道发生了什么。 尝试

 ps uaxww | grep -i mysql 

这将给你的进程列表。 如果主mysqld已经运行了一段时间,那么这是因为1,如果它刚刚开始,那么很可能是原因2.无论哪种方式使用kill命令(通过sudo)终止进程。 只是正常的杀 – 不要使用-9,因为它不会给MySQLd一个干净关机的机会。 之后,你应该能够启动守护进程没有身份validation。