반응형

학교수업시간에 윈도우 운영체제를 기준으로 php와 mysql을 연동하는데 남들은 다 되는데 나만 안되는 불상사가... 

학교수업 환경은 윈도우에 xampp를 설치하고 xampp로 아파치, php, mysql(mariaDB)을 관리한다.

m1pro 맥북을 사용하고 xampp로 php, 아파치를 사용하고 mysql은 어찌저찌 하다가 homebrew를 통해 따로 설치하여 사용하고 있다.

 

학교 수업에서 사용된 코드

<?php
echo "<h3>MYSQL Server 접속 테스트</h3>";

# mysql database server connection
$server = "localhost"; // mysql 서버가 동작하는 호스트의 ip주소 127.0.0.1
$user = "root"; // root는 db서버의 슈퍼유저임 - 삭제, 생성등 다 할 수 있다.
$password = "";
$dbname = "bookdb";

// mysqli : mysql 접속 등을 처리하는 클래스. 접속이 성공하는 접속 정보를 가지는 객체가 생성.
$conn = new mysqli($server, $user, $password, $dbname);

if($conn->connect_error) echo "<h3>MYSQL Server 접속 오류</h3>";
else echo "<h3>접속 성공</h3>";
?>

학교 수업에서는 위의 소스코드로 php와 mysql을 연동하였다. 따로 비밀번호를 설정하지 않아서 비밀번호 값을 비워두었다.

 나는 password를 설정해주었기 때문에 내가 설정한 패드워드를 분명히 넣어서 사용했는데도 접속이 되지 않았다. 

mysqli 객체를 생성하는 부분에서 오류가 발생하여 밑에 코드들이 아예 동작하지 않았다. 

이것을 해결해보려 workbench도 설치해보고 여러가지 했었는데 실패했다.

중간에 workbench를 잘못건드려서 password도  expire 시켜서 또 다른 고생도 했었다...

비밀번호를 재설정하는데 전에 쓰던 비밀번호 수준은 정책에 위반되어서 설정이 불가능했다.(소문자 + 숫자) 

어찌저찌 비밀번호를 다시 설정하였는데 대,소문자, 특수문자가 모두 들어간 10자리 이상의 비밀번호로... 

 쓸모없는 소리는 그만하고 문제는 간단했다. 서버의 포트를 입력해주지 않아서였다.

해결한 코드

<?php
echo "<h3>MYSQL Server 접속 테스트</h3>";

# mysql database server connection
$server = "localhost:3306"; // mysql 서버가 동작하는 호스트의 ip주소 127.0.0.1
$user = "root"; // root는 db서버의 슈퍼유저임 - 삭제, 생성등 다 할 수 있다.
$password = "설정한 비밀번호";
$dbname = "bookdb";

// mysqli : mysql 접속 등을 처리하는 클래스. 접속이 성공하는 접속 정보를 가지는 객체가 생성.
$conn = new mysqli($server, $user, $password, $dbname);

if($conn->connect_error) echo "<h3>MYSQL Server 접속 오류</h3>";
else echo "<h3>접속 성공</h3>";
?>

localhost 뒤에 :3306이라는 포트번호를 붙여서 동작시켰더니 정상적으로 연동이 되었다. 대부분의 default 포트번호가 3306이기도 하고 workbench에서 확인하였을 때도 포트번호가 3306이라서 3306으로 붙여봤다!!

 

맥을 쓴지 얼마 안되어서 개발환경 하나하나 설정할 때마다 수업내용과 달라 혼자 구글링하며 정말 고생하고 있는데... 어차피 언젠가 겪을 고통 미리 겪어두고 숙지해놓는 것도 나쁘지 않다고 생각한다...

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기