웹사이트 검색

Debian 11에서 phpMyAdmin을 설치하고 보호하는 방법


이 페이지에서

  1. 전제 조건
  2. 시작하기
  3. LAMP 서버 설치
  4. phpMyAdmin 설치 및 구성
  5. phpMyAdmin 관리 사용자 만들기
  6. phpMyAdmin용 Apache 구성
  7. phpMyAdmin 액세스
  8. 보안 phpMyAdmin
  9. phpMyAdmin 확인
  10. 결론

phpMyAdmin은 웹 인터페이스에서 MySQL 및 MariaDB 데이터베이스를 관리하는 데 사용되는 무료 오픈 소스 웹 기반 애플리케이션입니다. 명령줄 인터페이스에서 데이터베이스를 만들고 관리하는 것은 초보자에게 매우 어렵습니다. phpMyAdmin은 MySQL 데이터베이스, 사용자 계정 및 권한을 관리하고, SQL 문을 실행하고, 웹 브라우저를 통해 데이터를 가져오고 내보내는 더 쉬운 방법을 제공합니다.

이 게시물에서는 Debian 11에서 phpMyAdmin 데이터베이스 관리 도구를 설치하고 보호하는 방법을 보여줍니다.

전제 조건

  • Debian 11을 실행하는 서버.
  • 루트 암호는 서버에서 구성됩니다.

시작하기

시작하기 전에 시스템 패키지를 최신 버전으로 업데이트하는 것이 좋습니다. 다음 명령을 사용하여 모든 패키지를 업데이트할 수 있습니다.

apt-get update -y

시스템이 업데이트되면 다음 단계를 진행할 수 있습니다.

램프 서버 설치

phpMyAdmin은 PHP 기반 애플리케이션이며 웹 서버에서 실행됩니다. 따라서 서버에 LAMP 서버를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

apt-get install apache2 mariadb-server libapache2-mod-php php-cli php-mysql php-zip php-curl php-xml php-mbstring php-zip php-gd unzip -y

phpMyAdmin 설치 및 구성

먼저 다음 명령을 사용하여 공식 웹사이트에서 최신 버전의 phpMyAdmin을 다운로드합니다.

wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip

다운로드가 완료되면 다음 명령을 사용하여 다운로드한 파일의 압축을 풉니다.

unzip phpMyAdmin-5.1.1-all-languages.zip

그런 다음 다음 명령을 사용하여 추출된 디렉토리를 /usr/share로 이동합니다.

mv phpMyAdmin-5.1.1-all-languages /usr/share/phpmyadmin

다음으로 다음 명령을 사용하여 필요한 디렉터리를 만듭니다.

mkdir -p /var/lib/phpmyadmin/tmp

다음으로 phpMyAdmin 디렉토리에 적절한 소유권을 설정합니다.

chown -R www-data:www-data /var/lib/phpmyadmin

다음으로 phpMyAdmin 샘플 구성 파일을 복사합니다.

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

다음으로 pwgen을 설치하고 다음 명령을 사용하여 비밀 키를 생성합니다.

apt-get install pwgen -y
pwgen -s 32 1

산출:

pau9t1SG6lmaeCFxKqeeaY5N4erIa25K

다음으로 config.inc.php 파일을 편집하고 구성합니다.

nano /usr/share/phpmyadmin/config.inc.php

비밀 키를 정의하고 다음 행의 주석을 제거하십시오.

$cfg['blowfish_secret'] = 'pau9t1SG6lmaeCFxKqeeaY5N4erIa25K'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'password';

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

완료되면 파일을 저장하고 닫습니다.

phpMyAdmin 관리 사용자 생성

항상 phpMyAdmin을 통해 데이터베이스를 관리하기 위한 별도의 사용자를 생성하는 것이 좋습니다.

먼저 다음 명령을 사용하여 phpMyAdmin 테이블을 MariaDB 데이터베이스로 가져옵니다.

mysql < /usr/share/phpmyadmin/sql/create_tables.sql

그런 다음 다음 명령을 사용하여 MariaDB 셸에 연결합니다.

mysql

연결되면 다음 명령을 사용하여 phpmyadmin 데이터베이스에 필요한 모든 권한을 부여합니다.

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';

다음으로 다음 명령을 사용하여 관리 사용자를 만듭니다.

MariaDB [(none)]> CREATE USER myadmin;

그런 다음 다음 명령을 사용하여 관리 사용자에게 모든 권한을 부여합니다.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

다음으로 다음 명령을 사용하여 권한을 플러시하고 MariaDB 셸을 종료합니다.

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

완료되면 다음 단계로 진행할 수 있습니다.

phpMyAdmin에 대한 Apache 구성

다음으로 phpMyAdmin에 대한 Apache 가상 호스트 구성 파일을 생성해야 합니다. 다음 명령을 사용하여 만들 수 있습니다.

nano /etc/apache2/conf-available/phpmyadmin.conf

다음 줄을 추가합니다.

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        <IfModule mod_authn_file.c>
            AuthType Basic
            AuthName "phpMyAdmin Setup"
            AuthUserFile /etc/phpmyadmin/htpasswd.setup
        </IfModule>
        Require valid-user
    </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

완료되면 파일을 저장하고 닫은 후 다음 명령을 사용하여 phpMyAdmin 구성 파일을 활성화합니다.

a2enconf phpmyadmin.conf

다음으로 Apache 서비스를 다시 로드하여 변경 사항을 적용합니다.

systemctl reload apache2

다음 명령을 사용하여 Apache 서비스의 상태를 확인할 수 있습니다.

systemctl status apache2

다음 출력이 표시되어야 합니다.

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-08-17 10:16:28 UTC; 2s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 45027 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 45031 (apache2)
      Tasks: 6 (limit: 2341)
     Memory: 14.6M
        CPU: 89ms
     CGroup: /system.slice/apache2.service
             ??45031 /usr/sbin/apache2 -k start
             ??45032 /usr/sbin/apache2 -k start
             ??45033 /usr/sbin/apache2 -k start
             ??45034 /usr/sbin/apache2 -k start
             ??45035 /usr/sbin/apache2 -k start
             ??45036 /usr/sbin/apache2 -k start

Aug 17 10:16:28 debian systemd[1]: Starting The Apache HTTP Server...

phpMyAdmin에 액세스

이 시점에서 phpMyAdmin이 설치되고 구성됩니다. 이제 웹 브라우저를 열고 URL http://your-server-ip/phpmyadmin을 사용하여 phpMyAdmin에 액세스하십시오. phpMyAdmin 로그인 페이지가 표시되어야 합니다.

관리자 사용자 이름과 비밀번호를 제공하고 이동 버튼을 클릭합니다. 다음 페이지에 phpMyAdmin 대시보드가 표시되어야 합니다.

안전한 phpMyAdmin

이중 인증으로 phpMyAdmin을 보호하는 것이 좋습니다. .htaccess 인증 및 권한 부여 기능을 사용하여 이를 수행할 수 있습니다.

먼저 phpMyAdmin 구성 파일을 편집합니다.

nano /etc/apache2/conf-available/phpmyadmin.conf

다음 서버 블록에 \AllowOverride All\ 줄을 추가합니다.

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All

    <IfModule mod_php5.c>

완료되면 파일을 저장하고 닫은 다음 Apache 서비스를 다시 시작하십시오.

systemctl restart apache2

다음으로 .htaccess 파일을 만들고 Apache 인증 유형을 정의합니다.

nano /usr/share/phpmyadmin/.htaccess

다음 줄을 추가합니다.

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/share/phpmyadmin/.htpasswd
Require valid-user

파일을 저장하고 닫은 후 다음 명령을 사용하여 사용자를 만듭니다.

htpasswd -c /usr/share/phpmyadmin/.htpasswd secureuser

아래와 같이 비밀번호를 설정하라는 메시지가 표시됩니다.

New password: 
Re-type new password: 
Adding password for user secureuser

phpMyAdmin 확인

이 시점에서 phpMyAdmin은 추가 인증으로 보호됩니다. 이를 확인하려면 웹 브라우저를 열고 URL http://your-server-ip/phpmyadmin을 사용하여 phpMyAdmin에 액세스하십시오. 아래와 같이 추가 사용자 이름과 암호를 묻는 메시지가 표시됩니다.

사용자 이름과 비밀번호를 제공하면 일반 phpMyAdmin 로그인 페이지로 리디렉션됩니다.

결론

축하합니다! Debian 11에 phpMyAdmin을 성공적으로 설치하고 보호했습니다. 이제 phpMyAdmin을 탐색하고 웹 브라우저에서 데이터베이스 관리를 시작할 수 있습니다.