Start a mongodb shell in docker container

You can run the interactive mongo shell by running the following command:

docker run -it -p 28000:27017 --name mongoContainer mongo:latest mongo

Otherwise, if your container is already running, you can use the exec command:

docker exec -it mongoContainer mongo

or


docker pull mongo
docker run --name CONTAINERNAME --restart=always -d -p 8080:8080 mongo mongod --auth
sudo docker exec -i -t CONTAINERNAME bash
mongo
use admin
db.createUser({user:"user", pwd:"password", roles:[{role:"root", db:"admin"}]})
exit && exit

Now you have created a running Docker container with everything you need. Now if you want to connect from any client with an admin user, just run this

mongo -u "user" -p "password" HOSTIP --authenticationDatabase "admin"

laravel 5.3 authentication with jenssegers-mongodb

Add package https://github.com/jenssegers/Laravel-MongoDB-Session to laravel

Install using composer:

composer require jenssegers/mongodb-session

Change the session driver in app/config/session.php to mongodb:

'driver' => 'mongodb',

Optional: change the connection to a connection using the mongodb driver from app/config/database.php:

'connection' => 'mongodb',

config/app.php

'providers' => [
Jenssegers\Mongodb\MongodbServiceProvider::class,
Jenssegers\Mongodb\Session\SessionServiceProvider::class, 
Jenssegers\Mongodb\Auth\PasswordResetServiceProvider::class,

User model

namespace App;

use Illuminate\Notifications\Notifiable;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
use Illuminate\Auth\Authenticatable;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Eloquent implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword;
    use Notifiable;

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $collection = 'users';

    /**
    * The database primary key value.
    *
    * @var string
    */
    protected $primaryKey = '_id';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

and try to register/login

Ubuntu: mongo Failed message about LANG

When you call “mongo” and found this message.

$ mongo

Failed global initialization: BadValue Invalid or no user locale set. Please ensure LANG and/or LC_* environment variables are set correctly.

You can fix by, At the command prompt:

export LC_ALL=C

and then try again. If that doesn’t work, you may need to edit:

sudo vi /etc/default/locale

and set

LANG=
LANGUAGE=
LC_ALL=

to your preferred settings. As an example:

LANG=en_US.UTF-8
LANGUAGE=en_US
LC_ALL=en_US.UTF-8

parse.com and Yii with php

เมื่อคุณต้องการใช้ parse.com เป็นฐานข้อมูลร่วมกับ Yii Framework ทางที่ง่ายที่สุดคือใช้

http://www.yiiframework.com/extension/yiiparsedb/

ทำตามนี้เลย จัดไป

 

Upgrade MongoDB on Ubuntu

ให้ตรวจสอบ version ของ MongoDB โดยใช้คำสั่ง

$ mongod –version
db version v2.2.0, pdfile version 4.5
Wed Mar 27 18:43:24 git version: f5e83eae9cfbec7fb7a071321928f00d1b0c5207

ต่อมาให้ตรวจสอบว่า MongoDB กำลังทำงานอยู่หรือไม่ โดยใช้คำสั่ง

$ ps -deaf | grep mongod
ubuntu 23415 4264 0 18:43 pts/0 00:00:00 grep –color=auto mongod
mongodb 27549 1 0 2012 ? 16:01:17 /usr/bin/mongod –config /etc/mongodb.conf

ในการ Shutdown MongoDB
$ ./mongo
> use admin
> db.shutdownServer()
server should be down…

หลังจากนั้นให้ upgrade ตามเอกสารนี้ http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

เพิ่ม 10Gen(ผู้สร้าง MongoDB) public key เข้าไปใน apt-get package:

$ sudo apt-key adv –keyserver keyserver.ubuntu.com –recv 7F0CEB10
$ echo “deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen” >> /etc/apt/sources.list.d/10gen.list

Update packages ในระบบ:

$ sudo apt-get update

ติดตั้ง 10gen’s MongoDB Debian/Ubuntu package:

$ sudo apt-get install mongodb-10gen #ในกรณีที่ต้องการติดตั้งเป็นเวอร์ชี่นล่าสุด
$ sudo apt-get install mongodb-10gen=2.2.3 #ในกรณีที่ต้องการติดตั้งแบบระบุเวอร์ชี่น

เมื่อรัน command ตามนี้ mongodb version เดิมจะถูกลบออกไป
และติดตั้ง version ใหม่ล่าสุดที่ถูกระบุใน mongodb-10gen

ในกรณีที่เกิด error ให้ลอง:

$ apt-get autoremove

ดูให้แน่ใจว่า user/group ของ mongodb มี permission ในการเขียนข้อมูลลงใน directory:

$ sudo chown -R mongodb:mongodb /var/lib/mongodb/.

Start up MongoDB ใน Daemon (background process) ให้ใช้ command ตามนี้:

$ mongod –fork –dbpath /var/lib/mongodb/ –smallfiles –logpath /var/log/mongodb.log –logappend

ถ้าต้องการ ShutDown MongoDB ให้รัน command ใน Mongo CLI, ด้วย admin และ ตามด้วย shutdown command:

$ ./mongo
> use admin
> db.shutdownServer()

MongoDB Security and Authentication

Create an administrator user for the entire db server process

$ ./mongo
> use admin
> db.addUser(“theadmin”, “anadminpassword”)
We now have a user created for database admin. Note that if we have not previously authenticated, we now must if we wish to perform further operations, as there is a user in admin.system.users.

> db.auth(“theadmin”, “anadminpassword”)
We can view existing users for the database with the command:

> db.system.users.find()
Now, let’s configure a “regular” user for another database.

> use projectx
> db.addUser(“joe”, “passwordForJoe”)

Enabling Secure Mode

To enable secure mode, run the mongod process with the –auth option (or –keyFile for replica sets and sharding). You must either
(1) have added a user to the admin db before starting the server with -auth, or
(2) add the first user from a localhost connection (you cannot add the first user from a connection that is not local with respect to the mongod process).