安装
brew tap mongodb/brew
brew install mongodb-community
重要配置文件
- 配置文件: /usr/local/etc/mongod.conf
- 日志目录路径: /usr/local/var/log/mongodb
- 数据目录路径: /usr/local/var/mongodb
启动与关闭 mongod 服务
-
以服务方式
brew services start mongodb-community # 开启 brew services stop mongodb-community # 关闭 brew services restart mongodb-community # 重启 -
手动方式
mongod --config /usr/local/etc/mongod.conf # 开启 mongo admin --eval "db.shutdownServer()" # 关闭
杀死 mongod 进程
-
方法一
lsof -i:27017 kill 端口 -
方法二
pgrep mongod kill 端口 -
方法三
use admin db.shutdownServer()
运行
mongo
添加用户
-
创建管理员用户
use admin # 进入 admin 库 db.createUser({ user: 'admin', pwd: 'admin', roles: [{ role: 'root', db: 'admin' }] }) db.auth('admin', 'admin') # 验证 -
创建普通用户
use game # 进入 game 库 db.createUser({ user: 'liurongqing', pwd: '123456', roles: ['readWrite', 'dbAdmin', 'userAdmin'] })
角色权限
角色分类
| 角色 | 值 |
|---|---|
| 数据库用户角色 | read readWrite |
| 数据库管理角色 | dbAdmin dbOwner userAdmin |
| 集群管理角色 | clusterAdmin clusterManager clusterMonitor hostManager |
| 备份恢复角色 | backup restore |
| 所有数据库角色 | readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase dbAdminAnyDatabase |
| 超级用户角色 | root dbOwner userAdmin userAdminAnyDatabase |
| 内部角色 | system |
角色说明
| 角色 | 说明 |
|---|---|
| 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() 删除集合 -
文档数据操作(行)
命令 功能 db.COLLECTION_NAME.insert({title: '123'}) 插入文档 db.COLLECTION_NAME.find() 查询文档 db.COLLECTION_NAME.update({id: 1}, {name: 'xxx'}, {multi: false}) 更新文档 db.COLLECTION_NAME.save({_id: 'xxxx', name: 'xxx'}) 替换文档 db.COLLECTION_NAME.remove({id: 11}, 1) 删除文档 -
索引
命令 功能 db.users.getIndexes() 获取users表中的所有索引 db.users.dropIndex('name_1') 删除索引 -
其他
命令 功能 mongodb://{pwd}@{port}/${database} 连接
默认 mongod.conf 配置不变
systemLog:
destination: file
path: /usr/local/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
bindIp: 127.0.0.1
security:
authorization: enabled
错误处理
看 log 文件:
/usr/local/var/log/mongodb
Q: Support for MMAPV1 storage engine has been deprecated and will be removed in version 4.2
A: 清空数据 /usr/local/var/mongodb
rm -rf /usr/local/var/mongodb/*