[최초보]PHP에서 mySql연결...

Submitted by dhchoi on 2009.09.26.(Sat) - 14:37

안녕하세요? 여기에 글을 올리는게 맞는지 모르겠습니다만 며칠째 고민하다가 여쭤봅니다.
Debian Etch에서 서버 운영(?이렇게 말하기 정말 쑥스럽습니다..)중인데요...
이번에 PHP를 배워 보려고 공부를 시작했습니다. 그런데 mysql과 연결을 도저히 못 시키겠습니다.

책과 인터넷을 보고 몇가지 방법으로 시도를 해 봤지만 안되는게 뭔가 제가 apache나 mysql에서 잘못한게 있는거 같습니다.
우선 제가 해 보았던 방법을 말씀드리겠습니다.
<< 정상 작동 되는 것 >>
1)

<? 
  phpinfo(); 
?>


2)

<? 
  echo "한글도 되나???"; 
  phpinfo(); 
?> 


<< 일부 정상 작동 되는 것 >>
test!!! OK!!!

<?php 
  echo $HTTP_USER_AGENT; 
?> 

 

<?php 
  $mysql_host = 'localhost'; 
  $mysql_user = 'root'; 
  $mysql_pwd = ''; // 패스워드는 지웠습니다.mysql의 user에서 root와 root의 패스워드를 이용합니다. 
  $mysql_db = 'dhcdd'; // 이 db명은 엉터리입니다. 에러 메세지 보려고 일부러 그랬습니다. 
  echo "Hell0 2!!"; 
  $connect = @mysql_connect($mysql_host, $mysql_user, $mysql_pwd) or die("DB connection failed!!!");
  @mysql_select_db($mysql_db, $connect) or die("Check DB name!!"); 
?> 

위의 소스에서 제가 의도했던것은 OK!!!메세지를 표시하고 접속된 상대방의 브라우저 종류를 표시하고,
Hell0 2!!메세지를 표시하고 db이름이 엉터리이기 때문에 Check DB name!!을 표시하고자 했습니다만
OK!!만 표시되고 끝나버립니다.
즉, php가 아예 실행이 되지 않는것 같습니다.

<< 전혀 작동되지 않는 것 >>

<? 
  $mysql_host = 'localhost'; $mysql_user = 'root'; 
  $mysql_pwd = ''; // 패스워드는 지웠습니다.mysql의 user에서 root와 root의 패스워드를 이용합니다. 
  $mysql_db = 'dhcdd'; // 이 db명은 엉터리입니다. 에러 메세지 보려고 일부러 그랬습니다. 
  $connect = @mysql_connect($mysql_host, $mysql_user, $mysql_pwd) or die("DB connection failed!!!");
  @mysql_select_db($mysql_db, $connect) or die("Check DB name!!"); 
?> 

역시 Check DB name!!이라는 메세지를 보고 싶었으나 아무것도 표시되지 않습니다.
이 외에도 여러가지 방법으로 시도를 해 보았습니다만 역시 아무것도 되지 않아 도움을 청합니다.

위에서 잠깐 말씀드렸지만 mysql.user에서 root와 root의 패스워드를 지정하여 사용하고자 하며, root에 grant명령으로 all privileges했습니다.
(phpmyadmin을 이용하여 web상에서도 확인을 했습니다).
그런데도 db와 접속이 안되는거 같습니다.

제가 뭘 잘못했는지, 어디서 무슨 문서를 봐야하는지나 아니면 apache나 php설정에서 뭔가를 확인해 봐야 할 사항이 있는지...
알려 주시면 감사하겠습니다.
진심으로 도움을 부탁드립니다.
감사합니다.
꾸~~~~~벅!!! 최 초보드림

dhchoi

작성: 2009.09.24.(Thu) - 14:40

수정: 2017.05.03.(Wed) - 11:25

@mysql_connect에 @를 빼니까 에러가 났습니다.
그래서 붙였습니다. ^^*

wildapple

작성: 2009.09.27.(Sun) - 15:53

수정: 2017.05.03.(Wed) - 11:30

mysql_user와 mysql_pwd를 직접 쓰는 방법으로 아무 이상이 없이 되는군요. (pass를 쓰지 않는 방법은 몰라서요)
$mysql_host = '192.168.10.1'; 
$mysql_user = '일반유저'; 
$mysql_pwd = '패스워드'; 
$mysql_db = 'db 이름'; 
$connect = @mysql_connect($mysql_host, $mysql_user, $mysql_pwd) or die("DB connection failed!!!");
@mysql_select_db($mysql_db, $connect) or die("Check DB name!!"); . 

mysql이 다른 가상 머신에 있어서 아이피를 썼습니다. .
일반 유저를 사용했을 때 원하는 결과가 모두 아무 이상 없이 나왔습니다.

패스워드가 틀렸을 때 : DB connection failed!!!
db 이름이 틀렸을 때 : Check DB name!! .
root를 사용했을 때는 패스워드가 맞는데도 DB connection failed!!! 나오고 연결이 안됩니다. .

@이 없어도 이상 없이 되네요. .
소스를 그대로 붙여쓰기 해서 user와 pass만 바꾼 결과 OK!!!
Hell0 2!!
Check DB name!!

 

eunchul

작성: 2009.09.28.(Mon) - 01:19

수정: 2017.05.03.(Wed) - 11:35

<?
  $mysql_host = 'localhost'; 
  $mysql_user = 'root'; $mysql_pwd = ''; // 패스워드는 지웠습니다.mysql의 user에서 root와 root의 패스워드를 이용합니다. 
  $mysql_db = 'dhcdd'; // 이 db명은 엉터리입니다. 에러 메세지 보려고 일부러 그랬습니다. 
  $connect = @mysql_connect($mysql_host, $mysql_user, $mysql_pwd) or die("DB connection failed!!!");  
  @mysql_select_db($mysql_db, $connect) or die("Check DB name!!"); 
?>


@mysql_select_db 에서 @을 빼면 에러메시지가 출력된다 하셨죠? 그 에러 메시지를 알려주세요~
아마 php5-mysql 패키지가 설치가 안되서 그럴지도 모르겠네요.
그리고, @를 이용해서 에러메시지를 숨기지 마시고, php.ini 파일에서 에러출력 설정을 바꾸시는게 좋을듯합니다. :D

도움 주신분들께 감사드립니다.
<? 
  $mysql_host = 'localhost'; 
  $mysql_user = 'root'; 
  $mysql_pwd = ''; 
  $mysql_db = 'dhcdd'; 
  $connect = mysql_connect($mysql_host, $mysql_user, $mysql_pwd) or die("DB connection failed!!!");
  @mysql_select_db($mysql_db, $connect) or die("Check DB name!!"); 
?> 
위의 코드로 실행을 시키면
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) 
in /web/apache2-default/study/ccc.php on line 7 DB connection failed!!! 
이런 에러 메세지가 나옵니다.

그리고, 패스워드랑 db명을 똑 바로 적어주면, @mysql_connect와 @mysl_select_db에서 "@"를 넣던 빼던 똑 같이 화면에 아무것도 나오지 않습니다.
아마도 제가 님의 말씀과 같이 뭔가 설정을 빠뜨린게 아닌가 하는데 그게 뭔지 모르겠습니다.
도움을 부탁드립니다.

감사합니다.
꾸~~~~벅 최 초보 드림

여러 고수님들 방금 데비안 판 올림하고 다시 해 보니까 됩니다. :D
일단 db랑 접속이 되는거 같아서... 정말 기쁩니다.
좀 더 공부해 보고 다시 질문 드리겠습니다.
다시 한번 도움 주신 여러분께 진심으로 감사드립니다.
최 초보 드림