mac安装mongoDB详细步骤 && 使用遇到的坑
一、下载安装
方法一: 官网链接下载安装
https://www.mongodb.com/try/download/community
方法二:
上面的网页Download按钮旁边有个copyLink,复制下来。
- cd /usr/local
进入目录 - sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-4.0.9.tgz
开始下载,后面的地址替换为最新版本的地址 - sudo tar -zxvf mongodb-osx-ssl-x86_64-4.0.9.tgz
解压,这里的文件名也需要替换为按版本的文件名,具体可以下载之后ls看一下文件即可 - sudo mv mongodb-osx-x86_64-4.0.9/ mongodb
解压后改名,不要忘了改文件名
二、 配置环境变量
1、在终端中输出 "sodu vim ~/.bash_profile",打开bash_profile文件。
2、将安装目录的bin目录地址 "export PATH=${PATH}:/usr/local/mongoDB/bin" 添加到环境变量中。
4、在终端中输入 "mongod -version",如果出现如下信息则说明path配资环和安装都已成功
三、启动服务和链接数据库
-
创建log和data目录
在/usr/local/mongoDB 目录下创建两个文件夹: data 和 log。
注意:如果创建目录的时候提示没有权限 mkdir: data: Permission denied,执行 sudo chmod 777 /usr/local/mongoDB
-
启动mongodb服务
在终端中,先进入data和log所在的目录,也就是/usr/local/mongoDB ,然后输入"sudo mongod --dbpath data --logpath log/mongod.log --logappend",启动mongodb服务(当前终端不要关闭)
启动验证:
sudo mongod --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/log/mongod.log --logappend --fork --auth
启用验证前,先使用mongosh连接数据库,然后创建用户:
db.createUser({user:"root",pwd:"123456",roles:[{"role":"userAdmin","db":"admin"},{"role":"root","db":"admin"},{"role":"userAdminAnyDatabase","db":"admin"}]})
摘自:https://blog.csdn.net/weixin_42354407/article/details/123586426(更多细节参考原文)
============== 踩坑记录 ==================
- nodejs代码连接报错:
const serverSelectionError = new ServerSelectionError();
^MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
使用工具Studio 3T(下载地址:)可以正常连接。开始以为程序中可能需要认证,去把用户创建了还是不行。
到官网搜了下,说是nodejs最新版,可能需要把localhost改成127.0.0.1。改了之后果然就ok了mongodb://yangdj:123456@localhost:27017/test
改成:mongodb://yangdj:123456@127.0.0.1:27017/test - mongo command not found
注意:上面的安装方式是没有mongo shell的,因此无法通过mongo进入管理和设置。想要通过命令行来开启auth就搞不定了(通过安装studio 3T客户端来连接,在admin数据库下创建超级管理员也是可以的。如果想要停止mongodb,强行kill掉mongod可能导致数据异常,甚至无法启动,应使用命令use admin; db.shutdownServer();)
可以通过brew来安装mongosh,安装命令为:brew install mongosh
安装成功后,直接输入:mongosh(缺省掉的参数,对应完整命令为:mongosh "mongodb://localhost:27017")来进入数据库。连接上之后就是一个客户端了。
关闭服务最好通过mongosh,执行:use admin; db.shutdownServer();
开启认证后,mongosh重新连接的完整命令:
mongosh "mongodb://mongodb0.example.com:28015" --username root --authenticationDatabase admin --password 123456
其他可参考官方网站:https://www.mongodb.com/docs/mongodb-shell/connect/ - 想要复制一个数据库出来临时做测试
找到网上说的db.copyDatabase结果提示函数不存在,搜到官网(https://www.mongodb.com/docs/manual/reference/method/db.copyDatabase/)说明:db.copyDatabase和copydb在新版早已deprecated了。需要使用mongodbdump和mongodbrestore(即备份和恢复命令来执行)。但直接使用这两个命令报命令不存在,因为我使用安装包的方式安装的,这些工具都不带(如果用brew安装mongo是否就一并安装了呢?待验证)
行吧,直接搜官网去安装tools(https://www.mongodb.com/docs/database-tools/installation/installation-macos/),执行两个命令就ok了:
brew tap mongodb/brew // 这个用来指定tools的代码源的,最好不要省略,不然可能会去安装homebrew/core下的
brew install mongodb-database-tools // 安装完之后,就有这两个命令了
先执行备份:mongodump -h 127.0.0.1 -d test -o ~/work --username root --authenticationDatabase admin --password 123456
然后恢复到另一个新库:mongorestore -h 127.0.0.1 -d ktt ~/work/test --username root --authenticationDatabase admin --password 123456
注意:如果没有开启auth验证,--username到最后的命令都不要,不然要报错的
- 通过服务器本机能连接,外网无法连接,telnet端口也不通
a、首先看服务器防火墙,是否放开了连接端口
b、mongod默认是设置了bind_ip为127.0.0.1,即:只有本机可以连接。需要放开这个配置,如果是通过conf文件启动的,则找到conf,一般在/etc/mongod.conf里。
最开始的文件,bindIp是注释掉了的,我这里直接打开,并修改为0.0.0.0(即不限制连接机器)
重启mongodb后即可。