2013-04-19 4 views
0

다음과 같은 문제가 있습니다. 우리는 mysql-server를 다른 머신으로 옮겼으므로 ip가 변경되었지만 syslog 시스템의 스크립트는 새 서버와 통신하지 않습니다. 나는 문제를 시뮬레이션하기 위해 다음과 같은 코드를 벗었mysql_connect가 올바른 호스트와 통신하지 않습니다.

내 스크립트

$link = mysql_connect("mysql.domain.tld", "<user>", "<pass>"); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
echo 'Connected successfully'; 

난 다음이

[email protected]:~# php test.php 
Could not connect: Access denied for user '<user>'@'10.254.237.42' (using password: YES) 

를 반환하지만 내 스크립트를 실행할 때 내가 핑을 수행 할 때

[email protected]:~# ping -c 1 mysql.domain.tld 
PING mysql.domain.tld (10.254.235.31) 56(84) bytes of data. 

완전히 다른 ip (그러나 올바른 ip)로 확인됩니다.

그래서 저는 현재 "기다림 - WHUT !!!"입니다. 모드로 내가 왜 그것이 잘못된 기계에 연결하는지 알 수 없습니다. 그래서 내 질문에 mysql_connect 항상 php.ini 또는 뭔가 고정 IP/호스트에 연결할 수 있도록하는 방법은 무엇입니까?

+0

그래서 별칭 대신 IP를 사용하지 않으시겠습니까? 서버를 다른 호스트로 이동하면 모든 공급자가 새 DNS를 할당하는 데 시간이 걸립니다. DNS를 플러시해야합니다. –

+1

사용자에 대한 액세스가 거부되었습니다. 문제는 권한과 관련이 있습니다. – Harpreet

+0

@Royal Bg 간단한 DNS 이름이 변경되지 않고 IP가 변경 될 수 있습니다 (이 경우 동일한 결과가 나타납니다). – Ponsjuh

답변

1

로그인하려는 사용자에게 해당 호스트 (이 경우 10.254.237.42)에서 연결할 수있는 권한이 없습니다. 이를 사용자의 유효한 호스트로 추가해야합니다 (<user>).

이를 수정하고 MySQL의 시스템에서 실행 :

입니다
GRANT ALL PRIVILEGES ON *.* TO ‘USERNAME’@‘IP’ IDENTIFIED BY ‘PASSWORD’; 

, 당신은 사용자에게 모든 priviliges을 부여 할 수는 없습니다. 특정 데이터베이스에서 SELECT, INSERT, UPDATE, DELETE 등으로 제한하십시오 ...

IDENTIFIED BY 부분을 생략 할 수 있습니다. 이 오류가 표시되면 사용자가 로그인 할 때 FLUSH PRIVILEGES을 실행하는 데 필요한 명령을 수행 한

.

+0

누군가가 권한을 올바르게 설정하지 않았습니다 (나는 맹세했습니다.) :) 이걸로 해결했습니다. – Ponsjuh

+0

항상 다른 사람 : D – fredrik

1

가장 일반적인 이유는 더 이상하고 사실이 아니다 <user>@localhost에 할당 된 권한을 가지고있다 <user>@10.254.237.42에게 동일한 권한을 부여해야합니다.

관련 문제