MongoDB从零安装到SHELL管理到远程连接配置与编程访问
发布日期:2021-06-28 21:35:43 浏览次数:2 分类:技术文章

本文共 3396 字,大约阅读时间需要 11 分钟。

引入

本文主要讲下面几点:

  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 Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/gpgcheck=1enabled=1gpgkey=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。

$ mongoMongoDB shell version v4.2.0connecting 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 
  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 --statenot running

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

$ systemctl stop firewalld.service
  1. 关闭selinux

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

$ sestatusSELinux 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 pymongohost = "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

转载地址:https://blog.csdn.net/ybdesire/article/details/99709480 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:从大数据看中国专利引用
下一篇:详解多分类模型的Micro-F1/Precision/Recall计算过程

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月20日 23时02分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章