记录一些常用的mongo基础操作。
1,mongo连接
默认安装以后,直接输入mongo 回车就可以了。 如果是连接本机非默认端口,或者是连接其他主机的mongo,那么就需要加参数了。 可以通过
mongo --help
查看帮助。
这里只记录两个:
--host 和--port
如果连接本机之外的其他机器:
mongo --host 10.1.14.93
如果连接本机之外的其他机器且端口并非默认的27017,而是27018,则需要:
mongo --host 10.1.14.93 --port 27018
2,mongo多实例启动
默认安装以后,有一个mongod的服务。 实际生产中,我们可能需要搞多个实例或者多个端口出来,直接通过自带服务来控制比较麻烦。
那么多实例和redis多实例差不多,就是通过 mongod -f /xxx/xxx/xxx.conf方式。 每个xxx.conf可以配置自己的实例信息,如log、datadir、副本集、端口和host等等。
[worker@xxxx]$ ps aux | grep mongo worker 1244 0.1 0.2 846452 84220 ? Sl Apr11 459:42 /home/worker/mongodb3.0/bin/mongod -f /home/worker/mongodb3.0/conf/mongod-test1-27611.cnf worker 1245 2.1 19.6 7745924 6367204 ? Sl Apr11 680:18 /home/worker/mongodb3.0/bin/mongod -f /home/worker/mongodb3.0/conf/mongod-test2-28111.cnf worker 1246 0.2 0.3 898780 103052 ? Sl Apr11 699:12 /home/worker/mongodb3.0/bin/mongod -f /home/worker/mongodb3.0/conf/mongod-test3-38017.cnf worker 1247 7.0 5.7 2701880 1864752 ? Sl Apr11 21:10 /home/worker/mongodb3.0/bin/mongod -f /home/worker/mongodb3.0/conf/mongod-test4-58017.cnf worker 1248 0.3 0.5 1009580 180808 ? Sl Apr11 12:28 /home/worker/mongodb3.0/bin/mongod -f /home/worker/mongodb3.0/conf/mongod-test5-27711.cnf worker 1249 6.4 10.4 5521480 3374432 ? Sl Apr11 26:32 /home/worker/mongodb3.0/bin/mongod -f /home/worker/mongodb3.0/conf/mongod-test6-48110.cnf worker 17293 0.0 0.0 103244 860 pts/0 S+ 20:56 0:00 grep mongo [worker@xxx]$ cat /home/worker/mongodb3.0/conf/mongod-test4-58017.cnf systemLog: destination: file path: "/home/worker/data/mongod-test4-58017/mongod.log" logAppend: true quiet: true storage: dbPath: "/home/worker/data/mongod-test4/" engine: "wiredTiger" journal: enabled: true wiredTiger: engineConfig: cacheSizeGB: 1 processManagement: fork: false pidFilePath: "/home/worker/data/mongod-test4-58017/mongod.pid" net: port: 58017 http: RESTInterfaceEnabled: false replication: oplogSizeMB: 20480 replSetName: test4
3,mongo用户管理和用户角色
use admin//切换到admin库 db.createUser( { user: "21yunwei", customData: {description: "superuser"}, pwd: "123456", roles: [ { role: "root", db: "admin" } ] } ) user指定用户,customData为说明字段,可以省略,pwd为密码,roles指定用户的角色,db指定库名 db.system.users.find() //列出所有用户,需要切换到admin库 show users //查看当前库下所有的用户 db.dropUser('admin') //删除用户 若要用户生效,还需要编辑启动脚本vim /usr/lib/systemd/system/mongod.service,在OPTIONS=后面增--auth 重启服务systemctl restart mongod mongo -u "21yunwei" -p "123456" --authenticationDatabase "admin" 说明:仅公司内网代码调用,可以忽略用户设置。具体根据生产环境要求来定。
补充用户权限控制:
use db1 db.createUser( { user: "test1", pwd: "123456", roles: [ { role: "readWrite", db: "db1" }, {role: "read", db: "db2" } ] } ) test1用户对db1库读写,对db2库只读。 之所以先use db1,表示用户在 db1 库中创建,就一定要db1库验证身份,即用户的信息跟随随数据库。比如上述 test1虽然有 db2 库的读取权限,但是一定要先在db1库进行身份验证,直接访问会提示验证失败。 use db2 db.auth("test1", "123456")
用户角色说明:
Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 root:只在admin数据库中可用。超级账号,超级权限
4,mongo库管理
db.version() //查看版本 use userdb //如果库存在就切换,不存在就创建 show dbs //查看库。 特殊场景:有些空库不会出现,原因空库没有任何集合,只需要创建一个集合就能看到了 db.createCollection('clo1') //创建集合clo1,在当前库下面创建 db.dropDatabase() //删除当前库,要想删除某个库,必须切换到那个库下 db.stats() //查看当前库的信息 db.serverStatus() //查看mongodb服务器的状态
5,mongo集合
use dbname //use要创建集合的那个库 db.createCollection('test') //创建集合test,在当前库下面创建 show tables //列出当前库下有几个集合,也可以使用show collections。一般使用show tables,方便
6,mongo数据管理
show tables //查看集合, 也可以用show collections db.Account.insert({AccountID:1,UserName:"21yunwei",password:"123456"}) //如果集合不存在,直接插入数据,则mongodb会自动创建集合 db.Account.update({AccountID:1},{"$set":{"UserName":"yunwei21"}}) //更新 db.Account.find() //查看所有文档 db.Account.find({AccountID:1}) //根据条件查询 db.Account.remove({AccountID:1}) //根据条件删除 db.Account.drop() //删除所有文档,即删除集合 use dbname //先进入对应的库 db.printCollectionStats() // 然后查看集合状态
转载请注明:21运维 » mongo基础–mongo连接、mongo多实例启动、mongo用户管理和用户角色、mongo库管理、mongo集合操作、mongo数据管理