我在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用户身份登录。我发现这很令人困惑?
答案 0 :(得分:9)
经过几天的打击,我发现了解决方案。将这些部分放在一起需要一段时间,因为MAMP安装与标准的mysql安装有点不同。我仍然不明白一些细节,但我们走了。
即使我以root身份登录,但事实是我是上面指出的匿名用户和''@ localhost'。因此显然存在权限错误,其中包含三个部分:用户名,密码和主机。所以关于我的root帐户的一些变化(我相信这是密码),但是整个事情的反应有点不稳定,因为而不是告诉我我的密码和用户名组合不正确,我没有权限登录。我相信通过运行如下的命令,我会加剧这种情况。
mysqladmin -u root password 'password'
最后这就是我所做的,我想说清楚这是OS X上MAMP安装的说明,虽然我确信它们可以很容易地适应Windoz。
非常感谢this thread帮助我了解如何解决这个问题。
运行以下命令,将端口号替换为您使用的端口号。这将启动mysql减去用户权限。
/ Applications / MAMP / Library / libexec / mysqld --skip-grant-tables --port = 8889 --socket = / Applications / MAMP / tmp / mysql / mysql.sock
在您的控制台中登录到没有信用的mysql。
MySQL的
运行以下命令。
刷新权限; 通过'密码'标识。到'username'@'localhost';
关闭mysqld并在没有skip-grant-tables选项的情况下重新启动它
登录mysql确认一切正常。
您还需要修复您的phpmyadmin。由于某种原因,我不想理解这些变化,因为我不明白这些变化不会快速传播,而是突然开始工作。
进入/Application/MAMP/bin/phpMyAdmin/config.inc.php并输入新创建的登录名的正确凭据。确保它们是确切的,包括主持人。
最后在phpmyadmin工作之后进入mysql.user表,看看哪里出错了。了解搞砸了什么很重要。
关于上面发生的事情有一些事情,我希望得到一些澄清,比如为什么MAMPs phpmyadmin凭证更改不会立即起作用。
希望这一切都有帮助!