Gereğince MongoDB BOL
Auth etkinleştirme erişim denetimi etkinleştirildiğinde ne zaman bir kullanıcı var sağlamak, userAdmin veya userAdminAnyDatabase yönetici veritabanında rolü. Bu kullanıcı, kullanıcı ve rolleri yönetebilir: kullanıcı oluşturma, kullanıcılardan rol verme veya iptal etme ve gümrük rolleri oluşturma veya değiştirme.
Erişim kontrolünü etkinleştirmeden önce veya sonra kullanıcılar oluşturabilirsiniz. Herhangi bir kullanıcı oluşturmadan önce erişim kontrolünü etkinleştirirseniz, MongoDB bir localhost istisnası sağlar , yönetici veritabanında bir kullanıcı yöneticisi oluşturmanıza izin veren sağlar. Oluşturulduktan sonra, gerektiğinde ek kullanıcılar oluşturmak için kullanıcı yöneticisi olarak kimlik doğrulaması yapmanız gerekir.
prosedür
İşte yapabileceğiniz aşağıdaki prosedür Enable Auth
. İlk olarak erişim kontrolü olmadan çalışan bir MongoDB örneğine bir kullanıcı yöneticisi ekler ve sonra erişim kontrolünü etkinleştirir.
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)
Örneğe bağlanın
Örneğin, örneğe bir mongo
kabuk bağlayın .
mongo --port 27017
mongo
Kabuğu dağıtımınıza bağlamak için uygun olan ek komut satırı seçeneklerini belirtin --host
.
Kullanıcı yöneticisi oluşturma
Örneğin burada yönetici veritabanında, userAdminAnyDatabase
role sahip bir kullanıcı ekleyin . Örneğin, aşağıdaki kullanıcı oluşturur myUserAdmin
içinde yönetici veritabanı :
> 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"
}
]
}
NOT: Kullanıcıyı oluşturduğunuz veritabanı (bu örnekte admin) kullanıcının kimlik doğrulama veritabanıdır. Kullanıcı bu veritabanının kimliğini doğrulasa da, kullanıcının diğer veritabanlarında rolleri olabilir; yani kullanıcının kimlik doğrulama veritabanı kullanıcının ayrıcalıklarını sınırlamaz.
mongo
Kabuğu ayırın .
Erişim denetimiyle MongoDB örneğini yeniden başlatın
mongod
Örneği --auth komut satırı seçeneğiyle veya bir yapılandırma dosyası kullanıyorsanız security.authorization ayarıyla yeniden başlatın .
mongod --auth --port 27017 --dbpath /data/db1
Bu örneğe bağlanan istemciler artık kendilerini MongoDB
kullanıcı . İstemciler yalnızca atanan rolleri tarafından belirlenen eylemleri gerçekleştirebilir.
Kullanıcı yöneticisi olarak bağlanın ve kimlik doğrulaması yapın
mongo
Kabuğu kullanarak şunları yapabilirsiniz:
Bağlantı sırasında kimlik doğrulaması mongo
yapmak için -u <username>, -p <password>, and the --authenticationDatabase <database>
Komut satırı seçenekleriyle bir kabuk başlatın:
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.
Bağlandıktan sonra kimlik doğrulaması yapmak için
mongo
Kabuğu şuraya bağlayın mongod
:
mongo --port 27017
Kimlik doğrulama veritabanına (bu durumda admin) geçin ve kimlik doğrulaması için db.auth (,) yöntemini kullanın:
> use admin
switched to db admin
> db.auth("mongoadmin","mongoadmin")
1
>