Featured image of post mongodb集群离线部署

mongodb集群离线部署

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# 外网机器yum下载mongo安装包,打包

$ sudo tar -zxvf mongodb-linux-x86_64-rhel70-5.0.10.tgz

# 移动到安装位置
$ sudo mkdir -p /opt/mongodb
$ sudo mv mongodb-linux-x86_64-rhel70-5.0.10 /opt/mongodb

# 设置环境变量
$ touch /etc/profile.d/mongodb.sh
cat >> /etc/profile.d/mongodb.sh <<-EOF 
export MONGODB_HOME=/opt/mongodb
export PATH=\$MONGODB_HOME/bin:\$PATH
EOF

# 使配置的环境变量生效
$ source /etc/profile

# 查看环境变量
$ echo $PATH

# 执行mongod命令检测环境变量是否配置成功
$ mongod --version

# 创建mongodb数据存储目录
$ sudo mkdir -p /var/lib/mongo

# 创建mongodb日志文件存储目录
$ sudo mkdir -p /var/log/mongodb

# 创建用户
$ sudo useradd -r -s /sbin/nologin mongod

# 给当前用户设置目录的读写权限
$ sudo chown -R mongod:mongod /var/lib/mongo
$ sudo chown -R mongod:mongod /var/log/mongodb

# 启动mongodb
$ mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

# 查看是否启动
$ ps -ef | grep mongod

# 本机连接
$ mongo
# 或者 
$ mongo test

# 停止mongodb
$ mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --shutdown

# 下载mongosh
$ wget https://downloads.mongodb.com/compass/mongosh-1.5.4-linux-x64.tgz
$ tar -zxvf mongosh-1.5.4-linux-x64.tgz

# 将mongosh 添加到系统路径

# 停掉现有数据库
$ mongod --dbpath /opt/mongodb/data/ --logpath /var/log/mongodb/mongod.log --shutdown

# 创建replicas 每台机器执行,替换最后ip为本机ip
$ mongod --port 27017 --dbpath /opt/mongodb/data/ --logpath /var/log/mongodb/mongod.log --shardsvr --replSet shardA --bind_ip localhost,172.15.110.117 --fork

# 使用mongosh 连接到数据库
$ mongosh 127.0.0.1:27017

# 进入后会有cli界面,每一台机器执行初始化
> rs.initiate()

# 查看配置,每一台机器执行
> rs.conf()

# 查看状态,每一台机器执行
> rs.status()

# 其他机器加入主节点,主节点操作即可,有多少台子节点就加多少次,根据上面替换ip和端口
> rs.add( { host: "172.15.110.119:27017" } )

# 其他命令,删除节点
> rs.remove('mongodb3.example.net:27017')

# 设置密码
$ mongo --port 27017

 # 使用内置的admin库
 > use admin
 
 # 创建admin用户
 > db.createUser({user:"admin",pwd:"GeoStar@123",roles:[{role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"}]})
 
 # 创建集群管理员
 > db.createUser({user:"cluster",pwd:"cluster",roles:[{role:"clusterAdmin",db:"admin"},{role:"clusterManager",db:"admin"},{role:"clusterMonitor",db:"admin"}]})
 
 # 创建其他数据库的用户,比如testdb
 > use testdb
 > db.createUser({user:"test",pwd:"test",roles:[{role:"readWrite",db:"testdb"},{role:"dbAdmin",db:"testdb"},{role:"userAdmin",db:"testdb"}]})
 
 # 查看创建的用户
 > use admin
 > db.system.users.find()
 
 # 开启用户认证
 
 # 先把数据库停了,停数据库有顺序,先停arbiter(仲裁者),再停从节点,最后停主节点
 # 在其中一个节点生成keyfile,用来节点内部认证
 $ mkdir /opt/mongodb/keyfile # 所有节点都要执行
 $ openssl rand -base64 756 > /opt/mongodb/keyfile/keyfile.file #其中一台
 $ chmod 400 /opt/mongodb/keyfile/keyfile.file #其中一台
 
 # 拷贝keyfile到其他机器的对应目录
 
 # 依次启动主节点,仲裁者和从节点
 $ mongod --port 27017 --dbpath /opt/mongodb/data/ --logpath /var/log/mongodb/mongod.log --shardsvr --replSet shardA --bind_ip localhost,172.15.110.123 --fork --auth --keyFile /opt/mongodb/keyfile/keyfile.file

https://blog.csdn.net/yyyxxxs/article/details/99984224

MongoDB用户权限列表

权限 说明
read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin 允许用户向system.user集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin 只在admin数据库中可用,赋予用户说有分片和复制集相关函数的管理权限
readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root 只在admin数据库中可用。超级账号