MongoDB команды управления пользователями
Создать нового пользователя - команда createUser
Команда createUser используется для создания нового пользователя в базе данных, в которой вы запускаете команду. Команда createUser возвращает сообщение об ошибке, если пользователь уже существует.
Имя базы данных должно быть упомянуто во время создания нового пользователя с действием createUser.
Для предоставления роли другому пользователю необходимо указать действие grantRole в базе данных роли.
Если у вас есть роль userAdmin или userAdminAnyDatabase, или если вы прошли аутентификацию с использованием исключения localhost, у вас есть эти действия.
Синтаксис:
{createUser: "<имя>", pwd: "<пароль открытого текста>", customData: {<любая информация>}, роли: [ {role: "<role>", db: "<database>"} | "<Роль>", ... ], writeConcern: {<write беспокойство>} }
Параметры:
название | Тип | Описание |
---|---|---|
Создать пользователя | строка | Имя нового пользователя. |
PWD | строка | Пароль пользователя. |
CustomData | документ | Необязательный. |
роли | массив | Роли, предоставленные пользователю |
writeConcern | документ | Необязательный. Забота о записи дает краткую гарантию того, что MongoDB предоставляет во время отчета об успешности операции записи. w: 1 в качестве записи по умолчанию. |
Предположим, что наша база данных называется userdetails и есть следующий документ:
db.userdetails.insert({"user_id" : "user1","password" :"1a2b3c" ,
"date_of_join" : "16/10/2010" ,"education" :"M.C.A." ,
"profession" : "CONSULTANT","interest" : "MUSIC",
"community_name" :["MODERN MUSIC", "CLASSICAL MUSIC","WESTERN MUSIC"],
"community_moder_id" : ["MR. Alex","MR. Dang","MR Haris"],
"community_members" : [700,200,1500],
"friends_id" : ["kumar","harry","anand"],
"ban_friends_id" :["Amir","Raja","mont"]});
пример
Следующая команда createUser создает пользователя myNewuser в базе данных userdetails. Эта команда предоставляет myNewuser роли clusterAdmin и readAnyDatabase в базе данных администратора и роль readWrite в базе данных userdetails:
db.getSiblingDB("userdetails").runCommand( { createUser: "myNewuser",
pwd: "thisPassword",
customData: { profession : "DOCTOR" },
roles: [
{ role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"
],
writeConcern: { interest : "SPORTS" }
} )
Пример: создать больше пользователей
Следующая команда createUser создает пользователя myNewuser1 в базе данных userdetails. Команда дает myNewuser1 clusterAdmin и роль readWrite в базе данных userdetails:
db.getSiblingDB("userdetails").runCommand( { createUser: "myNewuser1",
pwd: "thisPassword",
customData: { profession : "DOCTOR" },
roles: [
{ role: "clusterAdmin", db: "admin" },
"readWrite"
],
writeConcern: { interest : "SPORTS" }
} )
Если мы неверно введем в приведенном выше операторе myNewuser вместо myNewuser1, то в качестве вывода появится следующее сообщение об ошибке, поскольку пользователь уже существует
{
"ok" : 0,
"errmsg" : "User \"[email protected]\" already exists",
"code" : 11000
}
Чтобы увидеть информацию о пользователе - команда usersInfo
Команда usersInfo возвращает информацию об одном или нескольких пользователях.
Синтаксис:
{usersInfo: {user: <name>, db: <db>}, showCredentials: <Boolean>, showPrivileges: <Boolean> }
Параметры:
название | Тип | Описание |
---|---|---|
usersInfo | различный | Пользователь (-и) о том, кому возвращать информацию. |
showCredentials | логический | Необязательный. Если в поле установлено значение true, будет отображаться хэш пароля пользователя, по умолчанию оно равно false. |
showPrivileges | логический | Необязательный. Если в поле установлено значение true, чтобы показать полный набор привилегий пользователя, включая расширенную информацию для унаследованных ролей, по умолчанию оно равно false. |
Пример для просмотра конкретного пользователя
Чтобы просмотреть информацию, но не учетные данные, для пользователя «myNewuser», определенного в базе данных «userdetails», выполните следующую команду:
db.runCommand(
{
usersInfo: { user: "myNewuser", db: "userdetails" },
showPrivileges: false
}
)
Выход:
{ "пользователи": [ { "_id": "userdetails.myNewuser", "пользователь": "myNewuser", "db": "userdetails", "customData": { "профессия": "ДОКТОР" }, "роли": [ { "role": "clusterAdmin", "db": "admin" }, { "role": "readAnyDatabase", "db": "admin" }, { "role": "readWrite", "db": "userdetails" } ] } ], "хорошо": 1 }
Пример для просмотра нескольких пользователей
Чтобы просмотреть информацию для нескольких пользователей, используйте массив с дополнительными полями showPrivileges и showCredentials или без них. Например:
db.runCommand( { usersInfo: [ { user: "myNewuser", db: "userdetails" },
{ user: "myNewuser1", db: "userdetails" } ],
showPrivileges: false
} );
Выход:
{ "пользователи": [ { "_id": "userdetails.myNewuser", "пользователь": "myNewuser", "db": "userdetails", "customData": { "профессия": "ДОКТОР" }, "роли": [ { "role": "clusterAdmin", "db": "admin" }, { "role": "readAnyDatabase", "db": "admin" }, { "role": "readWrite", "db": "userdetails" } ] }, { "_id": "userdetails.myNewuser1", "пользователь": "myNewuser1", "db": "userdetails", "customData": { "профессия": "инженер" }, "роли": [ { "role": "clusterAdmin", "db": "admin" }, { "role": "readWrite", "db": "userdetails" } ] } ], "хорошо": 1 }
Пример просмотра всех пользователей для базы данных
Для просмотра всех пользователей в базе данных можно использовать следующую команду:
db.runCommand( { usersInfo: 1 , showCredentials : false} );
Выход:
{ "пользователи": [ { "_id": "userdetails.myNewuser", "пользователь": "myNewuser", "db": "userdetails", "customData": { "профессия": "ДОКТОР" }, "роли": [ { "role": "clusterAdmin", "db": "admin" }, { "role": "readAnyDatabase", "db": "admin" }, { "role": "readWrite", "db": "userdetails" } ] }, { "_id": "userdetails.myNewuser1", "пользователь": "myNewuser1", "db": "userdetails", "customData": { "профессия": "инженер" }, "роли": [ { "role": "clusterAdmin", "db": "admin" }, { "role": "readWrite", "db": "userdetails" } ] } ], "хорошо": 1 }
Если showCredential имеет значение true, вывод будет следующим:
{
"users" : [
{
"_id" : "userdetails.myNewuser",
"user" : "myNewuser",
"db" : "userdetails",
"credentials" : {
"MONGODB-CR" : "28fcdbb5d879ccf086bd6404bd06b230"
},
"customData" : {
"profession" : "DOCTOR"
},
"roles" : [
{
"role" : "clusterAdmin",
"db" : "admin"
},
{
"role" : "readAnyDatabase",
"db" : "admin"
},
{
"role" : "readWrite",
"db" : "userdetails"
}
]
},
{
"_id" : "userdetails.myNewuser1",
"user" : "myNewuser1",
"db" : "userdetails",
"credentials" : {
"MONGODB-CR" : "9b08b3a68eef34d462bdb2e5b2037438"
},
"customData" : {
"profession" : "Engineer"
},
"roles" : [
{
"role" : "clusterAdmin",
"db" : "admin"
},
{
"role" : "readWrite",
"db" : "userdetails"
}
]
}
],
"ok" : 1
}
Обновление информации о пользователе - команда updateUser
Команда updateUser обновляет профиль пользователя в конкретной базе данных. Эта команда полностью заменяет данные значений предыдущего поля. Для обновления пользователя необходимо указать поле updateUser и хотя бы одно другое поле, отличное от writeConcern.
Синтаксис:
{updateUser: "<имя пользователя>", pwd: "<пароль открытого текста & glt;", customData: {<любая информация>}, роли: [ {role: "<role>", db: "<database>"} | "<Роль>", ... ], writeConcern: {<write беспокойство>} }
Параметры:
название | Тип | Описание |
---|---|---|
updateUser | строка | Имя пользователя для обновления. |
PWD | строка | Необязательный. Пароль пользователя. |
CustomData | документ | Необязательный. Любая произвольная информация. |
роли | массив | Необязательный. Роли, предоставленные пользователю. Обновление массива ролей заменяет значения предыдущего массива. |
writeConcern | документ | Необязательный. Забота о записи дает краткую гарантию того, что MongoDB предоставляет во время отчета об успешности операции записи. w: 1 в качестве записи по умолчанию. |
пример
Здесь ниже пользователь myNewuser в базе данных userdetails со следующей информацией о пользователе:
{
"users" : [
{
"_id" : "userdetails.myNewuser",
"user" : "myNewuser",
"db" : "userdetails",
"customData" : {
"profession" : "DOCTOR"
},
"roles" : [
{
"role" : "clusterAdmin",
"db" : "admin"
},
{
"role" : "readAnyDatabase",
"db" : "admin"
},
{
"role" : "readWrite",
"db" : "userdetails"
}
]
}
]
}
Следующая команда updateUser полностью заменяет данные customData и роли пользователя:
use userdetails
db.runCommand( { updateUser : "myNewuser",
customData : { profession : "Classical Music" },
roles : [
{ role : "read", db : "assets" }
]
} )
Вот вывод после обновления пользователя:
> db.runCommand(
{
usersInfo: { user: "myNewuser", db: "userdetails" },
showPrivileges: false
}
);
{
"users" : [
{
"_id" : "userdetails.myNewuser",
"user" : "myNewuser",
"db" : "userdetails",
"customData" : {
"profession" : "Classical Music"
},
"roles" : [
{
"role" : "read",
"db" : "assets"
}
]
}
],
"ok" : 1
}
Чтобы удалить информацию о пользователе - команда dropUser
Команда dropUser используется для удаления пользователя из базы данных концерна.
Синтаксис:
{ dropUser: "<пользователь>", writeConcern: {<write беспокойство>} }
Параметры:
название | Тип | Описание |
---|---|---|
dropUser | строка | Имя пользователя для удаления. Эта команда будет работать только с базой данных, в которой находится пользователь. |
writeConcern | документ | Необязательный. Забота о записи дает краткую гарантию того, что MongoDB предоставляет во время отчета об успешности операции записи. w: 1 в качестве записи по умолчанию. , |
пример
Если мы хотим удалить пользователя myNewuser1 из базы данных userdetails, можно использовать следующую последовательность операций в оболочке mongo.
> use userdetails
switched to db userdetails
> db.runCommand( { dropUser: "myNewuser1"} );
{ "ok" : 1 }
Теперь, если мы хотим просмотреть всех пользователей для базы данных userdetails, появится следующий результат, где пользователь myNewuser1 будет исключен.
> db.runCommand( { usersInfo: 1 , showCredentials : false} );
{
"users" : [
{
"_id" : "userdetails.myNewuser",
"user" : "myNewuser",
"db" : "userdetails",
"customData" : {
"profession" : "Classical Music"
},
"roles" : [
{
"role" : "read",
"db" : "assets"
}
]
}
],
"ok" : 1
}
Чтобы удалить всю информацию о пользователях - команда dropAllUsersFromDatabase
Эта команда удаляет всех пользователей из базы данных концерна, в которой вы ее выполняете.
Синтаксис:
{ dropAllUsersFromDatabase: 1, writeConcern: {<write беспокойство>} }
Параметры:
название | Тип | Описание |
---|---|---|
dropAllUsersFromDatabase | целое число | Укажите 1, чтобы удалить всех пользователей из текущей базы данных. |
writeConcern | документ | Необязательный. Забота о записи дает краткую гарантию того, что MongoDB предоставляет во время отчета об успешности операции записи. w: 1 в качестве записи по умолчанию. |
пример
Если мы хотим удалить пользователя myNewuser1 из базы данных userdetails, можно использовать следующую последовательность операций в оболочке mongo.
> use userdetails;
switched to db userdetails
> db.runCommand( { dropAllUsersFromDatabase: 1, writeConcern: { w: "majority" }});
Вот вывод
{"n": 1, "хорошо": 1}
Это означает, что поле n в документе результатов показывает количество удаленных пользователей, здесь 1 пользователь был удален.
Теперь, если мы хотим просмотреть информацию о пользователе для базы данных userdetails, появится следующий результат.
> db.runCommand( { usersInfo: 1 , showCredentials : false} );
{ "users" : [ ], "ok" : 1 }
Предоставление дополнительных ролей пользователю - команда grantRolesToUser
Эта команда предоставляет дополнительные роли пользователю.
Синтаксис:
{grantRolesToUser: "<пользователь>", Роли: [<role>], writeConcern: {<write беспокойство>} }
Параметры:
название | Тип | Описание |
---|---|---|
grantRolesToUser | строка | Имя пользователя для предоставления дополнительных ролей. |
роли | массив | Массив дополнительных ролей для предоставления пользователю. |
writeConcern | документ | Необязательный. Забота о записи дает краткую гарантию того, что MongoDB предоставляет во время отчета об успешности операции записи. w: 1 в качестве записи по умолчанию. |
пример
Предоставлено пользователю myNewuser2 в базе данных userdetails со следующими ролями:
{
"_id" : "userdetails.myNewuser2",
"user" : "myNewuser2",
"db" : "userdetails",
"customData" : {
"profession" : "painter"
},
"roles" : [
{
"role" : "read",
"db" : "usertransact"
},
{
"role" : "readWrite",
"db" : "userdetails"
}
]
}
Следующая операция grantRolesToUser дает myNewuser2 роль чтения в базе данных usertransact и роль readWrite в базе данных userdetails.
{
"_id" : "userdetails.myNewuser2",
"user" : "myNewuser2",
"db" : "userdetails",
"customData" : {
"profession" : "painter"
},
"roles" : [
{
"role" : "read",
"db" : "usertransact"
},
{
"role" : "read",
"db" : "useraccount"
},
{
"role" : "readWrite",
"db" : "userdetails"
}
]
};
Отозвать роли у пользователя - команда revokeRolesFromUser
Эта команда используется для удаления одной или нескольких ролей от пользователя в базе данных, где роли существуют.
Синтаксис:
{revokeRolesFromUser: "<пользователь>", роли: [ {role: "<role>", db: "<database>"} | "<Роль>", ... ], writeConcern: {<write беспокойство>} }
Параметры:
название | Тип | Описание |
---|---|---|
revokeRolesFromUser | строка | Пользователь для удаления ролей из. |
роли | массив | Роли, которые нужно отозвать у пользователя. |
writeConcern | документ | Необязательный. Забота о записи дает краткую гарантию того, что MongoDB предоставляет во время отчета об успешности операции записи. w: 1 в качестве записи по умолчанию. |
пример
Предоставлено пользователю myNewuser2 в базе данных userdetails со следующими ролями:
{
"_id" : "userdetails.myNewuser2",
"user" : "myNewuser2",
"db" : "userdetails",
"customData" : {
"profession" : "painter"
},
"roles" : [
{
"role" : "read",
"db" : "usertransact"
},
{
"role" : "read",
"db" : "useraccount"
},
{
"role" : "readWrite",
"db" : "userdetails"
}
]
};
Чтобы удалить две роли пользователя, такие как роль чтения в базе данных usertransact и роль readWrite в базе данных userdetails, можно использовать следующую последовательность команд.
use userdetails;
db.runCommand( { revokeRolesFromUser: "myNewuser2",
roles: [
{ role: "read", db: "usertransact" },
"readWrite"
],
writeConcern: { w: "majority" }
} );
Пользователь myNewuser2 в базе данных userdetails теперь имеет только одну оставшуюся роль:
{
"_id" : "userdetails.myNewuser2",
"user" : "myNewuser2",
"db" : "userdetails",
"customData" : {
"profession" : "painter"
},
"roles" : [
{
"role" : "read",
"db" : "useraccount"
}
]
}
Предыдущая: метод курсора MongoDB count ()
Далее: Команды аутентификации
Новый контент: Composer: менеджер зависимостей для PHP , R программирования