mongodb遇到dbpath (/data/db) does not exist如何解决

mongod --help for help and startup options
  2014-07-18T16:08:54.403+0800 [initandlisten] MongoDB starting : pid=10296 port=27017 dbpath=/data/db 64-bit host=hs-mac-air
  2014-07-18T16:08:54.403+0800 [initandlisten] db version v2.6.3
  2014-07-18T16:08:54.403+0800 [initandlisten] git version: nogitversion
  2014-07-18T16:08:54.403+0800 [initandlisten] build info: Darwin minimavericks.local 13.2.0 Darwin Kernel Version 13.2.0: Thu Apr 17 23:03:13 PDT 2014; root:xnu-2422.100.13~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
  2014-07-18T16:08:54.403+0800 [initandlisten] allocator: tcmalloc
  2014-07-18T16:08:54.404+0800 [initandlisten] options: {}
  2014-07-18T16:08:54.404+0800 [initandlisten] exception in initAndListen: 10296
  *********************************************************************
   ERROR: dbpath (/data/db) does not exist.
   Create this directory or give existing directory in --dbpath.
   See http://dochub.mongodb.org/core/startingandstoppingmongo
  *********************************************************************
  , terminating
  2014-07-18T16:08:54.405+0800 [initandlisten] dbexit:
  2014-07-18T16:08:54.405+0800 [initandlisten] shutdown: going to close listening sockets...
  2014-07-18T16:08:54.406+0800 [initandlisten] shutdown: going to flush diaglog...
  2014-07-18T16:08:54.406+0800 [initandlisten] shutdown: going to close sockets...
  2014-07-18T16:08:54.406+0800 [initandlisten] shutdown: waiting for fs preallocator...
  2014-07-18T16:08:54.406+0800 [initandlisten] shutdown: lock for final commit...
  2014-07-18T16:08:54.406+0800 [initandlisten] shutdown: final commit...
  2014-07-18T16:08:54.406+0800 [initandlisten] shutdown: closing all files...
  2014-07-18T16:08:54.407+0800 [initandlisten] closeAllFiles() finished
  2014-07-18T16:08:54.407+0800 [initandlisten] dbexit: really exiting now

=======================================================
翻看了一些stackoverflow上的文章后发现因为homebrew将mongodb.conf放在了/usr/local/etc/mongodb.conf这个位置,但是mongod启动时默认查找的/etc/mongodb.conf这个位置,而且默认的dbpath是在/data/db这个目录下。以非root用户身份其实是进入不了这个目录的,一定会遇到权限问题。mkdir无法直接创建/data目录,一定需要用sudo,但即便用sudo mkdir创建了/data/db目录后也没有解决权限的问题。所以还是不要在这条路上继续越陷越深了。

我换了个思路想了一下,既然没有数据库所在文件夹,那么给他指定一个就可以了。所以启动时我用了mongod –dbpath myDbPath启动后,一切正常了。rails项目也可以正常访问了

mongodb-win32-x86_64-2012plus-4.2.24 MongoDB README Welcome to MongoDB! COMPONENTS mongod - The database server. mongos - Sharding router. mongo - The database shell (uses interactive javascript). UTILITIES install_compass - Installs MongoDB Compass for your platform. BUILDING See docs/building.md. RUNNING For command line options invoke: $ ./mongod --help To run a single server database: $ sudo mkdir -p /data/db $ ./mongod $ $ # The mongo javascript shell connects to localhost and test database by default: $ ./mongo > help INSTALLING COMPASS You can install compass using the install_compass script packaged with MongoDB: $ ./install_compass This will download the appropriate MongoDB Compass package for your platform and install it. DRIVERS Client drivers for most programming languages are available at https://docs.mongodb.com/manual/applications/drivers/. Use the shell ("mongo") for administrative tasks. BUG REPORTS See https://github.com/mongodb/mongo/wiki/Submit-Bug-Reports. PACKAGING Packages are created dynamically by the package.py script located in the buildscripts directory. This will generate RPM and Debian packages. DOCUMENTATION https://docs.mongodb.com/manual/ CLOUD HOSTED MONGODB https://www.mongodb.com/cloud/atlas FORUMS https://community.mongodb.com A forum for technical questions about using MongoDB. https://community.mongodb.com/c/server-dev A forum for technical questions about building and developing MongoDB. LEARN MONGODB https://university.mongodb.com/ LICENSE MongoDB is free and open-source. Versions released prior to October 16, 2018 are published under the AGPL. All versions released after October 16, 2018, including patch fixes for prior versions, are published under the Server Side Public License (SSPL) v1. See individual files for details. 根据这个记事本,你认为我安装了mongodb server吗?
最新发布
08-09
D:\aaFreeInstallation\PathLibBin\mongodb\bin>mongod --dbpath D:\MongoDB\data Sun Mar 23 11:17:42.431 Sun Mar 23 11:17:42.435 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability. Sun Mar 23 11:17:42.436 Sun Mar 23 11:17:42.474 [initandlisten] MongoDB starting : pid=20820 port=27017 dbpath=D:\MongoDB\data 32-bit host=bilibili Sun Mar 23 11:17:42.474 [initandlisten] Sun Mar 23 11:17:42.475 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary. Sun Mar 23 11:17:42.475 [initandlisten] ** 32 bit builds are limited to less than 2GB of data (or less with --journal). Sun Mar 23 11:17:42.475 [initandlisten] ** Note that journaling defaults to off for 32 bit and is currently off. Sun Mar 23 11:17:42.476 [initandlisten] ** See http://dochub.mongodb.org/core/32bit Sun Mar 23 11:17:42.477 [initandlisten] Sun Mar 23 11:17:42.477 [initandlisten] db version v2.4.6 Sun Mar 23 11:17:42.477 [initandlisten] git version: b9925db5eac369d77a3a5f5d98a145eaaacd9673 Sun Mar 23 11:17:42.477 [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=0, build=6002, platform=2, service_pack='Service Pack 2') BOOST_LIB_VERSION=1_49 Sun Mar 23 11:17:42.477 [initandlisten] allocator: system Sun Mar 23 11:17:42.477 [initandlisten] options: { dbpath: "D:\MongoDB\data" } Sun Mar 23 11:17:42.478 [initandlisten] exception in initAndListen: 10296 ********************************************************************* ERROR: dbpath (D:\MongoDB\data) does not exist. Create this directory or give existing directory in --dbpath. See http://dochub.mongodb.org/core/startingandstoppingmongo ********************************************************************* , terminating Sun Mar 23 11:17:42.478 dbexit: Sun Mar 23 11:17:42.480 [initandlisten] shutdown: going to close listening sockets... Sun Mar 23 11:17:42.480 [initandlisten] shutdown: going to flush diaglog... Sun Mar 23 11:17:42.481 [initandlisten] shutdown: going to close sockets... Sun Mar 23 11:17:42.481 [initandlisten] shutdown: waiting for fs preallocator... Sun Mar 23 11:17:42.482 [initandlisten] shutdown: closing all files... Sun Mar 23 11:17:42.482 [initandlisten] closeAllFiles() finished Sun Mar 23 11:17:42.483 dbexit: really exiting now
03-24
<think>嗯,用户在使用MongoDB的时候遇到了启动命令失败的问题。让我仔细看一下他的命令和错误信息。首先,用户执行的命令是: mongod --dbpath /usr/local/mongodb/data/ --config /usr/local/mongodb/mongodb.conf--logpath /usr/local/mongodb/log/mongodb.log --port 27017 然后报错说日志文件已存在,被移动了,但可能还有其他问题。用户以root身份执行,但可能权限有问题? 首先,我需要检查用户的命令格式是否正确。注意到在--config参数后面,路径和--logpath之间没有空格,这可能是个问题。用户写的是“--config /usr/local/mongodb/mongodb.conf--logpath”,中间应该有个空格,否则MongoDB会认为--logpath是配置文件路径的一部分,导致参数解析错误。这应该是主要问题所在。 然后,用户看到的错误信息是日志文件已存在,被重命名了。这可能是因为之前MongoDB正常关闭时没有删除日志文件,或者用户在启动时没有使用--fork参数在后台运行,导致控制台输出和日志文件的冲突?不过错误信息中的移动是正常行为,当检测到已有日志文件时,MongoDB会将其重命名备份,然后创建新的日志文件。但用户可能误以为这是错误,其实可能只是警告。 但问题在于,用户是否成功启动了服务?可能命令因为参数错误而未能正确执行。比如,当--config后面没有正确分隔参数时,MongoDB可能无法正确读取配置文件,导致后续参数被忽略或解析错误,从而启动失败。 另外,用户是否有权限访问指定的目录?比如,/usr/local/mongodb/data/、日志目录等,需要确保MongoDB进程有写入权限。如果用户使用root运行,可能没问题,但数据目录的权限是否正确?比如,如果之前是用其他用户创建的,可能导致权限问题。 接下来,可能的解决方案包括: 1. 修正命令中的参数分隔问题,确保每个选项之间有空格。 2. 检查配置文件中的设置是否与命令行参数冲突,比如是否在配置文件中指定了不同的dbpath或logpath。 3. 确保相关目录存在且有正确的权限。 4. 如果使用--config参数,可能需要确认配置文件中的内容是否正确,避免重复指定参数导致冲突。 5. 检查端口27017是否被其他进程占用。 6. 查看移动后的日志文件内容,确认是否有其他错误信息。 此外,用户可能没有使用--fork参数,导致进程在前台运行,如果控制台关闭,进程会终止。但用户的问题可能只是命令参数格式错误导致启动失败。 所以,首先应该让用户修正命令中的空格问题,然后检查目录权限和存在性。如果用户仍然遇到问题,可能需要进一步检查日志内容,或者配置文件的内容是否正确。</think>根据您提供的命令和错误信息,问题主要由参数格式错误和目录权限问题导致。以下是分步解决方案: --- ### **步骤1:修正命令格式错误** 您原始命令中`--config`和`--logpath`参数之间缺少空格,导致参数解析失败。正确命令应为: ```bash mongod --dbpath /usr/local/mongodb/data/ \ --config /usr/local/mongodb/mongodb.conf \ --logpath /usr/local/mongodb/log/mongodb.log \ --port 27017 ``` 👉 **关键修改**:在`--config`参数的值后添加空格,确保参数独立。 --- ### **步骤2:检查目录权限** MongoDB需要对数据、日志目录有**写入权限**。执行以下命令: ```bash # 创建目录(如果不存在) sudo mkdir -p /usr/local/mongodb/{data,log} # 赋予MongoDB用户(通常为mongodb)权限 sudo chown -R mongodb:mongodb /usr/local/mongodb sudo chmod -R 755 /usr/local/mongodb ``` --- ### **步骤3:验证配置文件内容** 如果使用了`--config`参数,需确保配置文件`mongodb.conf`与命令行参数**无冲突**。例如: ```yaml # /usr/local/mongodb/mongodb.conf storage: dbPath: /usr/local/mongodb/data/ systemLog: destination: file path: /usr/local/mongodb/log/mongodb.log logAppend: true net: port: 27017 ``` ⚠️ **注意**:配置文件中若已定义`dbPath`或`logpath`,命令行中需移除对应参数避免冲突。 --- ### **步骤4:以守护进程模式启动(推荐)** 添加`--fork`参数让MongoDB后台运行: ```bash mongod --dbpath /usr/local/mongodb/data/ \ --config /usr/local/mongodb/mongodb.conf \ --logpath /usr/local/mongodb/log/mongodb.log \ --port 27017 \ --fork ``` --- ### **步骤5:排查常见问题** 1. **端口冲突** 检查27017端口是否被占用: ```bash sudo lsof -i :27017 ``` 若被占用,终止相关进程或更换端口。 2. **日志分析** 查看日志文件内容,定位具体错误: ```bash tail -f /usr/local/mongodb/log/mongodb.log ``` --- ### **完整修复命令示例** ```bash # 确保目录存在并设置权限 sudo mkdir -p /usr/local/mongodb/{data,log} sudo chown -R $(whoami) /usr/local/mongodb # 若以当前用户运行 # 启动MongoDB(无配置文件时) mongod --dbpath /usr/local/mongodb/data/ \ --logpath /usr/local/mongodb/log/mongodb.log \ --port 27017 \ --fork ``` --- ### **总结** - **参数格式**:确保每个参数之间有空格。 - **目录权限**:MongoDB需对数据、日志目录有写入权限。 - **配置文件**:避免参数重复定义。 - **日志分析**:通过日志文件定位深层问题。 若问题仍存在,请提供`/usr/local/mongodb/log/mongodb.log`中的错误详情以便进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值