我已经在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.
非常感谢这个帖子,帮助我了解如何解决这个问题.
运行以下命令,将端口号替换为您使用的端口号.这将启动mysql减去用户权限.
/ Applications/MAMP/Library/libexec/mysqld --skip-grant-tables --port = 8889 --socket =/Applications/MAMP/tmp/mysql/mysql.sock
在你的控制台登录到没有信誉的mysql.
MySQL的
运行以下命令.
冲洗特权; 全部授予.来自'密码'标识的'用户名'@'localhost';
关闭mysqld并在没有skip-grant-tables选项的情况下重新启动它
登录mysql确认一切正常.
你还需要修复你的phpmyadmin.我想在此前加上这个由于某种原因我不明白这些变化不能快速传播,突然就开始工作了.
进入/Application/MAMP/bin/phpMyAdmin/config.inc.php并输入新创建的登录名的正确凭据.确保它们确切包括主机.
最后,在phpmyadmin工作之后进入mysql.user表,看看哪里出了问题.理解什么搞砸是很重要的.
关于上面发生的事情有一些我想要澄清的事情,比如为什么MAMPs phpmyadmin凭证更改不能立即起作用.
希望这一切都有帮助!
| 归档时间: |
|
| 查看次数: |
15766 次 |
| 最近记录: |