Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cách đổi tên người dùng (username) trong MongoDB

Sử dụng update() và $set trên collection hệ thống system.users. Cú pháp:

db.system.users.update(
    {"user": "yourOldUserName"},
    {$set: {"user": "yourNewUserName"}}
);

Xem danh sách user hiện tại

> use admin;
switched to db admin
> db.getUsers();

Kết quả (ví dụ):

[
    { "_id": "admin.Chris", "user": "Chris", "db": "admin", "roles": [{ "role": "readWrite", "db": "test" }], "mechanisms": ["SCRAM-SHA-1", "SCRAM-SHA-256"] },
    { "_id": "admin.John", "user": "John", "db": "admin", "roles": [{ "role": "userAdminAnyDatabase", "db": "admin" }], "mechanisms": ["SCRAM-SHA-1", "SCRAM-SHA-256"] },
    { "_id": "admin.Robert", "user": "Robert", "db": "admin", "roles": [{ "role": "readWrite", "db": "sample" }], "mechanisms": ["SCRAM-SHA-1", "SCRAM-SHA-256"] }
]

Đổi tên user từ 'John' thành 'Larry'

> db.system.users.update({"user": "John"}, {$set: {"user": "Larry"}});
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

Xác thực user mới

> db.getUser('Larry');

Kết quả (lưu ý _id vẫn là admin.John):

{
    "_id": "admin.John",
    "user": "Larry",
    "db": "admin",
    "roles": [{ "role": "userAdminAnyDatabase", "db": "admin" }],
    "mechanisms": ["SCRAM-SHA-1", "SCRAM-SHA-256"]
}

User cũ không còn tồn tại

> db.getUser('John');

Kết quả: Null

Lưu ý quan trọng: _id của user không thay đổi (vẫn là admin.John). Cách này chỉ thay đổi trường user. MongoDB khuyến nghị dùng dropUser và createUser thay vì sửa trực tiếp system.users.