二进制mongodb 包 解压有直接用不用编译
MongoDB 版本:3.4.2
本人的安装路径是 /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")
以上是没有认证的情况下,客户端如:Robomongo,MongoVUE 能直接连到数据库,如果认证了的话,这些客户端就连不上了,因为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
然后用客户端连接:Robomongo,MongoVUE 或 mongochef...
name:自己取一个连接的名称
server:你的服务器IP
port:27017
Username:test --- 刚才创建用户名
Password:123456 --- 刚才创建用户的密码
Database:mydbname
文章是从MongoDB开发群-第3群 339100233 分享群里的txt文件中copy