кодесурса
«MongoDB«SQL

MongoDB команды управления пользователями

script1adsense2code
script1adsense3code

Создать нового пользователя - команда 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code