1. 查看当前系统版本,确认为ubuntu系统
终端输入
cat /proc/version
2. 安装mongodb
- 查看本地是否有mongodb, 终端输入
mongo --version
- 没有向下进行
终端输入
sudo apt-get install mongodb
出现提示 Do you want to continue? [Y/n] 输入 Y,按 Enter继续
-
在终端输入
mongo -version
,如下图,安装成功
3. 启用mongodb
- 创建配置文件:
sudo nano /etc/systemd/system/mongdb.service
- 将下面内容写入
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
- 启动服务
sudo service mongodb start
4. 使用
> root@iZwz9jb9ek3ckh79tmy891Z:~# mongo
MongoDB shell version: 2.6.10
connecting to: test
> show dbs
admin 0.078GB
local 0.078GB
> use admin
switched to db admin
> db.createUser()
2019-01-11T10:33:01.536+0800 TypeError: Cannot read property 'user' of undefined at src/mongo/shell/db.js:1056
> db.createUser(
... {user: "chenzhiyong",}
...
... )
2019-01-11T10:33:55.588+0800 Error: couldn't add user: Must provide a 'pwd' field for all user documents, except those with '$external' as the user's source db at src/mongo/shell/db.js:1081
> db.createUser({
... user: "chenzhiyong",
... pwd: "Lunarjiuyuechusi",
... roles:[
... {
... role: "userAdminAnyDatabase",
... db: "admin"
... }]
... })
Successfully added user: {
"user" : "chenzhiyong",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
>
> show users
{
"_id" : "admin.root",
"user" : "root",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
{
"_id" : "admin.chenzhiyong",
"user" : "chenzhiyong",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
5. 设置远程连接访问mongodb数据库
mongodb数据库启动后,默认只能在本地使用,端口为27017,那么如何设置让它可以远程访问呢?
1.修改配置文件mongodb.conf
命令:vim /etc/mongodb.conf
把 bind_ip=127.0.0.1 这一行注释掉或者是修改成 bind_ip=0.0.0.0,最好是直接注释掉,因为在centos下,使用bind_ip=0.0.0.0会报错。
注意:设置远程访问以后,密码启动auth授权访问,不然非常不安全,数据库容易被攻击,在配置文件中修改如下:
# Turn on/off security. Off is currently the default
#noauth = true
auth = true
2.在mongo数据库中新建用户名和密码:
在非授权模式下启动数据库,并使用mongo连接上数据库,例如我们要新建meeting数据库的用户和密码,则:
use meeting
db.createUser({user:"kimkat",pwd:"123456",roles:[{ role: "readWriteAnyDatabase", db: "meeting" }]})
注意:如果要添加meeting数据库的用户,请先use meeting,不然即使添加成功,也连接不上。
mongodb添加用户的方法:https://docs.mongodb.com/manual/reference/method/db.createUser/index.html
mongodb内置的用户角色:https://docs.mongodb.com/manual/core/security-built-in-roles/index.html
3.重启mongodb服务
命令:/etc/init.d/mongodb restart
2.1防火墙开放27017端口
命令:iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT
注意:如果是云服务器,一般不用在系统内打开端口,只要在服务器管理界面打开端口就可以了。
4.远程连接
要连接的IP:116.85.12.51
命令:mongo 116.85.12.51:27017/meeting -u "kimkat" -p "123456"
这样就可以连接到116.85.12.51的mongodb/meeting的数据库了。
建议使用robo3t,mongovue,或者mongo compass等可视化工具来连接,其中官方提供的mongo compass可以直接导出csv文件。
笔者尝试了使用windows下的mongo.exe连接云服务器上的数据库,结果因为shell和server不匹配,所以失败。