代码改变世界

docker安装mongodb

2020-05-31 03:52  youxin  阅读(404)  评论(0编辑  收藏  举报

 

docker pull mongo

docker run -p 27017:27017 -v $PWD/data:/data/db -v $PWD/conf/mongodb.conf:/etc/mongodb.conf --name mymongodb -d mongo --auth

 

version: '3'


services:
  mysql:
    hostname: mongodb
    container_name: mongodb
    # amd64 平台
    #image: mysql/mysql-server:latest
    image: 4.0.13-xenial

    ports:
      - "27017:27017"
    environment:
      - TZ="Asia/Shanghai"
      - LANG=C.UTF-8
      # 初始化一个 root 角色的用户 root 密码是 root
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=root
    # 宿主机硬盘目录映射容器内的存放数据的目录
    volumes:
      - ./data:/data/db
      - ./log:/var/log/mongodb
      - ./config:/etc/mongo
    # 增加启动参数,--auth,表示连接 mongodb 需要用户名和密码
    command:
      - "--auth"

 

在上面的命令中,几个命令参数的详细解释如下:
-p 指定容器的端口映射,mongodb 默认端口为 27017
-v 为设置容器的挂载目录,这里是将<LocalDirectoryPath>即本机中的目录挂载到容器中的/data/db中,作为 mongodb 的存储目录
--name 为设置该容器的名称
-d 设置容器以守护进程方式运行
 
为了安全,我们要mongodb设置密码:
 
-name mymongodb -d mongo  --auth
需要密码才能访问mongodb服务。
 
 

进入 mongo 交互模式

1. docker exec -it <CONTAINER NAME> mongo 数据库名称

 https://www.jianshu.com/p/aa7a7f4e2527

 

接着使用以下命令添加用户和设置密码,并且尝试连接。

$ docker exec -it mongo mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
>  db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')

创建一个role为root的
db.createUser({ user:'admin', pwd:'admin', roles:[{role:'root',db:'admin'}] })

添加管理用户
mongoDB 没有无敌用户root,只有能管理用户的用户 userAdminAnyDatabase

客户端连接:
> use admin
> db.auth("admin","123456")   #认证,返回1表示成功
 
 

创建操作用户
验证之后还是做不了操作,因为admin只有用户管理权限,下面创建用户,用户都跟着库走,
> use mydb
> db.createUser({user: "root",pwd: "123456",roles: [{ role: "readWrite", db: "mydb" }]})
7、使用创建的用户root登录进行数据库操作:
[root@localhost mongodb]# mongo 127.0.0.1/mydb -uroot -p
MongoDB shell version: 3.2.9
Enter password:
connecting to: 127.0.0.1/mydb
> db
mydb
> use mydb
switched to db mydb
> show collections
然后就可以进行增删改查各种数据操作...

 


admin这个账号只能用作客户端远程连接,操作的,如果程序里想要连接各个集合,要针对各个库在去单独设置账号密码,

程序里就设置新的账号密码



https://www.runoob.com/docker/docker-install-mongodb.html

MongoDB 的 Docker 常用命令

# 查看正在运行的容器

docker container ls

# 查看所有容器

docker container ls -a

# 指定 CONTAINER ID 停止容器

docker stop <CONTAINER ID>

# 指定容器名称停止容器

docker stop <CONTAINER NAME>

# 指定容器 CONTAINER ID 启动容器

docker start <CONTAINER ID>

# 指定容器名称启动容器

docker start <CONTAINER NAME>

# 指定容器 CONTAINER ID 重启容器

docker restart <CONTAINER ID>

# 指定容器名称重启容器

docker restart <CONTAINER NAME>

进入 mongo 交互模式

docker exec -it <CONTAINER NAME> mongo 数据库名称


 https://zhuanlan.zhihu.com/p/81496897?from_voters_page=true
 
配置文件:
 
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  # 更改日志目录
  path: /tmp/mongod.log

# Where and how to store data.
storage:
  # 更改数据目录
  dbPath: /data/db/
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# how the process runs
processManagement:
  fork: true  # fork and run in background
#  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo

# network interfaces
# 修改端口
net:
  port: 27017
  # 因为127.0.0.1只能在本机访问,改后通过本机的IP就能访问服务
  bindIpAll=true
  #kbindIp: 0.0.0.0  # Enter 127.0.0.1,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

# 开启权限校验
security:
  authorization: enabled
  
#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:Configuration File Options# mongod.conf

 

 

mongo linux安装:

进入官网 https://www.mongodb.com/download-center

 https://www.mongodb.com/try/download/community

下载bin 文件夹然后解压即可。

 

然后启动mongod时引入配置文件:./mongod -f /path/mongod.conf  

 

 mongodb管理脚本:
#!/bin/bash
#
# mongod        Start up the MongoDB server daemon
#
   
# source function library
. /etc/rc.d/init.d/functions
#定义命令
CMD=/opt/mongodb/bin/mongod
#定义配置文件路径
INITFILE=/opt/mongodb/mongod.conf
start()
{
    #&表示后台启动,也可以使用fork参数
    $CMD -f $INITFILE &
    echo "MongoDB is running background..."
}
   
stop()
{
    pkill mongod
    echo "MongoDB is stopped."
}
   
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    *)
        echo $"Usage: $0 {start|stop}"
esac