2009-03-22 8 views
0

localhost에서 웹을 만들었고 호스트에서 이동하려고했을 때 많은 오류가 있음을 보여줍니다. 내 로컬 데이터베이스에 연결할 수없는 것 같습니다.원격 mysql 연결

$host = "myip"; 
$user = "root"; 
$pass = ""; 
$db = "mydatabase"; 

mysql_connect($host, $user, $pass); 
mysql_select_db($db); 
$on = mysql_fetch_row(mysql_query("SELECT COUNT(online) FROM characters WHERE online=1")); 
echo "<br>Online: $on[0]<br><br>"; 

을 그리고 여기에 출력입니다 : 다음은 코드의 도움

답변

4

그것은 MySQL의 사용자 권한 문제입니다에 대한

Warning: mysql_connect() [function.mysql-connect]: Host 'myip' is not allowed to connect to this MySQL server in * on line 46 

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in * on line 48 

Online: 

감사합니다. 예를 들어 phpmyadmin을 사용하여 새 사용자를 만들고 localhost에서 연결하는 경우 호스트를 localhost로 설정하거나 외부에서 연결할 경우 호스트를 localhost로 설정하십시오.

Alekc가 제대로 언급 한 바와 같이
+1

경고 : '%'는 * any * 호스트의 계정을 엽니 다. 가능한 한 호스트를 구체적으로 만드는 것이 가장 좋습니다. – Riedsio

3

, 그것은 권한 문제입니다 :

grant all privileges on mydatabase.* 
    to [email protected]'your_ip_address' 
    identified by 'your_password'; 

a로 이어 :

당신은 MySQL의 프롬프트에서이 작업을 수행 할 수

flush privileges; 

그리고 다시 연결을 시도 다시.

your_ip_adress이 :이 하지 MySQL 서버의 IP 주소하지만 연결하려는 IP 주소의 _ 암호를 있다는 사실을 양지해야합니다 (웹 서버?) : PHP 측의 연결을 설정할 때 사용합니다 하나입니다

이 솔루션을 사용해도 작동하지만 웹 응용 프로그램에서 사용할 사용자에게 모든 권한 을 부여하는 것은 좋지 않습니다. 적은 수의 사용 권한으로 동일한 작업을 수행 할 수 있습니다.

멋진 GUI 프론트 엔드로 모든 작업을 수행 할 수 있습니다. 나는 커맨드 라인을 선호한다.

+0

FLUSH PRIVILEGES는 mysql 데이터베이스에서 테이블을 직접 수정 한 경우에만 필요하며 GRANT 또는 REVOKE를 사용하여 테이블을 업데이트 한 경우에는 필요하지 않습니다. 좋은 포스트, +1. :) –

+0

오! 내가 참조. 고마워. 항상 이렇게 했니? 버전 3에서 MySQL을 사용하기 시작했으며 테이블에 대한 일부 권한을 변경 한 후에 항상 "플러시 권한"을 사용했습니다. :-) –

+0

모든 클라이언트를 허용하기 위해'your_ip_address' 대신'%'를 쓸 수 있습니까? –