LEN

MongoDB 二进制包安装 教程
二进制mongodb 包 解压有直接用不用编译MongoDB 版本:3.4.2本人的安装路径是 /usr/...
扫描右侧二维码阅读全文
03
2017/02

MongoDB 二进制包安装 教程

二进制mongodb 包 解压有直接用不用编译

MongoDB 版本:3.4.2

alt

本人的安装路径是 /usr/local

1.解压安装:

wget  http://len7.cc/mongodb-linux-x86_64-rhel62-3.4.2.tgz.gz
cd /usr/local
tar -zxvf mongodb-linux-x86_64-rhel62-3.4.2.tgz.gz

得到解压目录,这里我把目录改个名为:mongodb

mv mongodb-linux-x86_64-3.0.7 mongodb

2.创建数据库和日志的目录:

cd mongodb
mkdir log
mkdir db

3.以后台运行方式启动:

(如果认证的话 在后边 加 --auth 表示认证如命令 ./bin/mongod --dbpath=/usr/local/mongodb/db --logpath=/usr/local/mongodb/log/mongodb.log --fork --auth )

这里先不认证:

./bin/mongod --dbpath=/usr/local/mongodb/db --logpath=/usr/local/mongodb/log/mongodb.log --fork

会显示如下内容:

about to fork child process, waiting until server is ready for connections.
forked process: 4623
child process started successfully, parent exiting
    

这里表示成功启动了....


iptables -A INPUT -p tcp -m tcp --dport 27017 -j ACCEPT 

设置开机启动:

这个是带认证的

echo "/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/db --logpath=/usr/local/mongodb/log/mongodb.log --fork --auth" >> /etc/rc.local

这个是不带认证的

echo "/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/db --logpath=/usr/local/log/mongodb.log --fork" >> /etc/rc.local

查看是否有启动相关信息

ps -ef |grep mongo

----------
netstat -nalupt | grep mongo

以下是启动的信息

 tcp   0   0 0.0.0.0:27017    0.0.0.0:*    LISTEN     4623/./bin/mongod

关闭mongodb

pkill mongod

killall mongod

添加数据库和用户

./bin/mongo
会出现相关信息如下:

MongoDB shell version: 3.4.2
connecting to: test
...


>use admin
switched to db admin

已经切换到了admin,然后创建用户:

>db.createUser(
  {
    user: "root",
    pwd: "root",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

回车,看到 Successfully added user: 表示添加成功。
然后可以查看一下刚才添加的:

> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "bUhMAodI9w6OPDt9GL5Auw==", "storedKey" : "jBhWrBoYjwz86PqlCUTMkSh3h2A=", "serverKey" : "DMq1OYN45RfPjWIi4jFKNW6BJ6k=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "readWriteAnyDatabase", "db" : "admin" } ] }

如果你要想自己的数据库 mydbname ,则:

>use mydbname
switched to db mydbname

添加用户:

>db.createUser(
 {
   user: "test",
   pwd: "123456",
   roles: [
      { role: "readWrite", db: "mydbname" },
      { role: "read", db: "mydbname" }
   ]
 }
)

成功的话,你可以添加一张表试试,比如:

>db.createCollection("testtable")

以上是没有认证的情况下,客户端如:RobomongoMongoVUE 能直接连到数据库,如果认证了的话,这些客户端就连不上了,因为3.0以上的数据库不支持,
下边的配置就是为了让这些可视化客户端能连接:


>use admin
switched to db admin
>show collections
system.indexes
system.users
system.version
>db.system.version.find()
{ "_id" : "authSchema", "currentVersion" : 5 }

从上面可以看到"currentVersion" : 5
currentVersion为5则表示当前数据库的认证机制是SCRAM-SHA-1
而在mongodb 2.x中采用的默认认证机制是MONGODB-CR

然后我们需要把 5 改成 3,这样用客户端就能连上

命令如下:

>var schema=db.system.version.findOne({"_id" : "authSchema"})
>schema.currentVersion=3
3
>db.system.version.save(schema)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.system.version.find()
{ "_id" : "authSchema", "currentVersion" : 3 }

在这表示已经修改成功了。

因为之前创建过,所以先drop掉用户:

>use mydbname

>db.dropUser("mydbname");
true   ------ 表示 ok

>use admin

>db.dropUser("admin");

然后再创建:

>use admin
>db.createUser(
  {
    user: "root",
    pwd: "root",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
>db.auth("root","root")
1   -------- 表示ok
>use mydbname
>db.createUser(
 {
   user: "test",
   pwd: "123456",
   roles: [
      { role: "readWrite", db: "mydbname" },
      { role: "read", db: "mydbname" }
   ]
 }
)
>db.auth("test",,"123456");
1   -------- 表示ok

然后退出:

>exit
bye

看看是否在运行

ps -ef |grep mongo
netstat -nalupt | grep mongo

有的话,先关闭掉:

killall mongod

然后 以后台运行方式启动:加了 --auth,认证方式

./bin/mongod --dbpath=/usr/local/mongodb/db --logpath=/usr/local/mongodb/log/mongodb.log --fork --auth

如下内容表示成功启动:

about to fork child process, waiting until server is ready for connections.
forked process: 4627
child process started successfully, parent exiting

然后用客户端连接:RobomongoMongoVUE mongochef...

name:自己取一个连接的名称
server:你的服务器IP
port:27017
Username:test --- 刚才创建用户名
Password:123456  --- 刚才创建用户的密码
Database:mydbname

文章是从MongoDB开发群-第3群 339100233 分享群里的txt文件中copy

Last modification:February 8th, 2017 at 03:35 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment