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
|