1. ホーム
  2. データベース
  3. モンゴルディーブ

MongoDBユーザー関連操作

2022-01-19 01:53:29

   MongoDBを最初に起動したときは、データとログのディレクトリを作っただけで、--authオプションは指定していないので、認証の必要はありません。

[root@VM-0-14-centos mongo_27017]# mongo
MongoDB shell version v4.0.6
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("61c35b47-f43b-48fc-a43e-066f56987e9a") }
MongoDB server version: 4.0.6
> db
test

> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB

> use admin
switched to db admin

> show users;
> db.system.user.find()

      我々は最初のMongoDBのサービスにログインし、dbを入力し、現在のデータベースは、テストですが、dbsを表示するが、テストデータベースを見ることができないことがわかった、実際には、これはMongoDBの機能です、テストは、仮想データベースです、テストの内容を参照したい、あなただけのテストデータベースに文書を挿入する必要がありますすることができます。

     次に、show usersと入力しても、アカウント情報が表示されないことがわかります。次に、--authパラメータをオンにしてMongoDBサービスを再起動します。その前に、新しいアカウントを割り当てたことを確認する必要があるので、アカウントの割り当てを開始しましょう。

> db.createUser({ user: "root", pwd: "123456", roles: [ { role: "root", db: "admin"} ]}) 
Successfully added user: {
    "user" : "root",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}

ここでは、アカウントを割り当てていることがわかります。

user:root # ユーザー名

pwd:123456 # パスワード

roles:root # ロール

db:admin # データベース

rootという役割について説明する必要があります。

read: Allows the user to read the specified database.
readWrite: allows the user to read and write to the specified database
dbAdmin: allows the user to perform administrative functions in the specified database, such as index creation, deletion, viewing statistics or accessing system.profile
userAdmin: allows users to write to the system.users collection to create, delete and manage users in the specified database
clusterAdmin: available only in the admin database, gives the user administrative privileges for all sharding and replica set related functions.
readAnyDatabase: available only in the admin database, gives the user read access to all databases
readWriteAnyDatabase: available in admin database only, gives user read and write access to all databases
userAdminAnyDatabase: available in admin database only, gives user userAdmin permission to all databases
dbAdminAnyDatabase: available only in admin database, giving dbAdmin permission to all databases of the user.
root: available only in admin database, giving the user dbAdmin privileges for all databases. Super account, super privileges

詳細は、以下の公式ドキュメントを参照してください。

https://docs.mongodb.com/manual/reference/built-in-roles/#dbAdmin

さて、ユーザーを作成したら、MongoDBサービスを再起動し、設定ファイルの--authパラメータをオンにするか、コマンドラインから直接authパラメータを指定して、次のアドレスにログインし直します。

[root@VM-0-14-centos mongo_27017]# mongo
MongoDB shell version v4.0.6
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("5f2b0fa6-a1e3-4aaf-b43f-3525e19c33d2") }
MongoDB server version: 4.0.6
> 
> use admin
switched to db admin
> show users
2020-10-28T23:42:06.127+0800 E QUERY [js] Error: command usersInfo requires authentication :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.getUsers@src/mongo/shell/db.js:1763:1
shellHelper.show@src/mongo/shell/utils.js:859:9
shellHelper@src/mongo/shell/utils.js:766:15
@(shellhelp2):1:1
> db.auth("root","123456")
1
> show users
{
    "_id" : "admin.root",
    "user" : "root",
    "db" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ],
    "mechanisms" : [
        "SCRAM-SHA-1",
        "SCRAM-SHA-256"
    ]
}

ご覧のように、最初にshow usersというコマンドでユーザーを表示すると、システムが拒否して表示されます。

Error: command usersInfo requires authentication

次に、権限チェックを行います。

adminを使用する

db.auth("ルート", "123456")を実行します。

これで動作するようになりました。

細かいことですが、ログイン時にmongoコマンドでログインしてからユーザー認証をしているのですが、ログイン時に直接ユーザー認証する方法はないのでしょうか?答えはイエスです。

ログイン方法1

モンゴ

使用管理者

db.auth("user": "password")

ログイン方法2。

mongo -u "user" -p "password"

を以下のように設定します。

[root@VM-0-14-centos mongo_27017]# mongo -u "root" -p "123456"
MongoDB shell version v4.0.6
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("ef872d7a-77d9-43c2-bf3d-e04867379c0a") }
MongoDB server version: 4.0.6
> use admin 
switched to db admin
> show users
{
    "_id" : "admin.root",
    "user" : "root",
    "db" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ],
    "mechanisms" : [
        "SCRAM-SHA-1",
        "SCRAM-SHA-256"
    ]
}
>

ここでは、MongoDB に初めてログインしたときの初期ユーザーの設定方法、MongoDB の認証モードをオンにする方法 (--auth パラメーター)、ログイン時のユーザー認証について説明しましたが、ユーザーについてはまだいろいろあるので、次のセクションで詳しく説明します。 /There are a lot more to user authentication, which will be discussed in the next section.ユーザー認証については、次のセクションで説明します。

以上、MongoDBのユーザー関連の操作の詳細です。MongoDBのユーザー操作の詳細については、BinaryDevelopの他の関連記事にも注目してください!(英語)