私は、あらゆるデータベースで何でもできるユーザーをmongoで作成しようとしています。
ガイドによると、新しい管理者を作成しました: http://docs.mongodb.org/manual/tutorial/add-user-administrator
これはコードです:
use admin
db.addUser( { user: "try1",
pwd: "hello,
roles: [ "userAdminAnyDatabase" ] } )
その後、mongoを停止し、認証を有効にして、mongoを再起動しました。
次に、彼のユーザーでデータベースを作成しようとしました。
このガイドによると: http://www.mkyong.com/mongodb/how-to-create-database-or-collection-in-mongodb/
use fragola
db.users.save( {username:"fragolino"} )
そして、私はこれを得る:「fragola.usersでの挿入が許可されていません」
誰でも私を助けることができますか?
ロールuserAdminAnyDatabase
により、ユーザーはユーザーを作成し、任意のロールを割り当てることができます。このため、そのユーザーは、データベース(ユーザーを含む)に許可を与えることができるため、データベースに対して何でも実行できます。
ただし、userAdminAnyDatabase
の役割だけでは、任意のユーザーに任意の権限を割り当てる以外にユーザーが他のことを行うことはできません。データベース上で実際に何かを行うには、そのユーザーは次の追加の役割を持っている必要があります。
readWriteAnyDatabase
dbAdminAnyDatabase
clusterAdmin
上記の3つの権限を持つユーザーanduserAdminAnyDatabase
は真のスーパーユーザーであり、何でもできます。
docs.mongodb.org-superuser-rolesから
シンプルで実装も簡単に見える答えを書いてみましょう
手順:
1:Sudo apt-get install mongodb-org
-新しいターミナルで
2:Sudo mongod --port 27017 --dbpath /var/lib/mongodb
3:mongo --port 27017
-新しいターミナルで
4:use admin
5:@drmirrorが述べたように、ユーザーはすべての4ロールをsuperuser
db.createUser(
{
user: "tom",
pwd: "jerry",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "clusterAdmin", db: "admin" }
]
})
db.createUser(
{
user: "tom",
pwd: "jerry",
roles:["root"]
})
6:Sudo /etc/init.d/mongod stop
OR Sudo service mongod stop
-新しいターミナルで
7 : Sudo /etc/init.d/mongod start
OR Sudo service mongod start
8:restart your pc
9:Sudo mongod --auth --port 27017 --dbpath /var/lib/mongodb
-新しいターミナルで
10:mongo --port 27017 -u "tom" -p "jerry" --authenticationDatabase "admin"
-新しいターミナルで
注:ステップ10は最も重要なステップです。
端末の出力を出力します
MongoDB Shell version: 2.6.11
connecting to: 127.0.0.1:27017/test
>