※ユーザ設定はadmin含め、各データベース毎に行う必要があるらしい。
またadminはユーザ一覧表示などはできるが、データの読み書きができない仕様らしい。
$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
> show dbs;
2018-01-29T20:16:13.396+0900 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:781:19
shellHelper@src/mongo/shell/utils.js:671:15
@(shellhelp2):1:1
>
さて、どうしたものか。。。。
これはユーザ認証に問題があるらしい。
そもそもユーザが登録されていないので、まず特権ユーザを1つ作ってみる。
> use admin
switched to db admin
> db.createUser(
... {
... user: "hogehoge",
... pwd: "password",
... roles:
... [
... {
... role: "userAdminAnyDatabase",
... db: "admin"
... }
... ]
... }
... )
Successfully added user: {
"user" : "hogehoge",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
>
これでadminユーザを追加することができた。
では追加したユーザがちゃんと認証されているかテストしてみる。
> db.auth("hogehoge","password")
1
1と表示されたら認証成功。0が表示されたら認証失敗だ。
あらためてデータベースを確認してみる。
> show dbs
admin 0.078GB
local 0.078GB
ちゃんと表示されたので認証は成功しているようだ。
ユーザ認証の方法は二つある。
1)mongoシェル起動時に認証する場合
$ mongo データベース名 -u ユーザ名 -p
2)mongoシェル起動後に認証する場合
> db.auth("hogehoge","password")
Ubuntu16.04にMongoDBをインストールした件
CONOHAに借りているUbuntuサーバにMongoDBをインストールしようとしたら結構はまったので、手順を書き残しておこうと思う。
1)パッケージ管理システムで使うパブリックキーを登録する
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
2)利用可能なパッケージ一覧にMongoDBを登録する
$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
上記のパッケージ一覧の登録はUbuntuのバージョンによって異なるので注意。
これはUbuntu16.04向けのもの。
3)パッケージデータベースを更新する
$ sudo apt-get update
4)MongoDBパッケージをインストールする
$ sudo apt-get install mongodb-org
5)MongoDBを起動する
$ sudo service mongod start
6)MongoDBを停止する
$ sudo service mongod stop
7)MongoDBを再起動する
$ sudo service mongod restart
8)MongoDBに接続する
$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
2017-10-19T23:40:31.232+0900 I STORAGE [initandlisten]
2017-10-19T23:40:31.232+0900 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-10-19T23:40:31.232+0900 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten]
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten]
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten]
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten]
9)WARNINGの消し方
WARNING: Access control is not enabled for the databaseを消す。
$ sudo mkdir /etc/ssl/mongodb
$ sudo openssl rand -base64 756 > security.key
$ sudo mv security.key /etc/ssl/mongodb/
$ sudo chmod 400 /etc/ssl/mongodb/security.key
$ sudo chown mongodb:mongodb /etc/ssl/mongodb/security.key
MongoDBの設定を変更するために、設定ファイルをエディタ編集する。
$ sudo vim /etc/mongod.conf
次の一文を追記する。
security:
keyFile: /etc/ssl/mongodb/security.key
設定を反映させるためにmongodを再起動する。
$ sudo service mongod restart
WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.を消す。
$ sudo apt-get install sysfsutils
インストールが完了したら、/etc/sysfs.confファイルを編集する。
$ sudo vim /etc/sysfs.conf
次の一文を追記する。
kernel/mm/transparent_hugepage/enabled = never
sysfs.confを保存したら、Ubuntuを再起動する。
再起動した後、MongoDBに接続するとWARNINGが表示されなくなっているはず。
こんな風に。
$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
>
とりあえずMongoDBのインストールはこれでOKのようだ。
1)パッケージ管理システムで使うパブリックキーを登録する
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
2)利用可能なパッケージ一覧にMongoDBを登録する
$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
上記のパッケージ一覧の登録はUbuntuのバージョンによって異なるので注意。
これはUbuntu16.04向けのもの。
3)パッケージデータベースを更新する
$ sudo apt-get update
4)MongoDBパッケージをインストールする
$ sudo apt-get install mongodb-org
5)MongoDBを起動する
$ sudo service mongod start
6)MongoDBを停止する
$ sudo service mongod stop
7)MongoDBを再起動する
$ sudo service mongod restart
8)MongoDBに接続する
$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
2017-10-19T23:40:31.232+0900 I STORAGE [initandlisten]
2017-10-19T23:40:31.232+0900 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-10-19T23:40:31.232+0900 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten]
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten]
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten]
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-10-19T23:40:31.349+0900 I CONTROL [initandlisten]
9)WARNINGの消し方
WARNING: Access control is not enabled for the databaseを消す。
$ sudo mkdir /etc/ssl/mongodb
$ sudo openssl rand -base64 756 > security.key
$ sudo mv security.key /etc/ssl/mongodb/
$ sudo chmod 400 /etc/ssl/mongodb/security.key
$ sudo chown mongodb:mongodb /etc/ssl/mongodb/security.key
MongoDBの設定を変更するために、設定ファイルをエディタ編集する。
$ sudo vim /etc/mongod.conf
次の一文を追記する。
security:
keyFile: /etc/ssl/mongodb/security.key
設定を反映させるためにmongodを再起動する。
$ sudo service mongod restart
WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.を消す。
$ sudo apt-get install sysfsutils
インストールが完了したら、/etc/sysfs.confファイルを編集する。
$ sudo vim /etc/sysfs.conf
次の一文を追記する。
kernel/mm/transparent_hugepage/enabled = never
sysfs.confを保存したら、Ubuntuを再起動する。
再起動した後、MongoDBに接続するとWARNINGが表示されなくなっているはず。
こんな風に。
$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
>
とりあえずMongoDBのインストールはこれでOKのようだ。
登録:
投稿 (Atom)