今天在安装mongodb后一直报错,说是错误100,没有权限。

错误信息如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2016-02-06T18:10:44.893+0900 I CONTROL [main] ***** SERVER RESTARTED *****
2016-02-06T18:10:44.910+0900 I CONTROL [initandlisten] MongoDB starting : pid=46957 port=27017 dbpath=/usr/local/var/mongodb 64-bit host=P23722.local
2016-02-06T18:10:44.910+0900 I CONTROL [initandlisten] db version v3.2.1
2016-02-06T18:10:44.910+0900 I CONTROL [initandlisten] git version: a14d55980c2cdc565d4704a7e3ad37e4e535c1b2
2016-02-06T18:10:44.910+0900 I CONTROL [initandlisten] allocator: system
2016-02-06T18:10:44.910+0900 I CONTROL [initandlisten] modules: none
2016-02-06T18:10:44.910+0900 I CONTROL [initandlisten] build environment:
2016-02-06T18:10:44.910+0900 I CONTROL [initandlisten] distarch: x86_64
2016-02-06T18:10:44.910+0900 I CONTROL [initandlisten] target_arch: x86_64
2016-02-06T18:10:44.910+0900 I CONTROL [initandlisten] options: { config: "/usr/local/etc/mongod.conf", net: { bindIp: "127.0.0.1" }, storage: { dbPath: "/usr/local/var/mongodb" }, systemLog: { destination: "file", logAppend: true, path: "/usr/local/var/log/mongodb/mongo.log" } }
2016-02-06T18:10:44.911+0900 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-02-06T18:10:44.913+0900 E STORAGE [initandlisten] WiredTiger (2) [1454749844:913596][46957:0x7fff75fbc000], file:WiredTiger.wt, connection: /usr/local/var/mongodb/WiredTiger.wt: No such file or directory
2016-02-06T18:10:44.923+0900 I - [initandlisten] Assertion: 28595:2: No such file or directory
2016-02-06T18:10:44.923+0900 I STORAGE [initandlisten] exception in initAndListen: 28595 2: No such file or directory, terminating
2016-02-06T18:10:44.923+0900 I CONTROL [initandlisten] dbexit: rc: 100

解决方案如下

1
2
3
rm -rf /usr/local/var/mongodb
brew uninstall --force mongodb
brew install mongodb

解决后又有新的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2017-04-13T16:15:56.812+0800 I CONTROL [initandlisten] MongoDB starting : pid=18741 port=27017 dbpath=/Users/hikalu/data/db 64-bit host=HIKALUdeMacBook-Pro.local
2017-04-13T16:15:56.812+0800 I CONTROL [initandlisten] db version v3.4.3
2017-04-13T16:15:56.812+0800 I CONTROL [initandlisten] git version: f07437fb5a6cca07c10bafa78365456eb1d6d5e1
2017-04-13T16:15:56.812+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2k 26 Jan 2017
2017-04-13T16:15:56.812+0800 I CONTROL [initandlisten] allocator: system
2017-04-13T16:15:56.812+0800 I CONTROL [initandlisten] modules: none
2017-04-13T16:15:56.812+0800 I CONTROL [initandlisten] build environment:
2017-04-13T16:15:56.812+0800 I CONTROL [initandlisten] distarch: x86_64
2017-04-13T16:15:56.813+0800 I CONTROL [initandlisten] target_arch: x86_64
2017-04-13T16:15:56.813+0800 I CONTROL [initandlisten] options: { storage: { dbPath: "/Users/hikalu/data/db" } }
2017-04-13T16:15:56.813+0800 E NETWORK [initandlisten] listen(): bind() failed Address already in use for socket: 0.0.0.0:27017
2017-04-13T16:15:56.813+0800 E NETWORK [initandlisten] addr already in use
2017-04-13T16:15:56.813+0800 E NETWORK [initandlisten] Failed to set up sockets during startup.
2017-04-13T16:15:56.813+0800 E STORAGE [initandlisten] Failed to set up listener: InternalError: Failed to set up sockets
2017-04-13T16:15:56.813+0800 I NETWORK [initandlisten] shutdown: going to close listening sockets...
2017-04-13T16:15:56.813+0800 I NETWORK [initandlisten] shutdown: going to flush diaglog...
2017-04-13T16:15:56.813+0800 I CONTROL [initandlisten] now exiting
2017-04-13T16:15:56.813+0800 I CONTROL [initandlisten] shutting down with code:48

说是48号错误。
2017-04-13T16:15:56.813+0800 E NETWORK [initandlisten] listen(): bind() failed Address already in use for socket: 0.0.0.0:27017
观察后发现是端口没有关闭

查看使用某端口的进程

最简单的命令是:
lsof -i :端口号

使用losf -i :27010
得到如下结果

1
2
3
➜ ~ lsof -i:27017
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 15387 hikalu 6u IPv4 0x46420325c7e84b01 0t0 TCP *:27017 (LISTEN)

关闭某进程的命令

sudo kill -9 PID
mongodb的PID是15387
执行➜ ~ sudo kill -9 15387就可以关闭