我已经阅读了 SO 和其他一些地方的许多线程,并且无法修复我在 MAMP 中的 mysql 安装。
背景。前几天我对我的 root 用户进行了更改,试图让本地服务正确连接。重新启动我的机器后,mamp 中的 phpmyadmin 不再显示我的任何数据库,并显示“无权限”来创建数据库。我尝试了很多方法来恢复我在这里和其他地方阅读的权限,但无济于事。--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 并复制到我的数据库中。虽然它有效,但我遇到了数据库未显示所有表的实例。
所以我必须解决两个问题之一。我要么必须修复原始安装,要么让它在我的新 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 |
+------------------------------------------------------------------------+
但是当我连接为:
/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 身份登录。我觉得这很混乱?