tar -zxvf mongodb-linux-x86_64-3.4.18.tgz
mv
ln -s mongodb mongodb-linux-x86_64-3.4.18
cd mongodb
mkdir data
mkdir logs
vi mongodb.log
wq 保存
#vim / etc / profile
export PATH=/usr/local/mongodb/ bin/:$PATH
重新加载配置文件
#source /etc/profile
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 & # 后台启动命令
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]
>
表示成功进入
show dbs:查看数据库
use admin:切换到admin数据库,如果没有就创建
创建用户:
db.createUser()
其中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数据库中可用。超级账号,超级权限
创建库:
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})
第一步 登入
第二步 选择要登入的数据库
第三步 权限验证 db.auth("用户名","密码") 输出1 表示验证通过 此时可以对这个数据进行操作