ubuntu 16.04 linux下mongodb的安装和配置

目录

测试环境:

安装步骤:

创建数据库目录

启动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

 

ubuntu 16.04 linux下mongodb的安装和配置

 

当前目录为: /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 #后台进程

 

启动mongod服务

cd /home/ubuntu/softwares/mongodb/bin/

mongod -f /data/MongoDB/mongodb.conf

 

连接数据库:

cd /home/ubuntu/softwares/mongodb/bin/

mongo

 

ubuntu 16.04 linux下mongodb的安装和配置

 

操作数据库

> show dbs

db.foo.save({a:1})

db.foo.find()

ubuntu 16.04 linux下mongodb的安装和配置

 

配置MongoDB认证账户

 

1:常用命令

 超级用户相关:

        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

2:roles字段,指定用户的角色,内置角色

 

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
  7. 内部角色:__system
    PS:关于每个角色所拥有的操作权限可以点击上面的内置角色链接查看详情。

 

 

3:设置密码

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

ubuntu 16.04 linux下mongodb的安装和配置

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

 

ubuntu 16.04 linux下mongodb的安装和配置

 

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()

ubuntu 16.04 linux下mongodb的安装和配置

 

mongodb远程连接配置

1:修改配置文件

vi /data/MongoDB/mongodb.conf

配置文件内容:

把bind_ip=127.0.0.1这一行注释掉,修改成bind_ip=0.0.0.0

ubuntu 16.04 linux下mongodb的安装和配置

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"})