常用命令

  1. // 1、开启MongoDB
  2. sudo service mongod start 或者 systemctl start mongod.service # 开启MongoDB
  3. sudo chkconfig mongod on # 加入开机启动
  4. sudo service mongod restart # 重启MongoDB
  5. // 2、关闭MongoDB
  6. sudo service mongod stop # 关闭防火墙
  7. // 3、卸载MongoDB
  8. sudo yum erase $(rpm -qa | grep mongodb-org) # 卸载MongoDB
  9. sudo rm -r /var/log/mongodb # 删除日志文件
  10. sudo rm -r /var/lib/mongo # 删除数据文件

远程连接

1、修改配置

  • vim /etc/mongod.conf

    1. # network interfaces
    2. net:
    3. port: 27017
    4. # 127.0.0.1仅能主机连接,需改成0.0.0.0
    5. bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

    2、重启

  • sudo service mongod restart

    3、开放端口

    ```shell systemctl status firewalld # 查看防火墙状态 firewall-cmd —zone=public —add-port=27017/tcp —permanent # mongodb默认端口号 firewall-cmd —reload # 重新加载防火墙

firewall-cmd —zone=public —query-port=27017/tcp # 查看端口号是否开放成功,输出yes开放成功,no则失败

  1. <a name="bxym7"></a>
  2. ### 4、远程连接
  3. - `mongo your server address:27017`
  4. <a name="M7vyH"></a>
  5. ### 设置密码
  6. 1. 进入admin数据库 use admin
  7. 1. 创建管理员账号
  8. ```shell
  9. db.createUser({ user: "root", pwd: "123456", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
  1. 测试
    1. db.auto('root','123456') 返回1则正确
  2. 开启验证

    1. sudo vim /etc/mongod.conf 修改 #security:
      1. security:
      2. authorization: enabled
  3. 重启服务

    1. sudo service mongod restart
  4. 测试admin数据库
    1. mongo进入数据库,use admin切换到admin数据库,运行show users会报错,因为你没有验证身份,需要先验证db.auth('root','123456'),再次运行show users则显示应有信息。
  5. 创建其他数据库密码
    1. 首先需要use admin切换到admin验证身份db.auth('root','123456'),再切换到test数据库use test,即在对应数据库创建用户权限才能成功。在此创建一个对test数据库读写创建删除权限,其他数据库只读权限的用户。
    2. db.createUser({user:'test',pwd:'test',roles:[{role:'readWrite',db:'test'},{role:'dbAdmin',db:'test'},'read']})
  6. 测试其他数据库
    1. exit退出数据再重新进入mongo,use test进入test数据库,show collections尝试查询集合,报错。db.auth('test','test')验证登录,再次查询集合show collections,不报错(无collection时会不显示任何信息)。
  7. 测试远程连接
    1. mongo your server address:27017/test,测试权限,方法同第8步。

      角色表

      | 分类 | role(角色) | 简要说明 | | —- | —- | —- | | 数据库用户角色(DB User Roles) | read readWrite | 为某个数据库创建一个用户, 分配该数据库的读写权力 | | 数据库管理员角色(DB Admin Roles) | dbAdmin dbOwner userAdmin | 拥有创建数据库, 和创建用户的权力 | | 集群管理角色(Culster Administration Roles) | clusterAdmin clusterManager clusterMonitor hostManager | 管理员组, 针对整个系统进行管理 | | 备份还原角色(Backup and Restoration Roles) | backup restore | 备份数据库, 还原数据库 | | 所有数据库角色(All-Database Roles) | readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase dbAdminAnyDatabase | 拥有对admin操作的权限 | | Superuser Roles(超级管理员) | root | dbOwner userAdmin userAdminAnyDatabase这几个角色角色提供了任何数据任何用户的任何权限的能力,拥有这个角色的用户可以在任何数据库上定义它们自己的权限 |

角色描述

  • Read:允许用户读取指定数据库
  • readWrite:允许用户读写指定数据库
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  • userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  • root:只在admin数据库中可用。超级账号,超级权限

    角色操作

    User Management Methods — MongoDB Manual

操作

  • 进入 mongo
  • db.auth(“root”,”root”)
  • show dbs;
  • use movie
  • 创建可访问用户
    1. db.createUser({
    2. user:"movie",
    3. pwd:"movie",
    4. customData:{
    5. name:'zhoukai',
    6. },
    7. roles:[
    8. {role:"readWrite",db:"movie"},
    9. 'read'
    10. ]
    11. })