MongoDBユーザー関連操作
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の他の関連記事にも注目してください!(英語)
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン