이전 글(LEMP : MariaDB 설치과정 정리)에서 PHP 연동 테스트를 phpMyAdmin 설치로 한다고 예고했었지요.

phpMyAdmin을 설치해보겠습니다.

phpMyAdmin은 PHP 언어로 MySQL DB 명령을 입력해주는 GUI 툴인데요, php 업로드 설정 용량이 작게 되어 있을 경우 phpMyAdmin으로 백업/복원이 완벽하게 안 된다는 단점이 있습니다. 하지만 GUI로 DB를 제어할 수 있는 점, 구성된 명령어를 보여주는 점은 초보자가 DB 명령어를 익히는 데에 큰 도움이 되더군요.

 

MariaDB 기반이라 MySQL 기반과 기본적인 과정은 같지만, 세부적인 과정은 다를 수 있습니다.

 

▲ 먼저 패키지들을 최신으로 유지합니다.

sudo apt-get update

sudo apt-get upgrade

 

▲ sudo apt-get install phpmyadmin

phpMyAdmin 패키지를 설치합니다. 디지털오션의 튜토리얼을 보면 php-mbstring 과 php-gettext 패키지들이 중요한 듯한데, 저는 PHP 7.2 설치 과정에서 php-mbstring 을 설치했더니 의존성 패키지에 뜨지 않았고, php-gettext 는 의존성패키지에 보이네요.

 

▲ 설정을 자동으로 처리할 웹서버 프로그램을 고르라는 대화창이 나오는데(스페이스바를 누르면 선택됨), Nginx는 선택지에 없습니다. 아무것도 선택하지 말고 Tab 키를 눌러 <확인>으로 이동 후 엔터 키를 누릅니다.

(항목에 nginx가 추가되는 날이 빨리 왔으면 좋겠습니다. 이 부분이 없어서 고생하게 되네요.)

 

▲ 이후 설치가 계속 진행됩니다. 기다립니다.

 

▲ 대화창이 또 뜹니다. dbconfig-common 으로 DB 설정하겠냐고.

"데이터베이스를 이미 설치하고 설정한 경우, 이 옵션을 사용하지 마십시오."라는 문구가 눈에 띄네요. 저는 MariaDB 설치할 때 mysql_secure_installation 을 진행했기 때문에 이번 과정은 건너뛰어도 될 것 같습니다. <아니오>를 선택했습니다.

 

▲ 일단 패키지 설치가 끝났습니다.

 

 

※ /phpmyadmin 경로 추가를 위한 server { } 블록 파일 수정

 

▲ sudo find / -name index.php | grep phpmyadmin

이라고 입력해서 index.php 파일이 있는 phpmyadmin 디렉토리를 찾아봤더니 /usr/share/phpmyadmin/ 이네요. 경로를 기억해둡니다.

(사실 phpmyadmin 디렉토리가 하나밖에 없겠지~ 하고 "sudo find / -name 디렉토리명 -type d" 형식으로 명령어를 입력해봤었는데, 디렉토리가 여러 개 검색되는 바람에 Nginx 서버블록에서 index.php 연결했던 게 생각나서 명령어를 바꿔봤죠.)

 

 

이제 "sudo gedit /etc/nginx/sites-enabled/서버블록파일명" 형식으로 입력해서 서버블록 설정파일을 엽니다(에디터는 nano, vi 등 원하는 것을 쓰셔도 됨).

 

ubuntu nginx phpmyadmin 403 forbidden 404 not found error solve

▲ 위의 스크린 샷처럼 구성한 location 블록을 server { } 블록 안쪽에 추가합니다. 붉게 밑줄친 부분은 핵심 요소입니다. 이 부분의 구성이 잘못되면 http://도메인주소/phpmyadmin 경로로 접근했을 때 403 Forbidden, 404 Not Found Error 등이 반드시 나타나므로 주의하세요. 저의 PHP 설치 과정 정리 글을 따라하셨다면 location / { } 블록에 try_files 설정이 있으니까 try_files 은 생략해도 됩니다. 보안과 로그에 대한 설정도 필수 요소가 아닙니다.

저장 후 에디터를 종료하고, Nginx 서비스를 재시작하면 변경된 내용이 적용됩니다.

 

https://www.linuxbabe.com/ubuntu/install-phpmyadmin-nginx-lemp-ubuntu-18-04-lts

▲ location 블록을 추가하는 방법을 쓰지 않고 새로운 server { } 블록을 추가한 다음 별도의 도메인을 매칭해서 phpmyadmin을 연결하신 사례가 있는데(도메인 구매처에서도 서브도메인 설정 필요), 이 방법이 제 방법보다 더 좋다고 생각하신다면 링크의 문서를 참고해서 구현하세요.

phpmyadmin-serverblock.txt
다운로드

(사이트 사라질 가능성을 대비해서 서버블록 구성을 텍스트 파일로 올려둡니다.)

 

이외에도 웹루트 경로에 ln -s 명령어로 /usr/share/phpmyadmin 경로의 심볼릭링크를 생성하는 식으로 구현한 경우도 있고... 방법은 다양한 것 같습니다. 제가 제시한 것이 정답이 아니니까 이리저리 궁리해 보세요.

 

※ location 구문 표현법에 대해 참고할만한 글들

http://nginx.org/en/docs/http/ngx_http_core_module.html#location

https://stackoverflow.com/questions/19101882/nginx-serve-jpg-images-from-different-root-and-location

https://blog.naver.com/special9486/220694733669

https://ohgyun.com/480

http://javakorean.com/nginx-rewrite-문법

 

 

※ phpMyAdmin 접속 테스트

 

웹브라우저 주소창에 "도메인/phpmyadmin/" 형태로 입력합니다. 도메인을 연결하지 않았다면 "localhost/phpmyadmin/" 이라고 입력합니다.

 

▲ 이렇게 뜨면 설치와 연결 설정이 잘 된 겁니다.

 

MaridDB 설치할 때 root DB계정을 건들지 않아 쉘인증 방식이 유지되고 있다면 root DB계정으로 로그인이 안 될 겁니다. 아래 스샷처럼 #1698 에러가 뜰 거예요.

 

 

MaridDB 설치 과정 중에 만들어 두었던 쉘인증 우회용 세컨드 DB 계정으로 로그인해 보세요(저의 계정명은 aaa 입니다.).

 

▲ 이렇게 "전체적 권한, 허용, 실행" 부분이 root 계정과 같으면 aaa 계정도 root처럼 제약 없이 모든 행동을 할 수 있는 겁니다.

 

만약 "전체적 권한, 허용, 실행" 부분이 root 계정과 다르다면 아파치 설치하면서 phpMyAdmin 설치과정 정리했던 글에서 Crtl+F 누르고 "phpMyAdmin 접속 테스트 & 문제 해결" 부분을 찾아서 

 

설치 과정은 이것으로 끝입니다.

 

 

※ phpMyAdmin으로 DB 생성 + 사용자(계정) 추가 + DB에 사용자 연결하기

 

실습 차원에서 DB와 계정을 만들어보고, 이 둘을 연결해보도록 하겠습니다.

(root 역할을 하는 세컨드 계정으로 DB를 컨트롤해도 되는데, DB별로 관리용 계정을 따로 할당하는 법을 익혀두면 유용하더라고요.)

phpMyAdmin에서 이것을 구현하기 위한 방법은 세가지가 있습니다. 취향에 맞는 방법을 골라 쓰시면 됩니다.

 

 

- 방법 1. DB 먼저 만들고, 해당 DB의 "권한" 탭에서 사용자를 추가하면서 연결하기

 

▲ root 역할을 하는 세컨드 계정으로 phpMyAdmin에 로그인한 다음 "데이터베이스" 탭에서 새 데이터베이스를 만들면...

 

▲ 해당 DB의 관리 메뉴로 자동적으로 넘어갑니다. "권한" 탭에서 "사용자 추가" 메뉴를 선택한 다음...

 

▲ 로그인 정보 란에 ID와 비밀번호를 적절히 넣어주고,

“Database for user account” 란에서 "~~~ 데이터베이스에 대한 모든 권한을 부여" 체크박스를 체크하고 "실행" 버튼을 누르면 DB와 계정이 연결됩니다.

 

- 방법 2. 사용자를 만들고, 사용자명과 같은 이름의 DB를 생성하면서 연결하기

 

▲ root 역할을 하는 세컨드 계정으로 phpMyAdmin에 로그인한 다음 "사용자 계정" 탭에서 "사용자 추가" 메뉴를 선택한 다음...

 

▲ 로그인 정보 란에 ID와 비밀번호를 적절히 넣어주고,

“Database for user account” 란에서 "동명의 데이터베이스를 생성하고 모든 권한을 부여" 체크박스를 체크하고 "실행" 버튼을 누르면 계정과 DB가 동시에 만들어지면서 연결됩니다.

 

- 방법 3. 사용자를 먼저, DB를 나중에 만든 다음, 둘을 연결하기

 

▲ root 역할을 하는 세컨드 계정으로 phpMyAdmin에 로그인한 다음 "사용자 계정" 탭에서 "사용자 추가" 메뉴를 선택한 다음...

 

▲ 로그인 정보 란에 ID와 비밀번호를 적절히 넣어주고,

“Database for user account” 란에서 체크박스를 선택하지 않고 "실행" 버튼을 누르면 계정만 생성됩니다.

 

▲ 상단의 "서버:localhost:3306" 부분을 클릭(또는 좌측상단 phpMyAdmin 로고 하단의 집모양 아이콘 클릭)한 다음 "데이터베이스" 탭에서 새 DB를 만듭니다.

 

▲ 다시 "서버:localhost:3306" 부분을 클릭하고 "사용자 계정" 탭으로 접근한 다음, 생성했던 계정에서 "권한 수정"을 누릅니다.

 

▲ 화면이 바뀌면 위 스크린 샷을 참고하여 Global 옆의 “데이터베이스” 클릭 → “다음 데이터베이스들에 대한 권한 추가” 항목에서 아까 만들었던 DB명을 클릭 → “실행” 버튼을 눌러 다음 대화창으로 넘어갑니다.

 

▲ GRANT 체크박스만 해제하고 나머지들은 전부 체크. 그리고 “실행” 버튼을 누르면 계정과 DB가 연결됩니다.

 

----------------------------------------------------------

 

▼ 로그아웃 후 생성한 계정으로 접근해보면 해당 DB만 보이는 것을 확인할 수 있습니다.

 

다음 글은... 워드프레스 설치 과정 설명이 될 것 같습니다. ^^

 

------------------------------------------------------------------------

 

[우분투 18.04] phpMyAdmin “서버 에러” 문제 해결기

 

[우분투 18.04 데스크톱] LAMP : phpMyAdmin 설치과정 정리(MariaDB 기반)

[윈도우10 64bit] APM phpMyAdmin 설치과정 정리(웹서버 구축 마무리)

 

 

▲ 친구를 감동시키는 10 가지 간단한 트릭 | Thaitrick

반응형