【问题标题】:Password reset but Dupal doesn't have pass field in the users table?密码重置但 Dupal 在用户表中没有 pass 字段?
【发布时间】:2017-10-31 18:05:38
【问题描述】:

我正在尝试reset the admin password for a Drupal account,但users 表中似乎没有pass 字段。

UPDATE users
SET pass ='$S$CTo9G7Lx28rzCfpn4WB2hUlknDKv6QTqHaf82WLbhPT2K5TzKzML'
WHERE uid = 1;

相反,它在表users_field_data 中有一个pass 字段。这对 Drupal 意味着什么?

我在users_field_data 表上找不到任何文档。

我在 Drupal VERSION = '8.2.7';

mysql> show create table users;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                    |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| users | CREATE TABLE `users` (
  `uid` int(10) unsigned NOT NULL,
  `uuid` varchar(128) CHARACTER SET ascii NOT NULL,
  `langcode` varchar(12) CHARACTER SET ascii NOT NULL,
  PRIMARY KEY (`uid`),
  UNIQUE KEY `user_field__uuid__value` (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='The base table for user entities.' |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

【问题讨论】:

    标签: authentication drupal change-password


    【解决方案1】:

    Drupal 7 的schemausers 表中肯定有一个pass 字段。

    您可能希望在 pass 字段周围使用反引号:

    UPDATE users
    SET `pass` ='$S$CTo9G7Lx28rzCfpn4WB2hUlknDKv6QTqHaf82WLbhPT2K5TzKzML'
    WHERE uid = 1;
    

    如果这不起作用,并且仔细检查 MySQL 客户端中的表并没有显示字段,我会担心有人无意中删除了它。不过,在 Drupal 8 中可以看到这种数据库结构,因此请仔细检查您的版本。

    【讨论】:

    • 看到我的更新了吗?我把它扔了,没有通过。它在users_field_data 表中。这不是全新安装,而是生产产品,我想知道这对产品意味着什么或发生了什么定制
    • Drupal 8 似乎使用了users_field_data 模型,所以如果您的管理员说您使用的是 Drupal 7,就会发生一些非常棘手的事情。
    • 我刚刚看到它,因为它在 CHANGELOG 中,也许我正在使用 Drupal 8。找出我正在使用的 Drupal 版本的最佳方法是什么?
    • 我看到了我在 const VERSION = '8.2.7';
    【解决方案2】:

    您正在使用 Drupal 8

    Drupal 7 和 Drupal 8 有不同的表和架构。

    这些说明适用于 Drupal 7。如果 users 表中没有 pass 而您有一个 users_field_data you need to find the other instructions for Drupal 8.

    提示很简单

    1. 您正在更改表名,users_field_data 实际上是正确的表。

      UPDATE users_field_data
      SET pass= hash_generated_with_password-hash.sh
      WHERE uid = 1;
      
    2. 另外你必须删除缓存

      DELETE FROM cache_entity
      WHERE cid = 'values:user:1';
      

    【讨论】:

      【解决方案3】:

      尝试使用 drush 重置密码

      drush upwd USERNAME PASSWORD
      

      【讨论】:

        猜你喜欢
        • 2016-01-07
        • 1970-01-01
        • 2016-06-22
        • 2016-11-15
        • 1970-01-01
        • 2017-11-12
        • 1970-01-01
        • 2019-03-08
        • 1970-01-01
        相关资源
        最近更新 更多