38099


学校の卒業制作でmongodbを使いたいのですが、データベースを使うこと自体が初めてで解説サイトなどを一通り見たのですが、シェルの操作が出来ても起動が出来ません。

**環境状況**  
macにvagrantでubuntuを仮想環境で立てています。  
とりあえずUbuntu14.04にmongodb2.4.9はインストール出来ました。  
pymongoを通して操作したいと思いvirtualenvでpython仮想にしています。

**問題**  
MongoDBが起動出来ない

service mongod startと入力すると  
mongod: unrecognized service  
と表示されます。

**試したこと**  
serviceがmongod.serviceのことなのでしょうか？  
検索をしていてここに設定を書くと起動できると書いてあったのですが、うまくいきませんでした。  
[Ubuntu 16.04
LTSでMongoDBが起動できないとき](http://qiita.com/pelican/items/bb9b5290bb73acedc282)

mogodとコマンドラインで打つと/data/dbがないというエラーが出たのですが、これは自分で作成するとサイトに書いてあったのですが一体どこに作成したら良いのでしょうか？

mongoと入力するとシェルにはアクセス出来データベースを作ったり、データを格納したり出来ます。ただブラウザーからローカルのデータベースにアクセスが出来ません。

そもそもmongo・mongodd・service mongod start  
これらのコマンドの違いがわかりません。シェルに入れるということは起動出来ているという意味ではないのでしょうか？詳しい方どうか回答をお願いします。

**追記**

mongodと入力するとこのようなエラーも出て来ます。権限でopne lockファイルが作れないと書いてあると思うのですがsudo
mongodで試しても別のエラーで起動出来ませんでした。

[code]

    exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
    
[/code]

sudo mongodで実行して見たら今度はこのようなエラーが出て来ました。  
1回目

[code]

    Fri Sep 22 01:54:50.756 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
    Fri Sep 22 01:54:50.757 [initandlisten] ERROR:   addr already in use
    
[/code]

2回目  
アドレス27017がすでに使われているみたいな感じのエラーが出ているのですがここを変えたらいいのでしょうか？これってローカルのホスト番号だと思うのですが、他にサーバーも立てていないので使ってはいないと思います。

[code]

    Fri Sep 22 14:21:52.944 [initandlisten] db version v2.4.9
    Fri Sep 22 14:21:52.944 [initandlisten] git version: nogitversion
    Fri Sep 22 14:21:52.944 [initandlisten] build info: Linux comet 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 17:37:58 UTC 2013 i686 BOOST_LIB_VERSION=1_54
    Fri Sep 22 14:21:52.944 [initandlisten] allocator: tcmalloc
    Fri Sep 22 14:21:52.944 [initandlisten] options: {}
    Fri Sep 22 14:21:52.950 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
    Fri Sep 22 14:21:52.951 [initandlisten] ERROR:   addr already in use
    Fri Sep 22 14:21:52.952 [initandlisten] now exiting
    Fri Sep 22 14:21:52.952 dbexit: 
    Fri Sep 22 14:21:52.953 [TTLMonitor] ERROR: Client::shutdown not called: TTLMonitor
    Fri Sep 22 14:21:52.953 [websvr] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:28017
    Fri Sep 22 14:21:52.956 [websvr] ERROR:   addr already in use
    Fri Sep 22 14:21:52.954 [initandlisten] shutdown: going to close listening sockets...
    Fri Sep 22 14:21:52.957 [initandlisten] shutdown: going to flush diaglog...
    Fri Sep 22 14:21:52.957 [initandlisten] shutdown: going to close sockets...
    Fri Sep 22 14:21:52.957 [initandlisten] shutdown: waiting for fs preallocator...
    Fri Sep 22 14:21:52.957 [initandlisten] shutdown: closing all files...
    Fri Sep 22 14:21:52.957 [initandlisten] closeAllFiles() finished
    Fri Sep 22 14:21:52.957 [initandlisten] shutdown: removing fs lock...
    Fri Sep 22 14:21:52.957 dbexit: really exiting now
    
[/code]

27017が使われているとのことで  
netstat -tulpn | grep :27017で調べたら  
LISTEN 1033/mongod と出て来たのですがこれはmongodbが立ち上がっている状態だと思うのですがどういうことでしょう？  
ですがブラウザーからアクセスすると拒否されます。

**追記2**  
今までubuntuの起動と同時にmongodbが起動していた見たいです。なんでかよくわからないですが  
sudo killall mongodにした後にsudo mongodと実行したら

[code]

    Fri Sep 22 15:30:51.327 [websvr] admin web console waiting for connections on port 28017
    Fri Sep 22 15:30:51.328 [initandlisten] waiting for connections on port 27017
    
[/code]

表示されましたですが今度は起動時に自動で立ち上がってないとvagrantでウィンドウを2つ開くとログイン?しないといけないのでそれを解決するにはどうしたらいいでしょうか？

_1ウィンドウ_ vagrantログインでmongod起動  
_2ウィンドウ_ macのターミナルでmongo(インストールしてない)で接続出来ない

**追記3**  
ターミナルのウィンドを2つ開きvagrantにログインする形で  
_1ウィンドウ_ vagrant起動 ログイン mongod起動  
_2ウィンドウ_ vagrant ログイン mongo接続出来ました。

今の問題はsudo mongodでしか起動出来ないので権限だけの変更の仕方を教えて欲しいです。前のやり方だとエラーが出てしまいます。  
できるようになりました。以下のコマンド実行で

[code]

    sudo chown ユーザ名:ユーザ名 -R /data/db/
    
[/code]

よくわからないですがこれで出来ました。

**エラー**

chown mongod:mongod -R /data/db/を実行したのですがこのようなエラーが出て来ます。

[code]

    chown: invalid user: ‘mongod:mongod’
    
[/code]

mongod.confの中身を見て見たのですが何も書いてありません。  
ここは自分追加して書くのでしょうか？

現在は/にdata/dbを作成した段階です。権限はrootになっています。

**以下ログです**

[code]

    Thu Sep 21 09:38:02.621 [initandlisten] MongoDB starting : pid=1046 port=27017 dbpath=/var/lib/mongodb 32-bit host=vagrant-ubuntu-trusty-32
    Thu Sep 21 09:38:02.621 [initandlisten] 
    Thu Sep 21 09:38:02.621 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
    Thu Sep 21 09:38:02.621 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).
    Thu Sep 21 09:38:02.621 [initandlisten] **       See http://dochub.mongodb.org/core/32bit
    Thu Sep 21 09:38:02.621 [initandlisten] 
    Thu Sep 21 09:38:02.621 [initandlisten] db version v2.4.9
    Thu Sep 21 09:38:02.621 [initandlisten] git version: nogitversion
    Thu Sep 21 09:38:02.621 [initandlisten] build info: Linux comet 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 17:37:58 UTC 2013 i686 BOOST_LIB_VERSION=1_54
    Thu Sep 21 09:38:02.621 [initandlisten] allocator: tcmalloc
    Thu Sep 21 09:38:02.621 [initandlisten] options: { bind_ip: "127.0.0.1", config: "/etc/mongodb.conf", dbpath: "/var/lib/mongodb", journal: "true", logappend: "true", logpath: "/var/log/mongodb/mongodb.log" }
    Thu Sep 21 09:38:02.633 [initandlisten] journal dir=/var/lib/mongodb/journal
    Thu Sep 21 09:38:02.638 [initandlisten] recover : no journal files present, no recovery needed
    Thu Sep 21 09:38:02.779 [initandlisten] waiting for connections on port 27017
    Thu Sep 21 09:38:02.780 [websvr] admin web console waiting for connections on port 28017
    Thu Sep 21 09:52:35.540 [initandlisten] connection accepted from 127.0.0.1:32854 #1 (1 connection now open)
    Thu Sep 21 09:56:40.683 [conn1] end connection 127.0.0.1:32854 (0 connections now open)
    Thu Sep 21 11:25:59.486 [initandlisten] connection accepted from 127.0.0.1:32855 #2 (1 connection now open)
    Thu Sep 21 11:26:15.358 [conn2] end connection 127.0.0.1:32855 (0 connections now open)
    Thu Sep 21 11:27:59.390 [initandlisten] connection accepted from 127.0.0.1:32856 #3 (1 connection now open)
    Thu Sep 21 11:28:42.688 [conn3] end connection 127.0.0.1:32856 (0 connections now open)
    Thu Sep 21 11:44:36.889 [initandlisten] connection accepted from 127.0.0.1:32857 #4 (1 connection now open)
    Thu Sep 21 11:44:40.673 [conn4] end connection 127.0.0.1:32857 (0 connections now open)
    
[/code]


CC BY-SA 3.0
2017-09-21T10:16:57.623
38091
2017-09-23T05:26:12.710
2017-09-23T05:26:12.710
22565
22565
question
python mongodb flask
mongodbが起動できない


Permission denied Is a mongod  
と書いてあるので

[code]

    chown mongod:mongod -R /data/db/
    chown mongod:mongod -R /var/lib/mongodb
    
[/code]

とします。

[code]

    vi /etc/mongod.conf
    
[/code]

に記載されている

[code]

    storage:
        dbPath: /var/lib/mongo #ここのパスがDBパスとなります
    
[/code]

confを書き直し、反映させるには

[code]

    mongod --config /etc/mongod.conf
    
[/code]

とします。

>
> mogodとコマンドラインで打つと/data/dbがないというエラーが出たのですが、これは自分で作成するとサイトに書いてあったのですが一体どこに作成したら良いのでしょうか？

ディレクトリ作成方法は

[code]

    mkdir -p /data/db
    
[/code]

とします。

[code]

    mkdir パス名
    
[/code]

でフォルダ(ディレクトリ)生成しますが、この場合、`/`にdataフォルダがない場合エラーが表示されるので、-pオプションでdataフォルダとdbフォルダを丸ごと生成できます。

[code]

    /
    
[/code]

とは、お使いのvagrantでubuntuを仮想環境のルートディレクトリを指します。Windowsで表すならローカルディスク(C:)のようなものです。

[code]

    ls -al /
    
[/code]

でルートディレクトリを参照できます。そして表示された一覧にdataフォルダが表示されないので、フォルダが無いとエラーが表示されます。しかし上記で設定した、dbPath=/var/lib/mongodbがDBパスとなるので、/data/dbフォルダを生成する必要はありません。

それでもできない場合は、mongodを再起動します。

[code]

    sudo service mongodb restart
    
[/code]

もしくは

[code]

    sudo service mongod restart
    
[/code]

通常はmongod起動時にmongodユーザーが生成されるのですが、SELINUXなどセキュリティシステムによって生成されなかった場合があります。

[code]

    setenforce 0
    sudo service mongod stop
    chown mongod:mongod -R /var/lib/mongodb
    sudo service mongod start
    
[/code]

何も書いてない場合は

[code]

    vi /etc/mongodb.conf
    
[/code]


CC BY-SA 3.0
2017-09-22T01:27:49.783
38099
2017-09-22T02:22:23.317
2017-09-22T02:22:23.317
7973
7973
38091
answer