本地主机连接Linux虚拟机中的mongodb,并使用studio 3T连接,同时项目启动连接mongodb刷新数据库

本部分只做个人纪录

**

1.安装mongodb

**

本部分为尚硅谷的电影推荐系统的文档,具体以实际存放位置为准

// 通过WGET下载Linux版本的MongoDB
[bigdata@linux ~]$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.3.tgz

// 将压缩包解压到指定目录
[bigdata@linux backup]$ tar -xf mongodb-linux-x86_64-rhel62-3.4.3.tgz -C ~/

// 将解压后的文件移动到最终的安装目录
[bigdata@linux ~]$ mv mongodb-linux-x86_64-rhel62-3.4.3/ /usr/local/mongodb

// 在安装目录下创建data文件夹用于存放数据和日志
[bigdata@linux mongodb]$ mkdir /usr/local/mongodb/data/

// 在data文件夹下创建db文件夹,用于存放数据
[bigdata@linux mongodb]$ mkdir /usr/local/mongodb/data/db/

// 在data文件夹下创建logs文件夹,用于存放日志
[bigdata@linux mongodb]$ mkdir /usr/local/mongodb/data/logs/

// 在logs文件夹下创建log文件
[bigdata@linux mongodb]$ touch /usr/local/mongodb/data/logs/ mongodb.log

// 在data文件夹下创建mongodb.conf配置文件
[bigdata@linux mongodb]$ touch /usr/local/mongodb/data/mongodb.conf

// 在mongodb.conf文件中输入如下内容
[bigdata@linux mongodb]$ vim ./data/mongodb.conf
#端口号port = 27017
#数据目录
dbpath = /usr/local/mongodb/data/db
#日志目录
logpath = /usr/local/mongodb/data/logs/mongodb.log
#设置后台运行
fork = true
#日志输出方式
logappend = true
#开启认证
#auth = true



// 启动MongoDB服务器
[bigdata@linux mongodb]$ sudo /usr/local/mongodb/bin/mongod -config /usr/local/mongodb/data/mongodb.conf
// 访问MongoDB服务器
[bigdata@linux mongodb]$ /usr/local/mongodb/bin/mongo
// 停止MongoDB服务器
[bigdata@linux mongodb]$ sudo /usr/local/mongodb/bin/mongod -shutdown -config /usr/local/mongodb/data/mongodb.conf

其中,本地的虚拟机没有按照文档的内容

2.启动部分如下

,注意,具体地址按照自己的情况来,不知道地址的可以看mongodb.conf文件的path配置,或者定位到bin目录使用pwd命令查看地址

   [zhouyu@firstwork ~]$ sudo /home/zhouyu/mongodb/bin/mongod -config /home/zhouyu/mongodb/data/mongodb.conf

,再或者cd多次直到bin的上级目录,使用

[ zhouyu@firstwork  mongodb]$ sudo bin/mongod -config   ./data/mongodb.conf

总之这种启动方式注意mongodb.conf和bin目录就行,把握这两个就万变不离其宗了

然后是访问MongoDB服务器:

[zhouyu@firstwork ~]$ cd mongodb/
[zhouyu@firstwork mongodb]$ bin/mongod -config ./data/mongodb.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 2828
child process started successfully, parent exiting
[zhouyu@firstwork mongodb]$ jps
2923 Jps
[zhouyu@firstwork mongodb]$ ps -ef | grep mongo
zhouyu     2828      1  0 18:01 ?        00:00:02 bin/mongod -config ./data/mongodb.conf
zhouyu     2958   2719  0 18:08 pts/0    00:00:00 grep --color=auto mongo
[zhouyu@firstwork mongodb]$ bin/mongo
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
Server has startup warnings: 
2024-03-20T18:01:04.145+0800 I CONTROL  [initandlisten] 
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] 
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] 
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] 
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] 
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 2048 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files.
2024-03-20T18:01:04.146+0800 I CONTROL  [initandlisten] 
> show dbs
admin  0.000GB
local  0.000GB

在Linux的火狐浏览器中访问 http://192.168.220.131:27017/ 可得如下内容:这是

由于mongodb不支持http请求的原因,不必介意,可以视为虚拟机内部可以访问mongodb了

如果你不知道ip,使用ifconfig命令即可知道 ,那个ensxxx的inet就是你的ip,端口号默认是

27017,除非你要指定了,不然默认即可

[zhouyu@firstwork ~]$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.220.131  netmask 255.255.255.0  broadcast 192.168.220.255
        inet6 fe80::257a:5178:2031:5aab  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c8:52:c1  txqueuelen 1000  (Ethernet)
        RX packets 31184  bytes 13846558 (13.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8065  bytes 1695812 (1.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 360  bytes 33822 (33.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 360  bytes 33822 (33.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:1d:cd:84  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

有用信息:

      inet 192.168.220.131     ip地址
      netmask 255.255.255.0 子网掩码
      broadcast 192.168.220.255 广播地址

但是问题是在外部浏览器无法访问,这里就需要考虑两个问题

第一是防火墙的问题

[zhouyu@firstwork ~]$ su root
密码:
[root@firstwork zhouyu]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2024-03-20 19:52:34 CST; 2h 11min ago
     Docs: man:firewalld(1)
 Main PID: 773 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─773 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

3月 20 19:52:34 firstwork systemd[1]: Starting firewalld - dynamic firewal.....
3月 20 19:52:34 firstwork systemd[1]: Started firewalld - dynamic firewall...n.
3月 20 19:52:35 firstwork firewalld[773]: WARNING: AllowZoneDrifting is ena....
Hint: Some lines were ellipsized, use -l to show in full.
[root@firstwork zhouyu]# systemctl stop firewalld.service
[root@firstwork zhouyu]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 三 2024-03-20 22:04:31 CST; 5s ago
     Docs: man:firewalld(1)
  Process: 773 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 773 (code=exited, status=0/SUCCESS)

3月 20 19:52:34 firstwork systemd[1]: Starting firewalld - dynamic firewal.....
3月 20 19:52:34 firstwork systemd[1]: Started firewalld - dynamic firewall...n.
3月 20 19:52:35 firstwork firewalld[773]: WARNING: AllowZoneDrifting is ena....
3月 20 22:04:30 firstwork systemd[1]: Stopping firewalld - dynamic firewal.....
3月 20 22:04:31 firstwork systemd[1]: Stopped firewalld - dynamic firewall...n.
Hint: Some lines were ellipsized, use -l to show in full.
[root@firstwork zhouyu]# exit

有三点注意:

1.有些命令需要确定是不是在root下进行,防火墙的命令是需要切换的

切换root 使用 su root即可

  1. systemctl status firewalld 是查看状态 systemctl stop firewalld.service 是停用,不过只是单次这意味着如果你重启后该命令就失效了,防火墙仍然开启,我就吃亏在这上面 systemctl enable firewalld.service 开启开机启动 systemctl disable firewalld.service 关闭开机启动 :

3.用完root后记得exit切换会普通用户

第二是修改mongod.conf文件,还记得前面的配置吗

我们需要加点东西

如果是这种,写bind_ip即可,如果是yaml格式
这种就需要按照驼峰规则了

查看到conf文件过程:

[zhouyu@firstwork mongodb]$ cd data
[zhouyu@firstwork data]$ ls
db  logs  mongodb.conf
[zhouyu@firstwork data]$ cd mongodb.conf
bash: cd: mongodb.conf: 不是目录
[zhouyu@firstwork data]$ vim mongodb.conf 

之前我们只是在虚拟机内部的浏览器查看,现在我们可以在外部,访问虚拟机了

在使用studio 3T连接之前

在外部的浏览器使用之前在火狐的ip:端口号如法炮制,如果得到相同内容,则说明可以尝试了

这里还需要提醒一点,我的auth=true是关闭的,就是说没开启认证,我不清楚开启认证对于后面连接的是否需要连接ssh部分有影响,这里提醒一下,后期有机会补充

我使用的是studio 3T,下载不赘述

选下面的


输入后点击测试,成功后点击ok->save即可

如果右侧没有这些,则直接退出重进一般会有

点击运行scala,连接mongodb数据库

出现相关内容

至此成功

总之,该部分写的过程我查了一些资料,可惜没有完整走一遍,都是东拼西凑。我自己也纪录的不详细,时间仓促,只能写出来这点东西了。希望可以给别人一些帮助吧。

我看csdn有些东西还要收费或者开会员。这帮人拿着不知道转了几手的东西居然还想收费?能不能有点开源精神?

相关推荐
糖豆豆今天也要努力鸭5 分钟前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
烦躁的大鼻嘎14 分钟前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
ac.char21 分钟前
在 Ubuntu 上安装 Yarn 环境
linux·运维·服务器·ubuntu
敲上瘾21 分钟前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc
tatasix38 分钟前
MySQL UPDATE语句执行链路解析
数据库·mysql
长弓聊编程39 分钟前
Linux系统使用valgrind分析C++程序内存资源使用情况
linux·c++
cherub.1 小时前
深入解析信号量:定义与环形队列生产消费模型剖析
linux·c++
南城花随雪。1 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度1 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang