Ubuntu安装Mongodb(额外配置:修改端口、外网访问、启动鉴权并配置用户、开机自启、不带鉴权的复制集配置和带鉴权的复制集配置)

官网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,<hostname(s)| ip address(es)>

  例如修改成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

添加复制集

查看状态,有如下提示, 到此带账密有访问权限的复制集已经配置完成,可以在主库添加数据库表进行验证。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值