MySQL访问被拒绝错误


9

我有一个常见的问题,但是通常的解决方案都无法正常工作,因此对于首次出现的问题表示歉意。

尝试在本地查看我的网站时出现以下错误

    Access denied for user 'sitename'@'localhost' (using password: YES)

凭据使用有误,但我不知道它们来自何处。我已经检查了app / etc / local.xml,它具有所有正确的凭据。我已经从目录(config.xml除外)中删除了所有其他xml文件。我已删除var文件夹的内容(无数次)

我在本地工作其他magento网站,因此服务器设置应该可以。我真的为此感到困惑,不知道下一步该怎么做。任何帮助,将不胜感激。


我将转到DB适配器中的connect方法,然后在调用该连接方法之前,将类似以下内容的内容:'$ e = new Exception(); Mage :: log($ e-> getTraceAsString(),null,'logname',true);' 这样跟踪变得更加紧凑。然后在该跟踪中查看任何奇数代码路径。还要记录传递给PDO的实际凭据。
Petar Dzhambazov

Answers:


8

您需要使用户sitename@localhost能够访问有问题的数据库和表。使用以下SQL作为MySQL实例上的root或超级用户来授予特权:

GRANT ALL ON magento_local.* TO 'sitename'@'localhost';

有关MYSQL中Grants的更多信息,请参见手册:http : //dev.mysql.com/doc/refman/5.1/en/grant.html


感谢您的回答。我之前遇到过这个选项,但我认为它不起作用。因为user:'sitename'和pass:'yes'不是正确的/指定的数据库凭据,所以我认为这并不能真正解决使用错误的详细信息的问题,还是可以在之后以某种方式在app / etc / local.xml中找到详细信息能够连接到数据库,一旦用错细节
develophper

直接访问mysql和通过网络通过“ localhost”访问mysql有区别。您需要在本地主机位置上明确授予权限。
philwinkle

2
记住并运行:flush privileges在您授予命令之后
Matthew Haworth

5

如果local.xml被覆盖,请在您的站点中搜索包含的文件<username>sitename</username>。对于这种工作,我更喜欢ack

ack --xml "<username>.*sitename.*</username>" app/

...甚至只是:

ack sitename app/

4

尝试清除缓存,也许您正在使用第三方缓存层,请禁用它们。最后一个选择是重命名app / etc / local.xml并打开网站,Magento应该运行安装过程,在安装过程中提供来自local.xml的旧加密密钥。


1

所有其他答案都是缩小问题可能性的所有可能的好方法。为此,我感到他们每个人都应该得到投票。他们没有直接解决我的问题,所以我觉得我应该礼貌地给自己一个答案,也因为很多人都将wordpress与magento结合使用。

该特定站点使用wordpress作为模块。该模块包含数据库凭据以及常用的magento app / etc / local.xml。我不知道这个模块几乎在整个网站上都呈现出来,并且与数据库有关。结果,如果不更改此处的详细信息,就无法查看站点。


0

我遇到了同样的问题,以下为我解决了这个问题:

  1. 下载Magento的原始版本
  2. 备份您的应用程序/等(例如:应用程序/ _etc)
  3. 从原始的Magento文件夹上传原始的应用程序/等
  4. 转到您的站点并执行Magento安装过程,我使用了原始数据库名称,数据库设置(用户/密码)和加密密钥。
  5. 将您的app / etc / modules上载到新的ETC文件夹中
  6. 安装后,我可以登录并清除缓存。该网站再次像以前一样工作。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.