CentOS7 上部署mongodb (此教程采用版本3.4.18)

  1. tar 包下载
    官网地址:https://www.mongodb.com/download-center/community?jmp=nav
  2. 上传服务器与解压
tar  -zxvf   mongodb-linux-x86_64-3.4.18.tgz
  1. mongodb-linux-x86_64-3.4.18 移到 /usr/local下 并创建软连接
mv  
ln -s  mongodb  mongodb-linux-x86_64-3.4.18
  1. 创建数据目录 日志目录
cd  mongodb  
mkdir data 
mkdir  logs
vi  mongodb.log  
wq 保存
  1. 配置环境变量
#vim / etc / profile
export PATH=/usr/local/mongodb/ bin/:$PATH
重新加载配置文件
#source /etc/profile        
  1. 在bin目录下创建 mongodb.conf
dbpath=/usr/local/mongodb/data                  # 数据保存目录
logpath=/usr/local/mongodb/logs/mongodb.log     # 日志目录
logappend=true                                  # 追加写日志
# fork=true                                     # 后台运行 第一次运行不要放开
maxConns=5000                                   # 最大连接数 默认2000 
storageEngine=mmapv1                             # 指定存储引擎为内存映射文件                   
port=27020                                       # 服务端口
bind_ip=0.0.0.0     #  建议访问ip不要采用,分割方式   阿里云内外网问题 注意有外网访问必须为0.0.0.0 否则访问不到
# auth=true # 开启校验用户 第一次启动不要打开

详细配置(可以参考此文章):https://blog.csdn.net/wlzx120/article/details/52301812
6. 设置启动脚本
在bin 目录下

vim start-mongodb.sh
 nohup ./mongod -f mongodb.conf &      # 后台启动命令
  1. 利用 mongod -f mongodb.conf 启动
mongod -f mongodb.conf
启动后
./mongo
[root@iZbpb3u bin]# ./mongo
MongoDB shell version v3.4.18
connecting to: mongodb://127.0.0.1:27020
MongoDB server version: 3.4.18
Server has startup warnings: 
2020-08-21T20:13:41.771+0800 I STORAGE  [initandlisten] 
2020-08-21T20:13:41.771+0800 I STORAGE  [initandlisten] ** WARNING: Readahead for /usr/local/mongodb/data is set to 4096KB
2020-08-21T20:13:41.771+0800 I STORAGE  [initandlisten] **          We suggest setting it to 256KB (512 sectors) or less
2020-08-21T20:13:41.771+0800 I STORAGE  [initandlisten] **          http://dochub.mongodb.org/core/readahead
2020-08-21T20:13:41.887+0800 I CONTROL  [initandlisten] 
2020-08-21T20:13:41.887+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-08-21T20:13:41.887+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-08-21T20:13:41.887+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2020-08-21T20:13:41.887+0800 I CONTROL  [initandlisten] 
2020-08-21T20:13:41.888+0800 I CONTROL  [initandlisten] 
2020-08-21T20:13:41.888+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-08-21T20:13:41.888+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-08-21T20:13:41.888+0800 I CONTROL  [initandlisten] 
2020-08-21T20:13:41.888+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2020-08-21T20:13:41.888+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-08-21T20:13:41.888+0800 I CONTROL  [initandlisten] 
2020-08-21T20:13:41.888+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 7271 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
2020-08-21T20:13:41.888+0800 I CONTROL  [initandlisten] 
> 
表示成功进入
  1. 命令行命令简略
show dbs:查看数据库
use admin:切换到admin数据库,如果没有就创建
创建用户:
db.createUser(<userinfo>)
其中userinfo是一个json数据 , 包含下列属性

user - 用户名
pwd - 密码
customData - 任意的自定义内容
roles : [{ role : <角色类型>, db : <数据库名称> } , … ]
一个用户可以对应多个角色 , 所以是一个数组结构
mongoDB当中内置的角色类型有:

数据库用户角色:read、readWrite;
允许用户 读/读写 指定的数据库
数据库管理角色:dbAdmin、dbOwner;
允许在指定数据库中执行管理函数 , 如索引增删 查看统计等
用户管理角色:userAdmin
允许向system.users集合写入数据, 可以在指定数据库增删用户
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
可以在所有数据库中进行 读/读写/用户管理
超级用户角色:root
内部角色:__system
举例
db.createUser({
  user:"mongodb",
  pwd:"123456",
  roles:[
    {role:"userAdmin",db:"admin"},
    {role:"read",db:"demo_test"}
  ]
})
注意:
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
  1. 创建库并创建用户
创建库:
use test_demo
db.demo_test.insert({"name":"test"})
要插入数据的原因 创建库但是 没数据 此时不会显示这个库,不显示这个库就没办法添加用户
db.createUser({
  user:"admin_test",
  pwd:"admin_test",
  roles:[
    {role:"userAdmin",db:"test_demo"}
  ]
})

出现:
Successfully added user: {  表示用户创建成功

10 . 停止服务 从新启动

[root@Z bin]# ps ax | grep mongod
 9669 pts/1    SLl+   0:03 ./mongod -f ./mongodb.conf
 9749 pts/0    S+     0:00 grep --color=auto mongod
[root@Z bin]# kill -9 9669

将配置文件  后台启动与权限验证放开

启动 启动脚本

10 navcat 拦截测试
在这里插入图片描述
11. 测试数据写入(以python举例)


import pymongo

# 创建一个数据库连接
conn = pymongo.MongoClient("主机", 端口号)
# 进入对数据库
db = conn.mongodb
# 输入用户名与密码
db.authenticate("用户名", "密码")
# 获取所有数据库名,返回一个list
dblist = db.collection_names()
print(dblist)

# 进入数据库,如果没有该数据库则会创建数据库
mytest = db['mongodb']


# 进入集合,如果没有该集合则会创建集合
mycol = mytest['student']
# 删除集合
# mycol.drop()
# todo 插入
# 插入一条数据,返回InsertOneResult对象,该对象包含inserted_id属性,它是插入文档的id值
inone = mycol.insert_one({"name":"ls","age":26})
  1. 命令行登陆方法
    在这里插入图片描述
    以上情况是因为 权限验证问题 如下方式登陆即可

在这里插入图片描述

第一步  登入
第二步 选择要登入的数据库
第三步 权限验证  db.auth("用户名","密码")  输出1 表示验证通过 此时可以对这个数据进行操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值