在我本地安装Magento后,我忘记了管理员密码。

22
在我的本地机器上安装Magento后,我忘记了给自己的管理员账号设置的密码。现在我无法登录到管理员区域,请问如何重置密码?
我已经阅读了这篇文章:http://www.atwix.com/magento/reset-admin-password-mysql/,但是对我来说并没有用。可能是我没有理解清楚。
请帮助我,我是一个Magento的初学者。

你找到了salt变量的正确值吗? - RST
在这篇文章中,您没有理解到什么? - Mufaddal
1
我找到了解决方案app/code/core/Mage/Core/Model/Session/Abstract/Varien.php我们必须注释掉第89、90、91行。 - Sujith Wayanad
无法工作 @SujithWayanad - ahnbizcad
15个回答

31

前往:

1 - 登录PhpMyadmin。

2 - 进入Magento的数据库。

3 - 进入admin_user表格并编辑表格。

4 - 输入所需的“密码”,从函数下拉菜单中选择MD5(重要)。

此方法适用于CE和EE的最新版本(已在最新版本上进行了测试),无需更改核心文件。


我已经尝试过了,我认为在登录后它是有效的,因为我没有收到错误消息,但页面重定向到相同的登录页面,而不是管理员页面。 - Yavana
4
如果您正在使用WAMP本地机器,需要在app/code/core/Mage/Core/Model/Session/Abstract/Varien.php文件中注释掉所有与$cookieParams有关的行。(对于Magento EE 1.13来说,这是第88至108行) - Emil Stewart
1
这种方法在新版本的magento中不再适用。 - Tarmo Saluste
@EmilStewart:谢谢,这才是真正的答案。在新版本中运行良好。 - dipak_pusti

21

这将被证明是一个很好的资源阅读:http://www.magentocommerce.com/wiki/recover/resetting-admin-password


SELECT * FROM admin_user;

首先,在提供的列表中找到您想要修改的用户名 - 在本例中为“admin”。然后,要更新密码,请键入:

UPDATE admin_user SET password=CONCAT(MD5('qXpassword'), ':qX') WHERE username='admin';

“qX”将被更改为您想要的任何内容,同样适用于“password”。


7
进一步澄清一下:qX将是盐,而password将成为最终密码。 - Enrique
1
需要注意的是,在CE的1.8版本和1.9版本之间(在EE中可能是1.3到1.4),哈希长度已从2个字符(如上例所示)增加到32个字符。 - carbide20

10

大多数情况下,当我们在本地计算机(XAMPP、WAMPP)安装Magento Community时,从后端登录管理员帐户时可能会出现错误。系统将提示我们输入错误的密码,但这不是真相。

当我遇到这个问题时,我尝试通过以下方法重置密码(在SQLyog中)。

UPDATE admin_user 
SET password=CONCAT(MD5('qXpassword'), ':qX') 
WHERE username='admin';

“密码”应该设置为您想要的新密码,“qX”可以是任意您喜欢的随机字符。

但我们仍然无法登录。起初,我以为这种方法是错误的方法。尽管“管理员”密码肯定已更改。但为什么我们仍然无法登录呢?

也许我们已经输入了正确的用户名和密码,但仍无法登录。

使用Notepad ++打开和编辑核心文件:app/code/core/Mage/Core/Model/Session/Abstract/Varien.php,在您的Magento目录中将以下行注释掉:

$cookieParams = array(
            'lifetime' => $cookie->getLifetime(),
            'path'     => $cookie->getPath() //,
            // 'domain'   => $cookie->getConfigDomain(),
            // 'secure'   => $cookie->isSecure(),
            // 'httponly' => $cookie->getHttponly()
        );

请再试一次,你应该可以从后台以管理员身份登录。

问题在于本地主机或“127.0.0.1”不是真正的域名,浏览器只允许真正的域名存储cookie,这就是为什么登录会停止并显示无效的用户名或密码。


1
太棒了!谢谢!我已经多次更改和重新安装Magento,只为找到这个解决方案。该死! - KD.
这对生产来说是个不好的做法吗?你需要在开发和生产之间来回切换这些注释吗?有没有更可持续的方法? - ahnbizcad
对我来说仍然无法工作。我只得到“访问被拒绝”的消息。当它是无效的用户名或密码时,它会告诉我那个错误消息,所以当它说“访问被拒绝”时,我的凭据是正确的。额外的权限在哪里设置? - ahnbizcad
当我进行初始的Magento设置时,我相信我创建了一个管理员用户,但现在admin_user表中没有任何条目。我手动添加了一个,但仍然无效。我确保为密码字段使用了md5哈希函数。是否还有其他必要的字段? - ahnbizcad
我使用没有盐的MD5,并像你一样更改了Varien.php,然后它就可以工作了。 - Duc Tran

7
我通常的做法如下:
将以下代码片段添加到您的login.phtml模板中 app/design/adminhtml/default/default/template/login.phtml
Mage::getSingleton('core/session', array('name' => 'adminhtml'));
$user = Mage::getModel('admin/user')->loadByUsername('YOUR_USERNAME');
$session = Mage::getSingleton('admin/session');
$session->setUser($user);

将“YOUR_USERNAME”替换为您的管理员用户名。 转至登录页面(yourdomain.com/admin),现在您的管理员会话已设置。 当您再次访问登录页面时,应自动登录。现在您可以在“系统>权限>用户”中重置密码。 不要忘记在登录后从模板中删除片段。 这可能不是最好的答案,但对我来说一直有效。

1
从避免直接操作数据库的角度来看,这是最佳答案。 - Milind R
@MilindR 如果编辑一个难以记忆、位置隐蔽的文件,需要知道 DSL 的话,那么使用数据库进行编辑会更好吧?编辑数据库更加直观,需要的额外知识也更少。 - ahnbizcad
@ahnbizcad "就避免直接操作数据库而言" - Chris

5
在有整个框架可用的情况下,深入数据库是一个可怕的想法。以下是更改管理员密码的正确方法:
创建一个名为“reset-password.php”的文件,并将其放置在站点根目录中:
<?php

chdir(dirname(__FILE__));
require 'app/Mage.php';
Mage::app('admin')->setUseSessionInUrl(false);
umask(0);

$user = Mage::getModel('admin/user')
    ->load('admin', 'username')
    ->setNewPassword('mynewpassword')
    ->save();

在浏览器中请求 /reset-password.php,Magento框架应该会将admin的密码更新为mynewpassword

我不知道在哪里放置那段代码。应该从根目录指定位置,而不是随意假定的未提及的基础目录。 - ahnbizcad
它会告诉你是否需要手动运行吗?不会。 - ahnbizcad
正如文章所述,首先复制cron.php文件。 - Saustrup
1
更新了答案以反映文件名、位置和内容。 - Saustrup
这一定是最简单的方法,而且它适用于最新版本。谢谢! - Binod Kalathil

4
这个解决方案适用于所有版本的Magento。将以下内容临时添加到index.php的末尾即可。
$user = Mage::getModel('admin/user')->loadByUsername('your_username');
$user->setPassword('new_password');
$user->save();

您的新密码已保存。现在,请删除index.php末尾的3行。

祝您有美好的一天。


无法工作。密码已更改。但是登录未完成。 - Prashant Tapase

2

要重置管理员密码,您需要创建一个文件并将以下代码复制到该文件中,然后将其上传到Magento根目录。

<?php
require_once 'app/Mage.php';
umask(0);
/* not Mage::run(); */
Mage::app('default');

## For magento1.7 or Earlier var
//$_HASH_SALT_LENGTH = 2;
## For magento1.8 and magento1.9
$_HASH_SALT_LENGTH = 32;

#Generate admin password
$password = "admin1234";
echo $adminPass = Mage::helper('core')->getHash($password, $_HASH_SALT_LENGTH);
## And reset password field in "admin_user" table

?>

就这样,现在您可以使用此给定的密码从管理员登录。

有关重置管理员密码的详细信息,请访问我的博客链接http://www.scriptlodge.com/how-to-reset-admin-password-in-magento/


2
如果您有phpMyAdmin的访问权限,以下是重置您的密码的步骤。 首先,打开phpMyAdmin。 从左侧的边栏中单击Magento的数据库名称。 单击SQL选项卡并在文本框中键入以下内容:
UPDATE `admin_user` SET `password` = MD5('PASSWORD') WHERE `username` = 'USERNAME';

你需要用正确的信息替换大写字母形式的值:

USERNAME - 你要更新密码的用户 PASSWORD - 你想要使用的新密码 例如,如果我的用户名是admin,我想将密码重置为123456,我会这样做:

UPDATE `admin_user` SET `password` = MD5('123456') WHERE `username` = 'admin';

如果您不知道要更新的用户的名称,可以通过单击侧边栏中的admin_user链接,然后选择浏览选项卡来查看所有用户。用户名列出了可用用户的列表。请注意保留HTML标记。

1

3个步骤,无需使用MySql

仅通过ftp访问登录magento管理员账户有一点棘手。

步骤1:

打开位于app\code\core\Mage\Admin\Model\User.php的Mage_Admin_Model_User类。

步骤2:

接下来,在第225行左右找到authenticate()函数。在authenticate函数内部,写入了以下代码:

$this->loadByUsername($username);

在此之后,您需要添加以下行:return true;

$this->loadByUsername($username);
return true;

步骤 3:

就是这样,现在你可以使用任何密码登录管理员账户。由于我们跳过了密码检查代码,因此可以使用任何密码登录,然后从

系统 -> 权限 -> 用户

更改管理员的密码。


我的Linux根目录中没有“app/”。 - ahnbizcad
1
@ahnbizcad 不在 Linux 根目录中。请查看您的 Magento 根目录。 - Vinod VT
有很多代码在它之后。而且函数的结尾有一个返回语句。我不知道这是否已经过时了。 - ahnbizcad
1
只需在User.php中搜索$this->loadByUsername($username);,并将return true放置在该行下方即可。 :) - Vinod VT

0
<?php
$pass = "12345678";
  $salt = "EI";
  echo md5($salt.$pass).":".$salt;
?>
Update 'admin_user' table password field with the output of above program.

Follow below link for more information...
[http://www.atwix.com/magento/reset-admin-password-mysql][1]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接