03. MySQL(2)

시그니천·2024년 7월 15일

WEB SERVER

목록 보기
4/7

1. MySQL

MySQL

  • 관계형 데이터베이스 관리 시스템
  • 데이터를 체계적으로 저장하고 관리
  • SQL(Structured Query Language)을 사용하여 데이터를 정의, 조작 및 쿼리할 수 있음
    쿼리란? : 코드를 통해 관리하는 것
  • 높은 성능과 안정성 제공 => 웹 앱을 포함한 다양한 응용 프로그램에서 널리 사용됨

MySQL설치

  • sudo apt update : 패키지 목록을 업데이트하여 최신 버전의 소프트웨어 정보를 가져옴
  • sudo apt install mysql-server -y : mySQL 설치
  • sudo mysql_secure_installation : 보안 스크립트 실행
    • MySQL은 중요 데이터베이스이고, 외부에서 ip정보로 접속할 수 있으면 안대자나 그러니 보안 스크립트 실행 ㄱ
    • 설치 과정 중 질문

      1 Test PW사용여부 : Would you like to setup VALIDATE PASSWORD component?(Test용이라 일단 n)
      2 익명의 유저 : Remove anonymous users? n
      3 제일 쎈 사용자가 관리하게 할거냐? :Disallow root login remotely? y
      4 테스트 계정 사용할거? : Remove test database and access to it? n
      5 : Reload privilege tables now? n

  • sudo apt install php php-mysql : php 와 연동모듈 설치

2. phpMyAdmin

phpMyAdmin

MySQL을 쉽게 다루는 법

  • MySQL을 콘솔에서 만들수도 있지만 비추함 <= 쿼리에대한 기본적인 이해가 있어야 가능함
  • MySQL를 쉽게 활용할 수 있는 Ph myAdmin 활용(Visual Studio설치한다고 생각하셈)

phpMyAdmin 설치

  • sudo apt update : 패키지 목록을 업데이트하여 최신 버전의 소프트웨어 정보 가져오기
  • sudo apt install phpmyadmin : phpmyadmin 설치
    • Do you want to continue? [Y/n] => y
    • apache2 선택
    • yes
    • 패스워드 설정 후 엔터

웹서버랑 연동

  • apache2.conf 파일 수정

    • cd / > etc> apache2 > apache2.conf
    • Include /etc/phpmyadmin/apache.conf phpmyAdmin을 연동해주겠다.(Directory밑에다 넣어주셈)
  • sudo systemctl restart apache2 : apache2 재시작(설정 바꿨으니까 재시작해줘야겠지?)


phpMyAdmin 로그인

  • 이제부터 콘솔말고 웹에서 사용하게쓰
  • ip주소/phpmyadmin/ 접속
    • ID : root
    • PW : 앞에서 설정했던 비번
  • 하지만 처음엔 접속이 안됨 ㅠ => 보안 때문에 그래여

MySQL에서 phpMyAdmin 계정 만들기

  • sudo mysql -u root : root라는 user로 접속 => 비번 X
  • mysql>quit; : MySQL 나가기 => 인사도 친절하게 bye라고 해줌
  • sudo mysql -u root -p : root라는 user로 접속 => 비번 O
  • Enter password : : 패스워드 입력

계정 만들기

  • mysql> CREATE USER 'phpmyadmin_user'@'localhost' IDENTIFIED BY 'MYPASSWORD' : phpmyadmin을 사용할 수 있는 계정 만들기
    • phpmyadmin_user : ID
    • localhost : 어떤 서버에 만들어줄것이냐~(우리는 내 서버, localhost)
    • mypassword : 패스워드
  • mysql>GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin_user'@'localhost' WITH GRANT OPTION; : 모든 권한을 주겠다
  • mysql>FLUSH PRIVILEGES; : 변경사항을 mysql에 집어넣겠다
  • mysql>quit; : 나가기

phpMyAdmin 설정 변경

  • etc> phpmyadmin > config.inc.php
  • config.inc.php에 아래포맷 작성(위에서 설정한 id랑 비번 넣어주셈)
    $cfg['Servers'][$i]['host'] = 'localhost';
     $cfg['Servers'][$i]['user'] = 'root';
     $cfg['Servers'][$i]['password'] = 'your_password';
     $cfg['Servers'][$i]['AllowNoPassword'] = false;
  • 저장 esc :wq
  • 다시 시작
    • sudo systemctl restart apache2
    • sudo systemctl restart mysql

phpMyAdmin 다시 로그인

  • 아듸 비번

  • 쨔쟌~ 데이터베이스를 관리하는 창

  • 콘솔창에서 하나하나 추가할수도 있지만 이렇게 직관적으로 보는게 훨 낫쥬?


실습(1) - phpMyAdmin으로 데이터 삽입하기

1) 기본구조

2) 데이터베이스 만들기

3) 테이블 만들기

4) 변수 정의

  • 변수

  • VARCHAR은 처음에 크기를 지정해줄 수 있어서 데이터를 효율적으로 관리할 수 있음 => 길이 설정해야 함

5) 완료

  • 일단 무사히 생겼다. 왼쪽 테이블을 클릭해보자

6) 테이블 확인

7) 데이터 삽입

  • phpMyAdmin으로 데이터 삽입
  • PlayerName과 Score값 삽입

8) 실행 후 쿼리 확인

  • 이게 쿼리임.
  • mysql을 쉽게 다루기 위해서 phpadmin을 했자나 , 아래 코드를 콘솔에서 치면 방금과 같은 과정을 거친거임 ㅇㅇ

9) 값 확인

10) php로 MySQL데이터베이스 가져오기

a) 새파일 생성

var > www > html > vi mysql

b) MySQL과 연결하는 php코드

<?php
$servername = "localhost";  // 저장할 서버
$username = "phpmyadmin_user"; // userName
$password = "1234"; // password
$dbname = "TEST"; // dbName

// Create connection
// mysqli : 서버이름, 유저이름, 패스워드를 사용하여 mysql과 연결 통로를 만들어주는것
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
// 연결통로를 만들때 에러가 발생하는지 확인해주는 코드
if($conn->connect_error){
        die("Connection failed:".$conn->cconnect_error);
}
// 문제가 없다면 성공 출력
echo "Connected successfully";

// 연결 종료
$conn->close();
?>

화살표 : 연결통로를 통해 가져올 수 있는 방식
die : 만약 블록코드가 실행되면 웹페이지를 아예 끝내버리겠다.

c) 연결 성공


10) php로 MySQL 테이블 연결

a) 코드 수정(sql문자열 가져오기)

  • 문자열 저장
$sql = "SELECT PlayerName, Score FROM SCORE";
  • 실행
$result = $conn->query($sql);

<전체코드>

<?php
$servername = "localhost";  // 저장할 서버
$username = "phpmyadmin_user"; // userName
$password = "1234"; // password
$dbname = "TEST"; // dbName

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if($conn->connect_error){
        die("Connection failed:".$conn->cconnect_error);
}

// SCORE 테이블에서 Player, Score열을 가져오겠다. SELECT:가져올열을 정함
$sql = "SELECT PlayerName, Score FROM SCORE";

// 위에서 작성한 쿼리 문자열 실행 => 결과로 받아옴
$result = $conn->query($sql);

// 결과값이 하나라도 있으면 표시
if($result->num_rows>0)
{
    // Output data of each row
    while($row = $result->fetch_assoc())
    {
          echo "PlayerName : " .$row["PlayerName"]."-Score:".$row["Score"]."<br>";
    }
}else
{
     echo "0 results";
}

$conn->close();
?>

b) 출력 확인


실습(2) - phpmyAdim 데이터 삽입하기

1) 데이터 추가

  • 4행정도 새로 추가 후 데이터 삽입
  • 실행

2) 결과 확인

  • 값 복사해서 cosole로 가보즈아

3) 출력 확인


실습(3) - console에서 데이터 삽입하기

1) 코드 추가

  • 문자열 저장
$insertsql = "INSERT INTO 'SCORE' {'PlayerName', 'Score'} VALUES {'PLAYER_002', '20'}, {'PLAYER_003','30'}, {'PLAYER_004', '40'}, {'PLAYER_005', '50'}";
  • 실행
$insertresult = $conn->query($insertsql);

<전체코드>

<?php
$servername = "localhost";  // 저장할 서버
$username = "phpmyadmin_user"; // userName
$password = "1234"; // password
$dbname = "TEST"; // dbName

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if($conn->connect_error){
        die("Connection failed:".$conn->cconnect_error);
}

// SCORE 테이블에서 Player, Score열을 가져오겠다. SELECT:가져올열을 정함
$insertsql = "INSERT INTO 'SCORE' {'PlayerName', 'Score'} VALUES {'PLAYER_002', '20'}, {'PLAYER_003','30'}, {'PLAYER_004', '40'}, {'PLAYER_005', '50'}";
$sql = "SELECT PlayerName, Score FROM SCORE";

// 위에서 작성한 쿼리 문자열 실행 => 결과로 받아옴
$insertresult = $conn->query($insertsql);
$result = $conn->query($sql);

// 결과값이 하나라도 있으면 표시
if($result->num_rows>0)
{
    // Output data of each row
    while($row = $result->fetch_assoc())
    {
          echo "PlayerName : " .$row["PlayerName"]."-Score:".$row["Score"]."<br>";
    }
}else
{
     echo "0 results";
}

$conn->close();
?>

2) 결과 확인

  • 새로고침할때마다 데이터 생성
profile
우주최강개발자

0개의 댓글