MAMP mysql破root用户

bik*_*tle 5 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

更新当我连接为:

/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 | 
+------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

但当我连接为:

/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     | 
+----------------+
Run Code Online (Sandbox Code Playgroud)

因此,当我通过IP或套接字以localhost身份连接时,我以某种方式不以root用户身份登录.我觉得这很混乱?

bik*_*tle 10

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

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

mysqladmin -u root password 'password'
Run Code Online (Sandbox Code Playgroud)

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

非常感谢这个帖子,帮助我了解如何解决这个问题.

  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. 运行以下命令.

    冲洗特权; 全部授予.来自'密码'标识的'用户名'@'localhost';

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

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

  9. 你还需要修复你的phpmyadmin.我想在此前加上这个由于某种原因我不明白这些变化不能快速传播,突然就开​​始工作了.

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

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

关于上面发生的事情有一些我想要澄清的事情,比如为什么MAMPs phpmyadmin凭证更改不能立即起作用.

希望这一切都有帮助!