mongodb 安装 用户权限分配
准备工作:
可以到MongoDB的官网 www.mongodb.org下载,我们在项目中实际使用的是3.0.2版本,https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.0.2.tgz,(可下载一下安装包到本地)
在/usr/local/ 下新建mongodb 文件夹,在mongodb文件夹下新建 data,
data 文件夹下新建db(存放数据库文件)、log文件夹(存放日志文件)。
1.将安装包拷贝到mongodb文件夹下,
2.解压安装包: tar -zxvf mongodb-linux-x86_64-rhel62-3.0.2.tgz
3.删除安装包: rm -f ./mongodb-linux-x86_64-rhel62-3.0.2.tgz
4.重命名解压后的文件夹名称(方便以后操作): mv mongodb-linux-x86_64-rhel62-3.0.2 mongodb3.0.2
以下是MongoDB部分常用启动参数。
--dbpath:指定存储数据的文件夹
--logpath:指定日志存储文件
--logappend:日志以增加方式产生
--port指定端口,如果不写的话,默认是27017
--fork代表后台运行
实质操作:
# cd /usr/local/data/log
# touch mongodb.log
1.启动mongodb
一共两种方式 有权限 无权限(谁都能连接删除,非常不安全)
无权限
./mongod -dbpath=/usr/local/mongodb/data/ -logpath=/usr/local/mongodb/data/log/mongodb.log -logappend -fork
有权限 (所有ip都可以,下面会说怎吗设置用户)
./mongod -dbpath=/usr/local/mongodb/data/ -logpath=/usr/local/mongodb/data/log/mongodb.log -logappend -fork -auth -bind_ip 0.0.0.0
成功图:
2、停止mongodb
# cd /usr/local/mongodb/bin
# ./mongod -shutdown -dbpath=/usr/local/mongodb/data 或者你可以查询后台进程,查杀进程
例如:ps -ef | grep mongodb 然后杀掉 kill -2 ****
3 登录mongodb
# cd /usr/local/mongodb/bin
# ./mongo
4.建立用户和集合权限等操作
# use admin
# use test (创建自己的数据库)
# db.createUser({user: "cat", pwd: "cat123456", roles:[ {role: "dbOwner", db: "test" }]})
# show users (查询用户)
# show collections (查询集合)
隐式创建集合
db.ExecuDocMongo.insert({_id:11,"name":222})
# show collections
你会看到 ExecuDocMongo 集合
角色类型
Read:允许用户读取指定数据库readWrite:允许用户读写指定数据库dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profileuserAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。root:只在admin数据库中可用。超级账号,超级权限
具体附带操作命令:
一,创建Collection
1,查看当前database中的collection列表
show collections
2,隐式创建Collection
在MongoDB中,Collection相当于关系型数据库的Table,用户不需要显式定义Collection就能向Collection插入数据。在第一次向Collection插入数据时,MongoDB会自动创建Collection;如果Collection已经存在于Database中,那么MongoDB直接向Collection中插入数据。
db.foo.insert({_id:1,name:"test"})
3,显式创建Collection
使用 db.createCollection() 显式创建Collection,通过指定Collection Option,创建特定用途的Collection。
Because MongoDB creates a collection implicitly when the collection is first referenced in a command, this method is used primarily for creating new collections that use
specific options.
例如,创建固定集合(Capped Collection),普通集合能够自动增长以容纳更多的doc,但是固定集合有最大的size,容纳的doc不能超过限制(max选项)。
db.createCollection("log", { capped :true,
size : 5242880, max : 5000 } )
4,删除collection,调用collection的drop方法删除collection
db.collection_name.drop()
二,创建database
1,查看MongoDB的database列表
show dbs
查看当前连接所在的Database
db
2,使用use 命令创建database
use my_database_name
MongoDB返回以下信息,use 命令只是向MongoDB注册database,并没有实际的创建使用show dbs 查看,列表中没有该database。
switched to db my_database_name
3,在当前database中创建collection,并向集合中插入数据
db.foo.insert({_id:1,name:"test"})
此时,MongoDB真正创建database,查看存储数据的folder,发现多了两个.wt文件,一个用于存储数据,一个用于存储index。使用show dbs 查看,列表中存在该database。
三,删除database
删除database时,必须十分小心,除非用于测试环境,否则,不要轻易使用这个命令
1,使用use命令,切换到指定的database
use database_name
2,使用db命令,查看当前database,避免删错
db
3,删除当前database
db.dropDatabase()