在mac上安装mongodb,也踩了不少坑,说多了都是泪,现将踩坑记录下来。
方法一: brew安装
-
打开终端应用程序,输入以下命令,以更新 Homebrew 的软件包列表:
brew update -
输入以下命令,以安装 MongoDB 的最新稳定版本:
brew install mongodb-community@5.0
安装完毕后,按照指示先运行一下指令,用来注册路径
echo 'export PATH="/opt/homebrew/opt/mongodb-community@5.0/bin:$PATH"' >> ~/.zshrc
- 输入以下命令,以启动 MongoDB 的后台服务:
brew services start mongodb-community@5.0
方案二: 下载安装包
- 将解压后的文件放入 /usr/local(打开Finder后按 shift + command +G 输入 /usr/local 后回车就能看到这个隐藏的目录)。
- 配置环境变量,打开终端,输入“open -e .bash_profile”,在打开的文件中加入
-
关闭.bash_profile编辑窗口,回到命令行,输入
source.bash_profile使配置生效。 -
输入
mongod -version,回车后若看到版本号则说明MongoDB已经成功安装
- 在根目录创建一个/data/db文件夹用来作为默认数据库目录。
sudo mkdir -p /data/db
- 打开命令行输入/usr/local/mongodb/bin/
./mongod
-
打开浏览器,输入localhost:27017 ,会出现这样一行文字。
-
重新打开命令行,输入
mongo(若报命令未找到问题,下边有解决办法)
安装过程中的问题及其解决方案
zsh: command not found: mongo
brew下载方式在运行
echo 'export PATH="/opt/homebrew/opt/mongodb-community@5.0/bin:$PATH"' >> ~/.zshrc后会自动注册,但是如果是安装包下载方式,就需要手动增加变量。
解决办法:
1. 查看 mongodb formulae
brew list
2. 查看并复制mongodb安装目录
brew list mongodb-community@5.0
----------------------------------------------------------------------
/opt/homebrew/Cellar/mongodb-community@5.0/5.0.21/bin/install_compass
/opt/homebrew/Cellar/mongodb-community@5.0/5.0.21/bin/mongo
/opt/homebrew/Cellar/mongodb-community@5.0/5.0.21/bin/mongod
/opt/homebrew/Cellar/mongodb-community@5.0/5.0.21/bin/mongos
/opt/homebrew/Cellar/mongodb-community@5.0/5.0.21/homebrew.mxcl.mongodb-community@5.0.plist
/opt/homebrew/Cellar/mongodb-community@5.0/5.0.21/macos_mongodb.plist
/opt/homebrew/Cellar/mongodb-community@5.0/5.0.21/MPL-2
/opt/homebrew/Cellar/mongodb-community@5.0/5.0.21/THIRD-PARTY-NOTICES
---------------------------------------------------------------------------
3. 更新 .zshrc 文件
vi ~/.zshrc
export PATH="/opt/homebrew/Cellar/mongodb-community@5.0/5.0.21/bin:${PATH}"
4.让文件生效
source ~/.zshrc
如果mongo指令还是现实找不到,去安装目录确认一下是否包含mongo指令,有的版本的bin目录下,本来就没有mongo这个文件。解决办法:1.下载之前版本的mongodb,将其bin目录下的mongo文件复制过来。再重启。2.下旧版本的mongodb。
complete:13: command not found: compdef
产生原因:
Compdef基本上是zsh用于加载自动完成的函数。需要激活完成系统。 如果您使用的是oh-my-zsh之类的东西,那么这已经解决了,否则您需要将以下内容添加到您的~/.zshrc
解决办法:
# 输入以下命令
vi ~/.zshrc
# 编辑器此时打开了`.zshrc`文件
# 将以下代码加入到文件内容顶部
autoload -Uz
compinit compinit
data/db: Read-only file system解决办
mkdir ~/data
//进入到~/data目录
cd ~/data
//查看目录路径
pwd
//路径需要换成你自己电脑上面的路径
sudo mongod --dbpath=/Users/xxx/data
brew services start xxx 启动异常问题
详细的报错信息 Bootstrap failed: 5: Input/output error
Try re-running the command as root for richer errors.Error: Failure while executing; '/bin/launchctl bootstrap gui/501 /Users/wangshiwei/Library/LaunchAgents/homebrew.mxcl.mongodb-community@5.0.plist' exited with 5.
解决办法:
出现此问题,大概率是权限问题,在运行指令前加上 sudo即可
brew services start mongodb-community@5.0
mongodb 启动后连接失败
详细报错信息
此问题一般是运行过程中文文件夹没有权限导致的,具体产生原因可以在运行 mongod指令在运行日志中查询到。
比如此处,问题是由于tem/mongodb-27017.scok文件夹没有权限导致的,直接删除重新运行。
sudo rm /tmp/mongodb-27017.sock
如果运行还是失败,则再次运行mongod指令查询日志
此处报错,是因为没有找到数据库数据存储地方 具体的解决办法:
brew安装下,mongodb相关配置文件所处位置。
打开opt/homebrew/etc/mongod.conf文件(根据电脑型号不同,位置可能不一样)并打开。
systemLog:
destination: file
path: /opt/homebrew/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /opt/homebrew/var/mongodb
net:
bindIp: 127.0.0.1, ::1
ipv6: true
运行 sudo mongod --dbpath /opt/homebrew/var/mongodb进行目录指定。
运行前,先将失败的服务关闭掉
1. brew services list // 查看运行状态
2. brew services start mongodb-community@5.0
3. brew services stop mongodb-community@5.0
再次运行
brew services start mongodb-community@5.0
brew services list // 查看运行状态
启动完成!
附录
常用的mongodb指令
1. 连接及查看所有数据库
mongo 主机ip:端口号/连接的数据库名 -u 用户名 -p 密码 //连接远程主机
mongo mongodb://root:12345@10.100.10.10:27017,10.100.10.11:27017/test //连接集群,会提示输入用户名密码
show databases 或 show dbs 查看数据库集合
db.dropDatabase() | 删除数据库
show users | 查看用户列表
db / db.getName() //查看当前数据库名称
db.stats() //显示当前DB的状态
db.version() //查看当前DB的版本
db.getMongo() //查看当前DB的连接的主机地址
2. 创建或切换数据库
use xxx // 如果数据库xxx存在,则切换到xxx数据库下,如果不存在则创建xxx数据库
3.数据集合
db //指当前数据库
db.auth('admin', 'admin') 授权验证
db.system.users.find() | 查看用户列表
db.createCollection("people") //创建名为people的集合
show collections //查看当前数据库下所有的集合
db.createUser({user: '1', pwd: '1', roles: [{role: 'read', db: 'g'}]}) | 创建用户
db.system.users.remove({user: 'username'}) | 删除用户
db.changeUserPassword('user', 'pwd') | 修改用户密码
db.runCommand({updateUser: 'x', pwd: '1'}) | 修改用户信息
db.runCommand({usersInfo: 'liurongqing'}) | 查看指定用户信息
------------------------------------------------------------------
4. 创建用户
show users //查看所有用户
//创建管理员用户
use admin # 进入 admin 库
db.createUser({
user: 'admin',
pwd: 'admin',
roles: [{
role: 'root',
db: 'admin'
}]
})
db.auth('admin', 'admin') # 验证
//创建普通用户
db.createUser({
user: 'wsw',
pwd: '123456',
roles: ['readWrite', 'dbAdmin', 'userAdmin']
})
db.dropUser('wsw') //删除用户
5. 数据库角色
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
内部角色:__system
6. 权限
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
mongodb 操作命令
-
用户操作
命令 功能 db.auth('admin', 'admin') 授权验证 db.system.users.find() 查看用户列表 show users 查看用户列表 db.createUser({user: '1', pwd: '1', roles: [{role: 'read', db: 'g'}]}) 创建用户 db.runCommand({usersInfo: 'liurongqing'}) 查看指定用户信息 db.runCommand({updateUser: 'x', pwd: '1'}) 修改用户信息 db.changeUserPassword('user', 'pwd') 修改用户密码 db.system.users.remove({user: 'username'}) 删除用户 -
db 库操作
命令 功能 show dbs 查看所有库 db.dropDatabase() 删除数据库 -
collection 集合操作(表)
命令 功能 show collections show tables 显示集合 db.createCollection('user') 创建集合 db.COLLECTION_NAME.drop() 删除集合
结语
如果觉得对你有帮助,记得点赞好评~好~~~评~~~评。