目录
测试环境:
安装步骤:
创建数据库目录
启动mongod服务
操作数据库
配置MongoDB认证账户
1:常用命令
2:roles字段,指定用户的角色,内置角色
3:设置密码
mongodb远程连接配置
集合查询方法
ubuntu: 16.04.4 LTS
gcc: 5.4.0
mongdb: 3.6.6
linux:查看版本
uname -a
cat /etc/issue
1:下载安装包
MongDB提供了linux各发行版的安装包,找到对应的安装包地址
官方地址:https://www.mongodb.com/download-center#community
当前目录为: /home/ubuntu
$:
sudo curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.6.6.tgz
2:解压
tar -zxvf mongodb-linux-x86_64-ubuntu1604-3.6.6.tgz
3:将解压文件移动到指定目录
mv mongodb-linux-x86_64-ubuntu1604-3.6.6/ /home/ubuntu/softwares/mongodb
sudo mkdir -p /data/MongoDB # 创建数据库目录
sudo chmod 777 /data/MongoDB #更改目录权限
sudo mkdir -p /data/MongoDB/data # 创建数据目录
sudo mkdir -p /data/MongoDB/log #创建日志目录
cd /data/MongoDB
vi mongodb.conf # 新建并编辑配置文件
文件内容为:
dbpath=/data/MongoDB/data #数据存储目录
logpath=/data/MongoDB/log/mongodb.log #日志文件路径
logappend = true #追加
port=27017 #端口号
fork=true #后台进程
cd /home/ubuntu/softwares/mongodb/bin/
mongod -f /data/MongoDB/mongodb.conf
连接数据库:
cd /home/ubuntu/softwares/mongodb/bin/
mongo
> show dbs
db.foo.save({a:1})
db.foo.find()
超级用户相关:
1. #进入数据库admin
use admin
2. #增加或修改用户密码
db.createUser({ user: "username", pwd: "password", roles: [{ role: "dbOwner", db: "yourdb" }] })
3. #查看用户列表
db.system.users.find()
4. #用户认证
db.auth('username','password')
5. #删除用户
db.removeUser('name')
6. #查看所有用户
show users
7. #查看所有数据库
show dbs
1 show dbs # 显示所有数据库
2 : 进入admin数据库并创建管理员账户
use admin
db.createUser({ user: "username", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
3:验证添加用户是否成功
db.auth("username","password") # 成功输出1,否则0
exit #退出
4:修改配置:
cd /data/MongoDB/
vi mongodb.conf
文件内容添加一行:
auth=true
5 重启mongod服务
ps -ef | grep mongo #查找进程
kill -s 9 进程号 #停止进程
/home/ubuntu/softwares/mongodb/bin/mongod -f /data/MongoDB/mongodb.conf #启动进程
6连接mongo
cd /home/ubuntu/softwares/mongodb/bin/
./mongo
7 查询数据库列表
> show db
8:管理员账户登录
use admin
db.auth("username","password")
9:管理其他数据库的账号密码
use bigdata
db.createUser({ user: "username", pwd: "password", roles: [{ role: "dbOwner", db: "yourdb" }] })
10:查看用户
>use admin
db.system.users.find()
1:修改配置文件
vi /data/MongoDB/mongodb.conf
配置文件内容:
把bind_ip=127.0.0.1这一行注释掉,修改成bind_ip=0.0.0.0
2:重启mongodb服务
ps -ef | grep mongo
kill -s 9 进程号 #停掉进程
/home/ubuntu/softwares/mongodb/bin/mongod -f /data/MongoDB/mongodb.conf#启动进程
3:防火墙开放37017端口
命令:iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 37017 -j ACCEPT
4远程连接
mongo 远程主机ip或DNS:端口号/数据库名 -u 用户名 -p
本机连接: mongo
使用默认端口: mongo 192.168.1.100
使用指定端口: mongo 192.168.1.100:37017
连接到指定数据库:mongo 192.168.1.100:37017/test -u user -p
db.collection.find() 查询集合中文档并返回结果为游标的文档集合。
语法:db.collection.find(query, projection)
find的第一个参数是查询条件,其形式也是一个文档,决定了要返回哪些文档,空的査询文档{}会匹配集合的全部内容。要是不指定査询文档,默认就是{},如同SQL中"SELECT * FROM TABLENAME"语句。
//将返回集合中所有文档db.collection.find()
第一个参数若为键/值对时,查询过程中就意味着执行了条件筛选
//mongo db
db.user.find({age:16})
//mongo db 多条件
db.user.find({age:28,sex:"male"})
我们可以通过find 的第二个参数来指定返回的键。在第二个参数中,指定键名且值为1或者true则是查询结果中显示的键;若值为0或者false,则为不显示键。文档中的键若在参数中没有指定,查询结果中将不会显示(_id例外)。这样我们就可以灵活显示声明来指定返回的键。
db.users.find({}, {"name" : 1, "age" : 1, "_id":0})
以年龄升序asc
db.users.find().sort({age: 1});
以年龄降序desc
db.users.find().sort({age: -1});
返回5条记录
db.users.find().limit(5);
# 查询
db.announcement.find().sort({"create_at":-1}).limit(5)
#删除一条记录
db.announcement.find({"original":"bitfinex","url":"https://www.bitfinex.com/posts/268"})
db.announcement.remove({"original":"bitfinex","url":"https://www.bitfinex.com/posts/268"})
db.announcement.find({"original":"bitfinex","url":"https://www.bitfinex.com/posts/268"})