MAMP mysql破root用户

时间:2012-10-17 08:01:04

标签: mysql mamp

我在SO和其他一些地方阅读了很多线程,但无法在MAMP中修复我的mysql安装。

背景。我前几天对root用户进行了更改,试图让本地服务正常连接。重新启动我的机器后,php中的phpmyadmin不再显示我的任何dbs并显示“No Privileges”来创建数据库。我尝试了很多东西来恢复我在这里和其他地方读到的特权无济于事。 --skip-grant-tables似乎不起作用。在shell中以root用户身份连接我没有localhost的权限,但我做127.0.0.1。

show grants for root@localhost;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION

我已经安装了全新的MAMP安装并复制了我的数据库。虽然它有效,但我遇到了DB没有显示所有表的情况。

所以我必须解决两个问题中的一个。我要么必须修复原始安装,要么让它在我的新mamp安装中显示所有表格。

这里学到的教训是不要懒惰,并在本地与root用户联系,只需创建另一个登录。

UPDATE 当我连接为:

/Applications/MAMP/Library/bin/mysql -uroot -h127.0.0.1 -p
mysql> SHOW GRANTS FOR 'root'@'localhost';
+------------------------------------------------------------------------+
| Grants for root@localhost                                              |
+------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION    | 
| GRANT ALL PRIVILEGES ON `db`.* TO 'root'@'localhost' WITH GRANT OPTION | 
+------------------------------------------------------------------------+

但是当我连接为:

/Applications/MAMP/Library/bin/mysql -uroot -hlocalhost -p
mysql> SHOW GRANTS FOR 'root'@'localhost';
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
mysql> SELECT user();
+----------------+
| user()         |
+----------------+
| root@localhost | 
+----------------+
mysql> SELECT current_user();
+----------------+
| current_user() |
+----------------+
| @localhost     | 
+----------------+

因此,当我通过IP或套接字以localhost身份连接时,我以某种方式不以root用户身份登录。我发现这很令人困惑?

1 个答案:

答案 0 :(得分:9)

经过几天的打击,我发现了解决方案。将这些部分放在一起需要一段时间,因为MAMP安装与标准的mysql安装有点不同。我仍然不明白一些细节,但我们走了。

即使我以root身份登录,但事实是我是上面指出的匿名用户和''@ localhost'。因此显然存在权限错误,其中包含三个部分:用户名,密码和主机。所以关于我的root帐户的一些变化(我相信这是密码),但是整个事情的反应有点不稳定,因为而不是告诉我我的密码和用户名组合不正确,我没有权限登录。我相信通过运行如下的命令,我会加剧这种情况。

mysqladmin -u root password 'password'

最后这就是我所做的,我想说清楚这是OS X上MAMP安装的说明,虽然我确信它们可以很容易地适应Windoz。

非常感谢this thread帮助我了解如何解决这个问题。

  1. 打开活动监视器。
  2. 关闭MAMP
  3. 确保在Activity Monitor中关闭mysql。现在,您可能会看到正在运行的_mysqld进程可能是默认运行的OSX mysql。
  4. 运行以下命令,将端口号替换为您使用的端口号。这将启动mysql减去用户权限。

    / Applications / MAMP / Library / libexec / mysqld --skip-grant-tables --port = 8889 --socket = / Applications / MAMP / tmp / mysql / mysql.sock

  5. 在您的控制台中登录到没有信用的mysql。

      

    MySQL的

  6. 运行以下命令。

    刷新权限; 通过'密码'标识到'username'@'localhost';

  7. 关闭mysqld并在没有skip-grant-tables选项的情况下重新启动它

  8. 登录mysql确认一切正常。

  9. 您还需要修复您的phpmyadmin。由于某种原因,我不想理解这些变化,因为我不明白这些变化不会快速传播,而是突然开始工作。

    进入/Application/MAMP/bin/phpMyAdmin/config.inc.php并输入新创建的登录名的正确凭据。确保它们是确切的,包括主持人。

  10. 最后在phpmyadmin工作之后进入mysql.user表,看看哪里出错了。了解搞砸了什么很重要。

  11. 关于上面发生的事情有一些事情,我希望得到一些澄清,比如为什么MAMPs phpmyadmin凭证更改不会立即起作用。

    希望这一切都有帮助!