Mongodb Authentication

mongodb  db version v3.0.7 mac üzerinde yapılan işlemler

önceden açtığınız mongo penceresi varsa eğer
use admin

db.shutdownServer() diyip açık mongod temiz bir şekilde kapatıyoruz

daha sonra mongod çalıştırırken aşağıdaki parametreler ile çalıştırıyoruz

mongod --auth --dbpath ../data/db

Burada --auth parametresi mongo database'in authentication ile çalışacağını gösterir.

Daha sonra başka bir terminal ekranında  mongo ekranına geçiyoruz

mongo standart test db'ye giriş yapıyor fakat komut çalıştırmak istediğimizde çalıştıramadığımızı görüyoruz. Bu yüzden 

use admin

komutunu kullanarak admin db'ye geçiyoruz. Ve bir adet kullanıcı ekliyoruz

db.createUser({ user: 'admin', pwd: 'admin', roles: [{ role: 'userAdminAnyDatabase', db : 'admin'}] })

Bu kullanıcı ekleme işlemi tek sefer yapılabilecek bir işlemdir. Başka kullanıcı eklemeye izin vermez mongodb bu aşamada. Kullanıcı eklendikten sonra şu şekilde bir mesaj alırsınız.

Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}

Bu kullanıcı yaratılmasına rağmen mongodb üzerinde komut çalıştırmak istediğinizde çalıştırmadığını görürsünüz. Mesela veritabanlarını göster dediğinizde hata mesajı verir.

show dbs

2017-01-15T22:18:11.246+0200 E QUERY    Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
}
    at Error ()
    at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
    at shellHelper.show (src/mongo/shell/utils.js:630:33)
    at shellHelper (src/mongo/shell/utils.js:524:36)
    at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47

Kullanıcının yetkilendirilmesi gerekmektedir. Yetkilendirme yapabilmek için

db.auth('admin','admin') 

komutunu çalıştırırız. İşlem başarılı olduğunda aşağıdaki 1 rakamı döndürür.

1

kullanıcıyı listelemek istersek aşağıdaki komutu çalıştırıyoruz

db.system.users.find()

{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "JEqtG9vTdcHm3SwUy6wE4Q==", "storedKey" : "7+ldTTqIGWaNtDJbyCvM536tRRE=", "serverKey" : "YG2IDJ4HQ6WBUHx6Lrg8WMgrCZc=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }

Yaratılan kullanıcının detaylı bilgileri listelenmektedir.

Şimdi mongo terminalinden exit diyerek çıkalım.

Tekrar mongo  diye girdiğimizde test database'ine bağlandığımız halde bir komut çalıştırmak istediğimizde hata alırız

show dbs
2017-01-15T22:44:56.227+0200 E QUERY    Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
}
    at Error ()
    at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
    at shellHelper.show (src/mongo/shell/utils.js:630:33)
    at shellHelper (src/mongo/shell/utils.js:524:36)
    at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47

Bunun yerine admin veritabanına bağlanmayı denersek
mongo admin -u admin -p admin çalıştırır
MongoDB shell version: 3.0.7
connecting to: admin

bir komut çalıştırdığımızda sorunsuz çalışır.

Test veritabanına standart bir şekilde bağlanabilmek için

mongo -u admin -p admin --authenticationDatabase=admin

komutunu çalıştırırsak direk test database'ine bağlanıp istediğimiz komutu çalıştırabiliriz


Bu yetkilendirme metodlarından biridir, bir diğeri terminal ekranına

mongo 

yazarız ve test db bağlanırız

use admin komutunu çalıştırarak burada admin veritabanına geçeriz

db.auth('admin','admin) komutunu çalıştırarak kendimizi yetkilendiririz

1

show dbs dediğinizde veritabanlarını listeleyebilirsiniz.

Şimdi test database'i üzerinde bir kullanıcı yaratmak istersek

use test

diyerek test database'ine geçiyoruz. Burada

db.createUser({ user: 'test', pwd: 'test', roles: ['readWrite', 'dbAdmin']})

Successfully added user: { "user" : "test", "roles" : [ "readWrite", "dbAdmin" ] }

test kullanıcı yaratmış oluyoruz

terminal ekranına 

exit 

yazıp mongo ekranından çıkıyoruz.

Tekrar login olmak istersek 

mongo test -u test -p test

çalıştırdığımızda test veritabanına login oluruz.

Show dbs

komutunu çalıştırırsanız 

2017-01-15T23:07:05.129+0200 E QUERY    Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
}
    at Error ()
    at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
    at shellHelper.show (src/mongo/shell/utils.js:630:33)
    at shellHelper (src/mongo/shell/utils.js:524:36)
    at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47

bu komutu çalıştırmak için yetkili değilsiniz mesajını alırsınız. Yapabileceğiniz işlemler bu veritabanı işlemleri ile sınırlıdır.

show collections komutunu çalıştırırsak bize ilgili collectionları döndürür.

system.indexes







Yorumlar

Bu blogdaki popüler yayınlar

22.06.2020 - 26.06.2020 arası işler

Asp.net RestSharp ile data post etmek

List Box Item içindeki elemanları aşağı veya yukarı taşımak