官网https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
第一步:下载公钥
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
第二步:为MongoDB创建一个列表文件
Ubuntu16:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
Ubuntu18:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
第三步:重新加载本地包数据库
sudo apt-get update
第四步:安装
sudo apt-get install -y mongodb-org
开启服务
sudo service mongod start
停止服务
sudo service mongod stop
重启服务
sudo service mongod restart
卸载数据库
sudo apt-get purge mongodb-org*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
验证:输入mongo,将会打印一堆东西,最后出现>箭头,说明连接mongo成功,输入:show dbs 查看数据库。
到这我们的mongo数据库安装成功了
【额外的配置】
以下配置是在Ubuntu16下进行(14和18下可能会有所不同):
为了不用频繁的输入sudo,之后的操作都是用root用户执行,切换至root:
sudo su -
(1)修改默认端口和希望外网访问
vim /etc/mongod.conf
修改配置文件
vim下按字母 i 输入进行文件修改。
修改端口:修改port:27017如修改成port: 28017
外网访问:
①直接注释掉bindIp:127.0.0.1,例:#bindIp:127.0.0.1
②有的版本注释不起作用,可以修改为bindIp:0.0.0.0
修改完成按esc,再按Shift+:,然后输入“wq”,保存文件并退出,然后重启服务
若将端口修改成了28017请使用“mongo --port 28017”进入mongo shell
(2)开启鉴权并配置用户
MongoDB默认是不需要密码就可以进行连接,如果我们开启的外网的访问,而不设置密码,这样太不安全了。
1. 进入mongo shell:mongo
如果你之前你将端口修改成了28017请使用“mongo --port 28017”进入mongo shell
2. 切换到 admin 数据库: use admin
3. 新增用户db.createUser({user:'root', pwd:'liang666',roles:[{role:'root',db:'admin'}]})
我这里设置的密码是:liang666,你可以自己更改为你想要的密码。
有下图的提示,说明创建成功。
然后再去修改一下.conf文件,修改完保存,重新启动mongo服务
如上增加了用户验证,并修改了端口,使用下面的命令进入mongo shell:mongo --port 21717 -u root,将提示输入密码,输入我们所设置的密码“liang666”
(3)开机启动,执行下面两条指令
systemctl start mongod
systemctl enable mongod
(4)主从库(副本集)配置,无账密的情况:
官方文档
我们现在有两个Ubuntu16.4虚拟机,一个做主库,一个做从库(两个数据库目前都只是用文章开头的方法做基本的安装)
主:192.168.1.20
从:192.168.1.21
主库和从库的配置文件mongod.conf都修改成如下:
修改了划线的两处
官方教程是将bindIp修改成如下:
bindIp : localhost,
例如修改成bindIp: localhost,192.168.1.20和bindIp: localhost,192.168.1.21
而我的写法是bindIp: 0.0.0.0
修改后保存,并sudo service mongod restart重启mongo服务
主库192.168.1.20下打开mongo shell
rs.initiate( { _id : "rs0", members: [{ _id: 0, host: "192.168.1.20:27017" },{ _id: 1, host: "192.168.1.21:27017" }]})
如果有多的从库可以继续添加 ,如下添加
rs.initiate( { _id : "rs0", members: [{ _id: 0, host: "192.168.1.20:27017" },{ _id: 1, host: "192.168.1.21:27017" },{ _id: 2, host: "192.168.1.22:27017" }]})
或者之后用rs.add方法添加,具体使用自行搜索。add的时候,不用_id属性,会自动添加。
使用 exit退出mongo shell
再次进入mongo shell
发现脚本输入出由“>”变成了“rs0:PRIMARY”,而从库变成了“rs0:SECONDARY”。
执行rs.status()查看副本集状态。至此我们的主从库(副本集)配置完成,可以自行在主库添加数据库表等进行验证。
(5)主从库(副本集)配置,有账密的情况:
官方文档
还是有两个Ubuntu16.4虚拟机,一个做主库,一个做从库(两个数据库目前都只是用文章开头的方法做基本的安装)
主:192.168.1.23
从:192.168.1.24
在主:192.168.1.23下:
命令:openssl rand -base64 756 > /opt/mongodb.key,将会在opt文件夹下生成一个mongodb.key文件
命令:chmod 777 /opt/mongodb.key,是开放mongodb.key的权限,这一步执行完,将mongodb.key复制一份到从库:192.168.1.24上。
命令:chmod 400 /opt/mongodb.key,修改权限,该文件权限太开放的话,当我们配置了keyFile指定该文件,mongo服务将启动不起来。
vim /etc/mongod.conf,修改配置文件,修改成如下:
4处修改地方都标记出来了
修改完先不要重启mongo服务,
进入mongo shell添加用户,
eixt退出mongo shell,
命令sudo chown -R mongodb:mongodb /opt/mongodb.key,修改文件的拥有者为mongodb,这是因为我们的mongodb.key文件是root创建的,我们启动mongo服务,将会是使用mongodb这个用户去访问配置文件中的文件,如果不修改,mongodb将没有权限访问mongodb.key这个文件,服务将启动不起来。
service mongod restart,重启mongo服务,查看进程,发现已经成功启动,说明我们的配置没问题。
在从库:192.168.1.24下:
我们之前在主库中生成的mongodb.key已经复制了一份到物理机上了。
我们修好/opt的权限,好将mongodb.key拖拽进来。使用拖拽功能需要安装vmware tools,安装教程,刚刚主库拖出去也是需要安装。
接下来和主库操作差不多,
修改mongodb.key的操作权限和拥有者。
接下来修改mongod.conf文件和创建用户,重启服务,这个主库的一样的
再回到主库 192.168.1.23下:
进入mongo shell
添加复制集
查看状态,有如下提示, 到此带账密有访问权限的复制集已经配置完成,可以在主库添加数据库表进行验证。