MongoDB从零安装到SHELL管理到远程连接配置与编程访问

25 篇文章 0 订阅
5 篇文章 0 订阅

引入

本文主要讲下面几点:

  1. 在CentOS下安装mongo的过程

  2. 安装完成后,本地访问mongo以及在mongo shell下基础的mongo管理命令

  3. 无法远程访问mongo的解决方法

本文环境

  • CentOS Linux 7 (Core)
  • MongoDB 4.2
  • 远程连接:Windows 10, 远程GUI工具 studio3T

1. CentOS下安装MongoDB的步骤

mongo的官方文档[1]中给出了详细的安装步骤,我这里跳过了部分步骤,一切按照default的配置来安装。

  1. 配置yum源

我们每次运行yum install时,它都会解析/etc/yum.repos.d下所有以.repo结尾的配置文件,这些配置文件指定了yum服务器的地址。

将如下内容写入到/etc/yum.repos.d/mongodb-org-4.2.repo

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

打开文件时,需要加sudo,才可以保存

sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo
  1. 安装Mongo
sudo yum install -y mongodb-org
  1. 启动MongoDB
sudo service mongod start

与之类似的另一条常用命令是“重启”,如果修改了某些配置,就需要重启mongo。

sudo service mongod restart
  1. 确认启动是否成功

若启动成功,在/var/log/mongodb/mongod.log中,能查看到启动的log,以及端口,配置文件位置的输出。

默认的配置文件和端口为/etc/mongod.conf, 27017。

2. Mongo Shell使用

在安装mongo的服务器本地,执行mongo命令,就能进入mongo shell。

$ mongo
MongoDB shell version v4.2.0
connecting to: mongodb://127.0.0.1:27017/
Implicit session: session { "id" : UUID("xx-xxx-x-xx-xxx") }
>

在shell中,可以使用命令来管理mongo。

初次安装的mongo,为了能让它被远程连接,也需要跟随如下步骤依次进行配置。

  1. 查看所有DB
> show dbs
  1. 使用某个DB
> use <dbname>
  1. 列出所有collections
> show collections

在执行这条命令前,需要用上一条“use”命令,选中某个db。

  1. 查看用户
> show users

在执行这条命令前,需要用上一条“use”命令,选中某个db。才能用本条命令查看使用某个db的所有用户。

  1. 添加用户

mongo没有提供创建DB的命令[3]。为了能对mongo添加用户名和密码,我们只能在默认的admin这个DB上创建用户。

> use admin
> db.createUser(  {    user: "test",    pwd: "test",    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  })
  1. 添加一个collection

在某个DB下,添加一个叫做test的collection。

> db.createCollection('test')
{ "ok" : 1 }

在执行这条命令前,需要用上一条“use”命令,选中某个db。

  1. 往collection中插入document
> db.test.insertOne( {"_id":11, "key":"value"} )

在执行这条命令前,需要用上一条“use”命令,选中某个db。

  1. 查找

在某个DB的collection中查找’key’=='value’的内容:

> db.test.find( {'key':'value'} )
{ "_id" : 10, "key" : "value" }
{ "_id" : 11, "key" : "value" }
{ "_id" : 12, "key" : "value" }

3. 无法远程访问mongo的解决方法

首次安装后,mongo可以在本地用上面的命令进行访问,但无法在远程的GUI或python代码中链接,远程访问报错如下:

No connection could be made because the target machine actively refused it

这是一个网络问题,应该从如下几点来解决:

  1. 关闭防火墙

查看防火墙状态,必须是关闭状态(如下)

$ firewall-cmd --state
not running

若不是关闭状态,用如下命令关闭防火墙

$ systemctl stop firewalld.service
  1. 关闭selinux

查看selinux的状态,必须为关闭(如下)

$ sestatus
SELinux status:                 disabled

若不是关闭状态,用如下命令关闭

临时关闭

$ setenforce 0

永久关闭

$ sudo vim /etc/selinux/config   
   
SELINUX=disabled  
  1. 删除mongod.lock文件
$ sudo rm /var/lib/mongodb/mongod.lock
$ sudo service mongodb restart
  1. 修改mongod.conf配置

/var/log/mongodb/mongod.log中,能查看到启动的log,以及配置文件位置的输出。默认的配置文件为/etc/mongod.conf

将 bind_ip = 127.0.0.1 改为 bind_ip = 0.0.0.0 即可。

4. MongoGUI的使用

Studio 3T for MongoDB,是一个比较好用的Mongo GUI工具。

首次创建的MongoDB,使用GUI工具连接前,必须要使用db.createUser添加用户(见上面的2.5),然后就可以用这个用户名和密码进行访问了。

在Studio 3T中,就可以“Add Database”,或者在某个DB中添加用户并为其设置读写权限了(右键,“Manage Users”)。

5. pymongo访问Mongo的示例代码

可以使用如下python代码来测试mongo远程连接是否成功。

import pymongo

host = "10.x.x.x:27017"
dbname="test"
username = "test"
password = "test"
client = pymongo.MongoClient(host)
client.the_database.authenticate(username, password, source=dbname)
db = client[dbname]
print(db.list_collection_names())

更多pymongo示例代码见我的github [4]

参考

  • [1] https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
  • [2] Mongo Shell命令。 https://docs.mongodb.com/manual/reference/mongo-shell/
  • [3] https://tecadmin.net/create-and-drop-database-in-mongodb/
  • [4] https://github.com/ybdesire/pylearn/tree/master/mongodb
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值