MySQL 데이터베이스 생성 및 PHP 연결 실습: 보안을 고려한 완전 가이드

데이터베이스 연결 구성 파일

웹 애플리케이션에서 데이터베이스 연결을 관리하기 위해 db_config.php 파일을 사용하는 방식은 일반적이고 효과적입니다. 이 접근법의 구조와 예시를 설명합니다:

  1. 연결 구성 파일 (db_config.php):
<?php
$server = 'localhost';  // 데이터베이스 서버 주소
$databaseName = 'my_app_db';  // 데이터베이스 이름
$dbUser = 'db_admin';  // 데이터베이스 사용자명
$dbPassword = 'securePass123!';  // 데이터베이스 비밀번호

try {
    $pdo = new PDO("mysql:host=$server;dbname=$databaseName;charset=utf8mb4", $dbUser, $dbPassword);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
} catch (PDOException $e) {
    die("연결 오류: " . $e->getMessage());
}
?>
  1. 다른 PHP 파일에서 연결 사용 예시:
<?php
require_once 'includes/db_config.php';

// 연결 객체를 통해 쿼리 실행
$statement = $pdo->query("SELECT id, name FROM users");
$records = $statement->fetchAll(PDO::FETCH_ASSOC);
?>

데이터베이스 생성 절차 및 명령어:

  1. MySQL에 로그인:
mysql -u root -p
  1. 데이터베이스 생성:
CREATE DATABASE my_app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 사용자 생성 및 권한 부여:
CREATE USER 'db_admin'@'localhost' IDENTIFIED BY 'securePass123!';
GRANT ALL PRIVILEGES ON my_app_db.* TO 'db_admin'@'localhost';
FLUSH PRIVILEGES;
  1. 데이터베이스 선택:
USE my_app_db;
  1. 테이블 생성 예시:
CREATE TABLE users (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    login_name VARCHAR(50) NOT NULL UNIQUE,
    email_address VARCHAR(100) NOT NULL UNIQUE,
    auth_token VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  1. 데이터 삽입 예시:
INSERT INTO users (login_name, email_address, auth_token) 
VALUES ('jane_smith', 'jane@example.net', 'hashed_token_value');
  1. MySQL 종료:
EXIT;

주의사항:

  • db_config.php 파일은 웹 접근이 불가능한 디렉토리에 배치해야 합니다
  • 복잡한 암호를 사용하고 주기적으로 변경해야 합니다
  • 환경 변수를 통해 인증 정보를 관리하는 것이 더 안전합니다
  • 정기적인 데이터베이스 백업이 필수적입니다
  • 서버와 데이터베이스의 보안 패치를 항상 최신으로 유지해야 합니다

이 방법은 간단하고 유지보수가 쉬운 장점이 있지만, 복잡한 애플리케이션에서는 ORM 또는 데이터베이스 추상화 계층을 고려하는 것이 좋습니다.

태그: MySQL PHP PDO Database Setup Security Practices Web Development

6월 3일 18:26에 게시됨