phpmyadmin 설치 및 오류 해결

Last updated on 2023. 06. 17.

데이터베이스 관리 도구인 phpmyadmin 설치하는 방법과 각종 오류를 해결하는 방법을 정리하였습니다. 오류 해결을 주로 다루었습니다.

1. 설치 전 준비사항

서버에 apache, php, mariadb 가 설치되어 있어야 합니다. 이미 서버가 구동 중이고 mariadb 루트 암호가 걸려 있다면 중간에 에러가 발생할 가능성이 있습니다. 밑에서 추가 정리하였습니다.

2-1. 설치

다음과 같이 입력합니다.

[pi@localhost ~]# sudo apt-get install phpmyadmin

phpmyadmin 암호를 설정하고 나서 문제없이 설치되었다면 홈페이지 주소/phpmyadmin 으로 접속하면 됩니다. 문제없이 잘 동작한다면 아래 글은 더 안 보셔도 됩니다.

그런데 만약 설치 중간에 아래와 같은 화면을 봤다면 설치를 중단(abort) 해야 됩니다.

mariadb error 1045

문제가 발생하는 원인은 mariadb 에 접속하여 phpmyadmin 이라는 database를 생성해야 하는데 mariadb에 암호가 설정되어 있어서 접속을 못해서 생기는 오류 입니다. 그럼 바로 전에 입력한 암호는 뭔가요? 그건 phpmyadmin 이라는 database 를 만들고 거기에 설정하는 암호인데 그 앞단에서 mariadb 접속 자체를 실패한 것입니다.

2-2. Error 1045 해결 방법

phpMyAdmin installation – ERROR 1045: Access denied (using: password: NO)를 해결하기 위해서는 임시로 mariadb 의 암호를 삭제하고 phpmyadmin 을 설치합니다. 삭제가 안되는 오류가 발생할 때도 동일한 이유입니다. 그러기 위해 mariadb 에 접속합니다.

[pi@localhost ~]# sudo mysql -uroot -p
암호입력: *********

/* 현재 설정되어 있는 MariaDB root 암호를 제거하는 명령어 입니다. */
MariaDB [(none)] SET PASSWORD FOR root@localhost=PASSWORD('');
MariaDB [(none)] 'Ctrl+D' 를 눌러서 빠져나온다.

이제 phpmyadmin 설치를 재시도 합니다.

[pi@localhost ~]# sudo apt-get install phpmyadmin

설치가 완료되면 mariadb 암호를 원래대로 설정해 줍니다. *기존에 mariadb 접속했던 root 암호와 동일하게 설정해 줄 겁니다.

[pi@localhost ~]# sudo mysql_secure_installation
암호입력: (암호를 지웠으므로 그냥 Enter 를 누릅니다.)

Set root password? Y
New password: (기존에 입력했던 암호와 동일하게 입력)

...이후 나머지 4개 질문 Y 입력 후 종료
All done! Thanks for using MariaDB!

[pi@localhost ~]# sudo reboot

2-3. phpmyadmin 을 삭제하고 싶을 때

설치도중 뭔가 에러가 발생하고 많이 꼬여서 지우고 다시 설치하는 경우에도 동일한 이유로 삭제가 안되는 경우가 있습니다. 동일하게 mariadb에 암호가 설정되어 있어서 접속을 못해서 생기는 오류입니다. 위에 방법과 같은 방법으로 mariadb 의 암호를 삭제합니다.

[pi@localhost ~]# sudo mysql -uroot -p
암호입력: *********

MariaDB [(none)] SET PASSWORD FOR root@localhost=PASSWORD('');
MariaDB [(none)] 'Ctrl+D' 를 눌러서 빠져나온다.

이제 phpmyadmin 을 삭제 합니다.

[pi@localhost ~]# sudo apt-get purge phpmyadmin
[pi@localhost ~]# sudo apt autoremove

3. phpmyadmin 설치는 잘 되었으나, http error 500 발생하는 경우

브라우저에서 phpmyadmin 접속을 하였으나 Internal server error (HTTP Error 500) 가 발생하는 경우가 있습니다. apache 로그파일을 조회해 봅니다.

[pi@localhost ~]# sudo tail -f /var/log/apache2/error.log
...(중략)
PHP Fatal error: Array and string offset access syntax with curly braces is no longer
supported in /usr/share/phpmyadmin/libraries/url_generating.lib.php

위와 같은 오류가 발생하였는데 해결이 쉽지 않습니다. 수많은 검색 결과 내린 결론은 php8.0 이상 버전에서 php 와 phpmyadmin 버전 호환성 문제가 발생하여 발생하는 오류로 이해하고 있습니다.

이러한 경우 지금까지 열심히 설치한 모든 phpmyadmin 을 삭제하고 수동으로 phpmyadmin 을 설치합니다. 삭제를 위해 2-3 글을 따라 삭제 절차를 진행합니다.

4-1. phpmyadmin 수동설치

최신 버전의 phpmyadmin 을 다운로드 받습니다.

https://phpmyadmin.net

오른쪽 상단에 다운로드하고 서버로 업로드 후에 압축을 풉니다. 압축을 풀고 폴더의 위치는 최종적으로 /usr/share 에 옮겨 놓습니다.

이제 폴더명을 phpmyadmin 으로 변경 하고 심볼릭 링크로 연결합니다.

[pi@localhost ~]# sudo mv phpMyAdmin-5.2.0-all-languages phpmyadmin
[pi@localhost ~]# sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
[pi@localhost ~]# sudo service apache2 restart

이제 phpmyadmin 에 접속하면 정상적으로 접속이 될 겁니다.

설치가 완료되면 mariadb 암호를 원래대로 설정해 줍니다. *기존에 mariadb 접속했던 root 암호와 동일하게 설정해 줄 겁니다. 위의 2-2의 내용과 동일한 내용입니다.

[pi@localhost ~]# sudo mysql_secure_installation
암호입력: (암호를 지웠으므로 그냥 Enter 를 누릅니다.)

Set root password? Y
New password: (기존에 입력했던 암호와 동일하게 입력)

...이후 나머지 4개 질문 Y 입력 후 종료
All done! Thanks for using MariaDB!

[pi@localhost ~]# sudo reboot

4-2. phpmyadmin 로그인 후 경고 표시 해결

phpmyadmin 에 접속하면 phpmyadmin 이라는 database 생성이 필요하다고 합니다. 하단에 뜨는 경고를 따라 눌러주면 phpmyadmin database는 금방 생성됩니다.

이제 첫 번째 경고 표시로

The $cfg[‘TempDir’] (/usr/share/phpmyadmin/tmp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this.

를 해결합니다. 비교적 간단한 것으로 /usr/share/phpmyadmin/tmp 폴더를 만들고 권한을 주면 됩니다.

[pi@localhost ~]# cd /usr/share/phpmyadmin
[pi@localhost ~]# mkdir tmp
[pi@localhost ~]# sudo chown -R www-data: tmp
[pi@localhost ~]# sudo service apache2 restart

이제 두 번째 경고 표시로

The configuration file now needs a secret passphrase (blowfish_secret)

를 해결합니다. /usr/share/phpmyadmin 폴더로 이동에서 config.inc.php (또는 config.sample.inc.php) 를 열어서 내용을 업데이트하면 됩니다. ※ 만약 파일명이 config.sample.inc.php로 되어 있으면 파일명을 먼저 바꿔줍니다. 키를 업데이트해주면 되는데 아래 링크를 참고하면 됩니다. 키를 생성해 주는 사이트이며 어떻게 업데이트하면 되는지 나와 있습니다.

https://phpsolved.com/phpmyadmin-blowfish-secret-generator

You’ll see this error after every installation of phpmyadmin.
To resolve this issue, just open config.inc.php ( or rename config.sample.inc.php to config.inc.php if you haven’t done so yet ) and change this line

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

to

$cfg['blowfish_secret'] = '9WWjl;jPN5AQsyxV9NY5ndyfC87XwxAt';

* 참고로 위의 파란색 내용을 그대로 붙이는 것이 아니라 site 에서 생성한 것으로 붙여야 합니다. 위의 키는 제가 임의의 조합을 적어놓은 점을 참조하세요. 생성된 키를 붙여넣기 해주면 됩니다.

키를 업데이트 했음에도 오류가 계속 나온다면 파일명을 변경했는지 다시 한번 확인해 봅시다.

[pi@localhost ~]# sudo mv config.sample.inc.php config.inc.php