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
  |