이전 글 : [모의해킹_실습] - Php로 웹 개발하기 : 로그인 페이지 만들기(1) - 기초 Setting
앞선 포스팅에서 php 로그인 페이지를 만들 때 MySQL의 권한 문제와 Php와 MySQL이 연동이 잘 안되는 문제가 생길 수 있다. (나야 나) 폭풍 구글링을 통해 문제를 해결할 수 있었는데, 한번 살펴보자.
① MySQL 권한 문제
우선 sudo를 붙여야만 mysql 로그인이 가능한 문제가 있었다.
root 사용자는 sudo를 붙여야 하는 접속 방식 자체를 바꾸든지, 새로운 사용자를 만들어준 후 연동할 데이터베이스에 권한을 주든지 둘 중에 하나를 선택하면 된다. 우리는 후자를 살펴보자.
mysql > use mysql;
mysql > CREATE user 'userid'@'localhost' identified by 'userpw';
mysql > GRANT ALL PRIVILEGES in *.* to 'userid'@'localhost' identified by 'userpw';
mysql > FLUSH PPRIVILEGES;
mysql > SHOW GRANTS for 'userid'@'localhost'; // 권한 확인
mysql > REVOKE all on *.* from 'userid'@'localhost'; // 권한 삭제
위처럼 한 사용자를 생성해서 그 사용자에게 권한을 주면, 그 사용자로 sudo 없이 로그인 가능하다.
② php.init 파일 수정
php와 MySQL 연동에 문제가 있었는데, 1) 에러 메시지가 안 뜬다. 2) mysqli_connect() 함수를 사용할 수 없다. 이 두 가지 문제가 차례로 생겼다. 둘 다 php.init 파일을 수정함으로써 해결할 수 있었다.
우선, 분명히 연동에 문제가 생겼는데... mysqli_connect_error() 함수를 사용해도 에러 메시지가 안 떠서 뭐가 문제인지를 알 수 없었다.
$ find / -name php.init 2>/dev/null
위의 코드로 php.init 파일을 찾아준다. (위의 코드는 간략히 설명하자면 'php.init이라는 이름을 가진 파일을 찾아줘, error message들은 전부 휴지통으로~'의 뜻이다.)
나 같은 경우는 php.init 파일이 두 개 나왔는데, 그중에 apache2/php.init을 수정해 주었다.
php.init 파일에서 display_errors = Off로 되어있다면, 이를 display_errors = On으로 고쳐주자. 그 후 서버를 껐다가 키면 에러 메시지가 출력 된다.
에러 메시지를 살펴보니, Undefined된 함수 mysqli_connect()를 부르려 했다는 에러가 출력되었다. 이 역시 php.init 파일을 수정하면 된다. 버전에 따라 조금 다른 것 같은데, 나는 ;extension=mysqli의 주석(;)을 해제해 주었다.
마찬가지로 서버를 껐다가 키니 제대로 연동이 되었다! (감격)
에러 메시지는 싫지만 에러가 있는데 에러 메시지가 안 뜨는 게 얼마나 더 무서운 것인지 느꼈다.
'WEB HACKING > 웹 해킹[실습]' 카테고리의 다른 글
Php로 웹 개발하기 : MySQL Trigger (0) | 2021.10.25 |
---|---|
Php로 웹 개발하기 : 식별 - 인증 Case 별 로그인 (0) | 2021.10.23 |
Php로 웹 개발하기 : 회원가입(1) (0) | 2021.10.19 |
Php로 웹 개발하기 : 로그인(1) - 기초 Setting (0) | 2021.10.16 |
APM 환경 구축하기 (0) | 2021.10.15 |
댓글