mongo我的库

本文详细介绍MongoDB的部署步骤及基本操作,包括数据库的创建、数据增删查改、用户权限设置等,并提供数据库备份与恢复的具体命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、mongodb部署

下载:先下到window系统再用xshell传到虚拟机上喽

http://www.mongodb.org/downloads

安装:用xshell上传到虚拟机root用户的家目录下

# tar -xvfmongodb-linux-x86_64-rhel70-3.4.9.gz//解压

# mv mongodb-linux-x86_64-rhel70-3.4.9mongo///将解压后的文件改个好记的名字

//////或者做软连接

# ln ‐s mongodb‐linux‐x86_64‐rhel70-3.4.0/ mongo

配置:

# vim /etc/bashrc///在末尾添加

exportPATH=$PATH:/root/mongo/bin

# source/etc/bashrc

#cd mongo

mongo]# which mongo

/root/mongo/bin/mongo

# mkdir/mongodb/data/db -p ///创建数据存放位置

# mkdir/mongodb/data/log -p

配置文件启动:

[root@c7-o12c-5mongo]# cat /mongodb/mongodb.cnf

dbpath=/mongodb/data/db

logpath=/mongodb/data/log/mongodb.log

logappend=true

port=27017

[root@7 c7-o12c-5mongo]# mongod -f /mongodb/mongodb.cnf &//启动

[root@c7-o12c-5mongo]# ps -ef | grep mongo

root      5764  2483 1 09:46 pts/0   00:00:23 mongod -f /mongodb/mongodb.cnf--rest

root      6354  2483 0 10:13 pts/0   00:00:00 grep --color=auto mongo

[root@c7-o12c-5mongo]# mongo

 

数据库的简单操作,

>db ////当前库名

>show dbs ////所有有数据的库

>use admin /////切换到admin库下

> db.rundb.insert({x:10})///在当前库下建一个集合rundb并且插入数据。

> show tables ///当前库下的所有集合

> db.rundb.find()  ///展开rundb这个集合

> use he /////切换到he库下,没有就创建一个空库。

> db.createCollection("tbadmin"); /////在当前库下创建一个tbadmin空表

> show tables  /////查看当前目录下的表,空表也显示

> show collections ////和上一个命令一样功能。

> db.tbadmin.renameCollection("admintb") /////tbadmin改名为admintb

>db.createUser({user:"yhtest",pwd:"yhtest",roles:[{role:"userAdmin",db:"test"}]})  ///创建用户,密码及其角色

> db.test.insert({"name":"测试"}) /////test表中插入数据;

 > db.cooperation.drop() /////删除表

 

导出mongodb数据库 

语句:mongodump -h IP --port端口 -u用户名 -p密码 -d数据库 -o文件存在路径

如果没有用户谁,可以去掉-u-p

如果导出本机的数据库,可以去掉-h

如果是默认端口,可以去掉--port

如果想导出所有数据库,可以去掉-d

实例:

mongodump -h IP --port 27017 -u info -ptest-d test-o D:/mongodb/backups/  备注:本地不用加:-h IP

mongodump -h IP -d test-oD:/mongodb/backups/ 导出指定数据库

导入mongodb数据库

语句:mongorestore -h IP --port端口 -u用户名 -p密码 -d数据库 --drop文件存在路径

实例:

mongorestore -h IP  --port 27017-u test-p test-d test--drop D:/mongodb/backups/2016-7-6/test备注:本地不用加:-h IP

 

> show tables;

rundb

test

> db.test.find()

{ "_id" :ObjectId("59c9bb1f3c49ff4e1286f1c4"), "name" : "测试" }

{ "_id" :ObjectId("59c9c0ea3c49ff4e1286f1c5"), "name" :"ceshi" }

>db.test.insert({"address":"shanghai","address":"nanjing","age":12})

WriteResult({ "nInserted" : 1 })

> db.test.find()

{ "_id" :ObjectId("59c9bb1f3c49ff4e1286f1c4"), "name" : "测试" }

{ "_id" :ObjectId("59c9c0ea3c49ff4e1286f1c5"), "name" :"ceshi" }

{ "_id" :ObjectId("59c9c7c4e23cd1e6e1a1e717"), "address" :"nanjing", "age" : 12 }

>db.test.insert({"address":"shanghai","age":11})

WriteResult({ "nInserted" : 1 })

> db.test.find()

{ "_id" :ObjectId("59c9bb1f3c49ff4e1286f1c4"), "name" : "测试" }

{ "_id" : ObjectId("59c9c0ea3c49ff4e1286f1c5"),"name" : "ceshi" }

{ "_id" :ObjectId("59c9c7c4e23cd1e6e1a1e717"), "address" :"nanjing", "age" : 12 }

{ "_id" :ObjectId("59c9c833e23cd1e6e1a1e718"), "address" :"shanghai", "age" : 11 }

> db.test.distinct("name") ///只列出name

[ "测试","ceshi" ]

> db.test.distinct("address")

[ "nanjing", "shanghai"]

http://www.cnblogs.com/libingql/archive/2011/06/09/2076440.html/////操作参考

 

mongo数据库备份

# mkdir -p /home/mongodump /////先创建一个备份目录

# mongodump -h 192.168.7.109:27017 -d test -o/home/mongodump ///将主机27017端口里的库实例test备份到指定目录。

# ls /home/mongodump/test /////可以看到库里面的集合

> db

test

> db.dropDatabase() /////删除当前库

> show dbs;

admin 0.000GB

local 0.000GB

# mongorestore -h 192.168.7.109:27017 -d test --dir/home/mongodump/test/    //////数据库还原

# mongo

> show dbs

admin 0.000GB

local 0.000GB

test  0.000GB ////成功还原

参考http://www.cnblogs.com/qingtianyu2015/p/5968400.html

 

认证和授权:

1.启动mongodb时准备

# mongod dbpath--……………………加上‐‐auth  

或者

修改/etc/mongodb.conf配置文件

加上auth = True

2.连接实例

#mongo –port 27017

3.创建超级账户

> use admin

> db.createUser({user: "户名",pwd: "密码",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]} )

              userAdminAnyDatabase--à只针对用户管理,对其他没有权限

4.带访问控制重启实例

 # mongoddbpath--……………………加上‐‐auth 

或者:

#mongod -f /mongodb/mongodb.cnf &

5.连接并认证超级账户

连接前认证#mongo ‐‐port 27017 ‐u "超级用户名" ‐p "密码" ‐‐authenticationDatabase "admin"

                    mongo--port 27017 -u "myUserAdmin" -p "admin" --authenticationDatabase"admin"

连接后认证:#mongo

                    >useadmin

                    >db.auth(“超级用户名”,”密码”)

                    >show users =====///列出当前库的所有用户

                    >db.system.users.find()=====///列出系统中的所有用户

6.根据要求创建用户

       为数据库he创建一个用户heuser,并对其库有读写权,对库ya有读的权限。

>use he

> db.createUser({user:"heuser",pwd:"123456",roles:[{role:"readWrite",db:"he"},{role:"read",db:"ya"}]})

7.heuser连接认证

连接前:#mongo –port27017 -u “heuser” -p “123456” –authenticationDatabase “test”

连接后:#mongo –port 27017

              >usehe

              >db.auth("heuser""123456")

              >db.hedb.insert({“name”:”hehe”})////ok

              >useya

              >db.yadb.insert({“name”:”yaya”})///no

             

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

### 关于 MongoDB 的 15752 端口、配置及相关错误 在讨论 MongoDB 的 15752 端口及其可能涉及的配置或错误之前,需了解 MongoDB 默认使用的是 27017 端口作为其主要通信端口。然而,在某些情况下,可能会涉及到其他端口,例如 15752。以下是关于此主题的一些分析: #### 1. **MongoDB 使用非标准端口** 如果 MongoDB 被配置为使用非标准端口(如 15752),则需要确保该端口未被其他程序占用,并且防火墙规则允许流量通过该端口。可以通过以下命令检查指定端口是否已被占用: ```bash netstat -anp | grep 15752 ``` 如果发现冲突,则需要调整 MongoDB 配置文件中的 `port` 参数以解决冲突[^1]。 #### 2. **SELinux 对自定义端口的影响** 当更改 MongoDB 的默认端口时,SELinux 可能会对新端口施加限制。这是因为 SELinux 将默认的 27017 端口标记为 `mongod_port_t` 类型,而其他端口可能不具备此类权限。要使 MongoDB 正常工作,可以执行以下操作之一: - 添加新的端口到 SELinux 的允许列表中: ```bash semanage port -a -t mongod_port_t -p tcp 15752 ``` - 或者临时禁用 SELinux 来验证问题根源: ```bash setenforce 0 ``` 需要注意的是,长期解决方案应优先考虑正确配置 SELinux,而不是完全关闭它[^3]。 #### 3. **Node.js 连接 MongoDB 自定义端口** 假设 MongoDB 已经配置为使用 15752 端口运行,那么 Node.js 应用程序也需要相应更新连接字符串来匹配这一变化。例如,基于引用的内容[^4],可以在 `dbconnect.js` 文件中修改如下: ```javascript const mongoose = require("mongoose"); mongoose.connect("mongodb://localhost:15752/mongoose_test", { useNewUrlParser: true, useUnifiedTopology: true, }); mongoose.connection.once("open", function () { console.log("连接成功"); }); ``` 这里特别注意 URL 中指定了 `15752` 端口号部分。 #### 4. **潜在的错误代码解释** 虽然目前没有具体提及错误代码 15752 是否存在以及它的含义,但从上下文中推测,这更像是一种人为设定而非官方已知的标准错误码。对于实际存在的 MongoDB 错误编码体系来说,它们通常描述具体的内部状态或者网络异常等问题。如果有确切的日志提示包含这个编号的话,建议查阅官方文档进一步确认意义所在。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值