本地主机连接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有些东西还要收费或者开会员。这帮人拿着不知道转了几手的东西居然还想收费?能不能有点开源精神?

相关推荐
ruleslol3 小时前
MySQL的段、区、页、行 详解
数据库·mysql
正在学习前端的---小方同学3 小时前
Harbor部署教程
linux·运维
while(1){yan}3 小时前
MyBatis Generator
数据库·spring boot·java-ee·mybatis
それども3 小时前
MySQL affectedRows 计算逻辑
数据库·mysql
是小章啊4 小时前
MySQL 之SQL 执行规则及索引详解
数据库·sql·mysql
富士康质检员张全蛋4 小时前
JDBC 连接池
数据库
yangminlei4 小时前
集成Camunda到Spring Boot项目
数据库·oracle
Sean X4 小时前
Ubuntu24.04安装向日葵
linux·ubuntu
ChineHe5 小时前
Redis数据类型篇002_详解Strings核心命令与存储结构
数据库·redis·缓存
清水白石0085 小时前
《从零到进阶:Pydantic v1 与 v2 的核心差异与零成本校验实现原理》
数据库·python