Відповідно до MongoDB BOL
Enable Auth При ввімкненому контролі доступу переконайтеся, що у базі даних адміністратора є користувач із роллю userAdmin або userAdminAnyDatabase Цей користувач може адмініструвати користувача та ролі, такі як: створювати користувачів, надавати або відкликати ролі від користувачів, а також створювати або змінювати митні ролі.
Ви можете створювати користувачів до або після ввімкнення контролю доступу. Якщо ви ввімкнули контроль доступу перед створенням будь-якого користувача, MongoDB забезпечує виняток localhost, який дозволяє створити адміністратора користувача в базі даних адміністратора. Після створення ви повинні зареєструватися як адміністратор користувача, щоб створити додаткових користувачів у міру необхідності.
Порядок
Ось наступна процедура, за допомогою якої ви можете Enable Auth
. Спочатку додається адміністратор користувача до екземпляра MongoDB, який працює без контролю доступу, а потім дозволяє контролю доступу.
mongod --port 27017 --dbpath /data/db1
C:\Program Files\MongoDB\Server\3.6\bin>mongod --auth --port 27017 --dbpath /data/db1
2018-01-02T00:04:21.038-0700 I CONTROL [initandlisten] MongoDB starting : pid=8048 port=27017 dbpath=/data/db1 64-bit host=ACSD140013
2018-01-02T00:04:21.038-0700 I CONTROL [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] db version v3.6.0
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] git version: a57d8e71e6998a2d0afde7edc11bd23e5661c915
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1u-fips 22 Sep 2016
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] allocator: tcmalloc
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] modules: none
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] build environment:
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] distmod: 2008plus-ssl
2018-01-02T00:04:21.040-0700 I CONTROL [initandlisten] distarch: x86_64
2018-01-02T00:04:21.040-0700 I CONTROL [initandlisten] target_arch: x86_64
2018-01-02T00:04:21.040-0700 I CONTROL [initandlisten] options: { net: { port: 27017 }, security: { authorization: "enabled" }, storage: { dbPath: "/data/db1" } }
2018-01-02T00:04:21.044-0700 I - [initandlisten] Detected data files in /data/db1 created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2018-01-02T00:04:21.044-0700 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=1508M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2018-01-02T00:04:21.557-0700 I STORAGE [initandlisten] WiredTiger message [1514876661:556397][8048:140720576475904], txn-recover: Main recovery loop: starting at 1/35584
2018-01-02T00:04:21.677-0700 I STORAGE [initandlisten] WiredTiger message [1514876661:676479][8048:140720576475904], txn-recover: Recovering log 1 through 2
2018-01-02T00:04:21.792-0700 I STORAGE [initandlisten] WiredTiger message [1514876661:792524][8048:140720576475904], txn-recover: Recovering log 2 through 2
2018-01-02T00:04:23.008-0700 I CONTROL [initandlisten]
2018-01-02T00:04:23.008-0700 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
2018-01-02T00:04:23.009-0700 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten]
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten]
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten] ** WARNING: The file system cache of this machine is configured to be greater than 40% of the total memory. This can lead to increased memory pressure and poor performance.
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten] See http://dochub.mongodb.org/core/wt-windows-system-file-cache
2018-01-02T00:04:23.012-0700 I CONTROL [initandlisten]
2018-01-02T10:04:23.320+0300 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db1/diagnostic.data'
2018-01-02T10:04:23.322+0300 I NETWORK [initandlisten] waiting for connections on port 27017
2018-01-02T10:05:09.214+0300 I NETWORK [listener] connection accepted from 127.0.0.1:64482 #1 (1 connection now open)
Підключіться до екземпляра
Наприклад, підключіть mongo
оболонку до екземпляра.
mongo --port 27017
Вкажіть додаткові параметри командного рядка, якщо потрібно, щоб підключити mongo
оболонку до розгортання, наприклад --host
.
Створіть адміністратора користувача
Наприклад, тут, у базі даних адміністратора, додайте користувача з userAdminAnyDatabase
роллю. Наприклад, наступне створює користувача myUserAdmin
в базі даних адміністратора :
> use admin
switched to db admin
> use admin
switched to db admin
> db.createUser(
... {
... user: "mongoadmin",
... pwd: "mongoadmin",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "mongoadmin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
ПРИМІТКА. База даних, де ви створюєте користувача (у цьому прикладі адміністратора), є базою даних автентифікації користувача. Хоча користувач отримав автентифікацію на цю базу даних, користувач може мати ролі в інших базах даних; тобто база даних аутентифікації користувача не обмежує привілеї користувача.
Від'єднайте mongo
оболонку.
Перезапустіть екземпляр MongoDB за допомогою контролю доступу
Перезапустіть mongod
екземпляр за допомогою параметра --auth командного рядка або, якщо використовується файл конфігурації, налаштування security.authorization .
mongod --auth --port 27017 --dbpath /data/db1
Клієнти, які підключаються до цього примірника, тепер повинні зареєструватися як MongoDB
користувач. Клієнти можуть виконувати дії лише у відповідності до призначених їм ролей.
Підключіться та автентифікуйтесь як адміністратор користувача
Використовуючи mongo
оболонку, ви можете:
Підключіться до автентифікації шляхом передачі облікових даних користувачів або
Спочатку підключіться до аутентифікації, а потім
видайте метод db.auth () для аутентифікації.
Для автентифікації під час з'єднання Запустіть mongo
оболонку з параметрів -u <username>, -p <password>, and the --authenticationDatabase <database>
командного рядка:
C:\Program Files\MongoDB\Server\3.6\bin>mongo --port 27017 -u "mongoadmin" -p "mongoadmin" --authenticationDatabase "admin"
MongoDB shell version v3.6.0
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.6.0
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
2018-01-02T10:05:09.248+0300 I STORAGE [main] In File::open(), CreateFileW for 'H:\\.mongorc.js' failed with Access is denied.
Для автентифікації після підключення
Підключіть mongo
оболонку до mongod
:
mongo --port 27017
Перейдіть до бази даних аутентифікації (у цьому випадку адміністратора) та використовуйте метод db.auth (,) для автентифікації:
> use admin
switched to db admin
> db.auth("mongoadmin","mongoadmin")
1
>