본문 바로가기
DataBase

MongoDB Security셋팅, 유저생성, Nodejs 연동 + PHP 연동 ( With Ubuntu )

by YoYoHa 2021. 7. 9.
728x90
반응형

* DB 연동 테스트

 - PHP : INSERT

 - NodeJS : FIND

 

 - 인증(authorization)설정 + 관리자 계정 설정

mongo

use admin
db.createUser({
user: 'root',
pwd: '1234',
roles: ['userAdminAnyDatabase']
})

# 'userAdminAnyDatabase'를 사용시 모든 DB접근 제어 가능

exit

vim /etc/mongod.conf

# "security" 주석 해제 후 "authorization: enabled" 추가
security:
  authorization: enabled

:wq!

service mongod restart

mongo

use admin
db.auth({"root", "1234"})	# 결과가 1이 나와야함

# admin 계정 dircet 접속
mongo -u root -p 1234

 

 

 - 일반 사용자 계정 설정

         * test DB의 권한을 가지고있는 사용자 계정

mongo -u root -p 1234

use test

db.createUser({
user:'test',
pwd:'1234',
roles:['dbOwner']
})

exit

mongo -u test -p 1234 --authenticationDatabase "test"

 

 

- PHP7.2 + MongoDB 연동

apt-get install php-pecl-http php-pear php7.2-dev

pecl install mongodb

vim /etc/php/7.2/fpm/php.ini
extension=mongodb.so	# 추가
wq!

service php7.2-fpm restart

   

- PHP test 코드(test.php)

use MongoDB\Driver\BulkWrite;
use MongoDB\Driver\Manager;

$manager = new MongoDB\Driver\Manager("mongodb://test:1234@127.0.0.1:27017/test");
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$time = date("YmdHis");
$today = date("Ymd");

$document = [    //저장할 배열
    'TIME' => $time,
    'USER_AGENT' => $user_agent
];

$bulk = new MongoDB\Driver\BulkWrite;  //저장을 담당하는 객체
$bulk->insert($document);  //객체에서의 함수 실행
$manager->executeBulkWrite('test.log_'.$today, $bulk); // Manager 객체에 내용 전달.

   

- PHP 접속 후 결과 (http://IPADDRESS/test.php)

 

 

- NodeJS + MongoDB 연동

npm install mongodb
npm install mongoose

 

- app.js 테스트 코드 (Express 환경)

// Mongoose Lib
var mongoose = require('mongoose');

// Schema Setting
var testSchema = new mongoose.Schema({
	TIME: { type: String },
	USER_AGENT: { type: String }
});

var dburl = "mongodb://test:1234@127.0.0.1:27017/test";

app.get('/mongo_test', function(req, res){
	// DBconnect();
	DBconnect()
	var testModel = mongoose.model('log_20210709', testSchema);
	testModel.find({}, function(err, docs){
		if(err){
			console.log("Find Err : " + err);
			return;
		}
		console.log(docs);
	});
});

/* DB Connect */
function DBconnect() {
	mongoose.connect(dburl, { useNewUrlParser: true, useUnifiedTopology:true }, 
    function(err, database) {
		if (err) {
			console.log('mongodb connect error : ' + err);
			return;
		}
		db = database;
		console.log('mongodb connected');
	});
}

 

 - node구동 + 접속 후 결과(http://IPADDRESS/mongo_test)

 

쌉정상

728x90
반응형

'DataBase' 카테고리의 다른 글

[MariaDB / MySQL] 초기 셋팅 + 원격접속 계정 생성  (0) 2022.01.03
Ubuntu 18.04 MongoDB 설치  (0) 2020.06.03
AMP 컴파일설치(MySQL)  (0) 2019.03.31

댓글