MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Свързване с бази данни MongoDB


Въведение

След като имате наличен MongoDB сървър, едно от първите и най-често срещани действия, които ще трябва да предприемете, е да се свържете с действителната база данни. Това изисква координация, за да се гарантира, че базата данни е конфигурирана по начин, който позволява на вашия клиент да се свърже и удостовери.

Това означава, че ще трябва да разберете как да се свържете с вашата база данни MongoDB, като предоставите местоположението на сървъра, параметрите на връзката и правилните идентификационни данни. В това ръководство ще се съсредоточим върху това как да се свържете с базата данни от страна на клиента с помощта на mongo MongoDB shell клиент, предназначен главно за интерактивни сесии с вашите бази данни.

В придружаващо ръководство можете да разберете как да конфигурирате настройките за удостоверяване на MongoDB, за да отговарят на вашите изисквания. Обмислете да прочетете и двете части за пълна картина на това как се прилага удостоверяването от гледна точка на двете страни.



Основна информация за mongo клиент

mongo client е JavaScript клиент на командния ред за свързване, контролиране и взаимодействие със сървъри на база данни MongoDB. В много отношения това е най-простият начин да се свържете и да започнете да използвате вашата база данни MongoDB, защото е включена в инсталацията на MongoDB и е достъпна на всички популярни платформи. mongo клиентът е особено полезен за извършване на първоначална конфигурация и за интерактивни сесии, при които искате да изследвате данните си или да повторите заявки въз основа на предварителни резултати.

Начинът, по който се свързвате с mongo shell зависи от конфигурацията на сървъра MongoDB и наличните опции за удостоверяване на акаунт. В следващите раздели ще разгледаме някои от основните опции за свързване. За по-голяма яснота ще направим разлика между локални и отдалечени връзки:

  • локална връзка :връзка, при която клиентът и екземплярът на MongoDB се намират на един и същ сървър
  • отдалечена връзка :където клиентът се свързва към мрежово достъпен екземпляр на MongoDB, работещ на различен компютър

Нека започнем със свързване към база данни от същия компютър.



Свързване към локална база данни с mongo

Без никакви аргументи, mongo команда се опитва да се свърже с локален екземпляр на MongoDB.

За да направи това, той се опитва да се свърже с порт 27017 на локалния loopback адрес:127.0.0.1:27017 . Това е един от интерфейсите, към които сървърите на MongoDB се свързват в конфигурацията си по подразбиране (MongoDB може също да бъде достъпен чрез файл на локален сокет).

Можете да се свържете с локален сървър на MongoDB, работещ с неговата конфигурация по подразбиране, като напишете:

mongo

При успешна връзка вероятно ще видите доста дълъг набор от съобщения, последвани от подкана за обвивка на MongoDB:

 MongoDB shell version v4.4.6 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("9cf2d126-d25f-4ed8-b159-ef3bba4fcc53") } MongoDB server version: 4.4.6 --- The server generated these startup warnings when booting:         2021-06-04T12:26:53.374+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem         2021-06-04T12:26:54.562+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted --- ---         Enable MongoDB's free cloud-based monitoring service, which will then receive and display         metrics about your deployment (disk utilization, CPU, operation statistics, etc).          The monitoring data will be available on a MongoDB website with a unique URL accessible to you         and anyone you share the URL with. MongoDB may use this information to make product         improvements and to suggest MongoDB products and deployment options to you.          To enable free monitoring, run the following command: db.enableFreeMonitoring()         To permanently disable this reminder, run the following command: db.disableFreeMonitoring() --- >

Резултатът показва журнали, генерирани от mongo команда при установяване на връзката, последвана от някои предупреждения, генерирани от сървъра на MongoDB при стартиране. И накрая, има известие за услуга за наблюдение на MongoDB, от която можете да изберете да се възползвате или деактивирате.

Едно от предупрежденията от сървъра MongoDB показва, че контролът на достъпа не е активиран в момента. Това е причината, поради която успяхме да се свържем, без да предоставяме идентификационни данни или други данни за удостоверяване.

Ако се свързвате с локален MongoDB сървър, който има е конфигуриран с контрол на достъпа, ще трябва да предоставите допълнителна информация за свързване. Ще трябва да предоставите поне потребителско име и парола, за да се свържете с помощта на свързания --username и --password опции:

mongo --username <mongo_username> --password

Поставяне на --password опция в края и липсата на вградена парола означава, че искате вместо това MongoDB да поиска парола. Това е по-сигурно от предоставянето на парола в самата команда, тъй като тя може да бъде видима или възстановима чрез история на обвивката, списъци с процеси и други механизми.

Сървърът MongoDB ще ви подкани за паролата на потребителя, преди да се свърже с базата данни:

MongoDB shell version v.4.4.6Enter password:

След успешно удостоверяване трябва да сте свързани към базата данни и да можете да продължите сесията си както обикновено.

Можете също да предоставите тази информация, като подадете низ за връзка, вместо да използвате --username и --password опции:

mongo "mongodb://<mongo_username>:@127.0.0.1"

Тъй като посочихме, че потребителят има парола с <username>: синтаксис, но не са предоставили такъв, mongo shell ще поиска паролата.

Като алтернатива, можете също да се удостоверите, след като се свържете с нормалния mongo команда с помощта на db.auth команда.

Първо, свържете се с базата данни MongoDB, без да предоставяте идентификационни данни:

mongo

Ще получите команден ред, както обикновено, но ако контролът на достъпа е активиран, няма да имате разрешение за извършване на много действия, докато не се удостоверите. Например, show dbs командата вероятно ще бъде празна, тъй като нямате достъп за заявка за наличните бази данни:

show dbs

За да удостоверите, първо изберете базата данни, в която е дефиниран вашият потребител. Най-често това ще бъде admin база данни:

use admin

След това използвайте db.auth() за да предоставите вашето потребителско име и да поискате подкана за парола:

db.auth({user: "<mongo_username>", passwordPrompt()})

Ще бъдете подканени за паролата на потребителския акаунт, както преди:

Enter password:

Ако успеете, сървърът ще изведе 1 :

Enter password:1

Вече ще имате редовен достъп на потребителя, който сте удостоверили като:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Можете да видите списъка с удостоверени потребители и роли, свързани с текущата връзка по всяко време, като напишете:

db.runCommand("connectionStatus")
{        "authInfo" : {                "authenticatedUsers" : [                        {                                "user" : "root",                                "db" : "admin"                        }                ],                "authenticatedUserRoles" : [                        {                                "role" : "userAdminAnyDatabase",                                "db" : "admin"                        },                        {                                "role" : "readWriteAnyDatabase",                                "db" : "admin"                        }                ]        },        "ok" : 1}


Свързване с отдалечена база данни

Ако искате да се свържете с отдалечена база данни MongoDB, ще трябва да предоставите някои допълнителни подробности, когато използвате mongo черупка.

По-конкретно, ще трябва да включите --host опция и евентуално --port опция, както и ако сървърът MongoDB слуша на порт, който не е по подразбиране. В почти всички случаи ще трябва да предоставите и --user и --password опции за удостоверяване и на отдалечения сървър.

Следователно основната структура на командата при свързване към отдалечена база данни MongoDB изглежда така:

mongo --host <mongo_server_address> --port <mongo_server_port> --user <mongo_username> --password

Както беше споменато в раздела за свързване към локална база данни, поставяне на --password опция в края и липсата на вградена парола означава, че искате mongo shell, за да поискате парола вместо това. Това е по-сигурно от предоставянето на парола в самата команда, тъй като тя може да бъде видима или възстановима чрез история на обвивката, списъци с процеси и други механизми.

Сървърът MongoDB ще ви подкани за паролата на потребителя, преди да се свърже с базата данни:

MongoDB shell version v.4.4.6Enter password:

След успешно удостоверяване трябва да сте свързани към базата данни и да можете да продължите сесията си както обикновено.

Можете също да предоставите тази информация, като предадете низ за връзка, вместо да използвате --host , --port , --username и --password опции:

mongo "mongodb://<mongo_username>:@<mongo_server_address>:<mongo_server_port>"

Тъй като посочихме, че потребителят има парола с <username>: синтаксис, но не са предоставили такъв, mongo shell ще поиска паролата.



Коригиране на конфигурацията за удостоверяване на MongoDB сървър

Ако искате да промените правилата, които диктуват как потребителите могат да се удостоверяват във вашите MongoDB екземпляри, можете да направите това, като промените конфигурацията на вашия сървър. Можете да разберете как да промените конфигурацията за удостоверяване на MongoDB в тази статия.



Заключение

В това ръководство разгледахме удостоверяването на MongoDB от страна на клиента. Демонстрирахме как да използваме mongo shell, за да се свържете както с локални, така и с отдалечени екземпляри на база данни с помощта на различни методи.

Познаването как да се свързвате с различни екземпляри на MongoDB е жизненоважно, когато започнете да работите със системата на базата данни. Можете да стартирате локален екземпляр на MongoDB за разработка, който не се нуждае от специално удостоверяване, но вашите бази данни в етапа и производство почти сигурно ще изискват удостоверяване. Възможността за удостоверяване и в двата случая ще ви позволи да работите добре в различни среди.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Агрегация със сума от стойности на масива

  2. 3 лесни стъпки за подобряване на сигурността на вашата инсталация на MongoDB

  3. Как мога да създам програма с помощта на c++ драйвер на mongodb?

  4. Mongodb вмъква документ без поле _id

  5. Премахнете поддокумент, вложен в масив в MongoDB