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
ö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
Yorum Gönder