문제

PHPMyAdmin과 잘 연결할 수는 있지만 PHP 스크립트로 MySQL에 연결할 수없는 것 같습니다. 나는 비밀번호로 사용자를 만들어 DB에 대한 적절한 권한을 부여했지만 연결할 때마다 접근 거부라고 말하면 죽었다. Windows XP 상자에서 XAMPP를 사용하고 있습니다. 방화벽은 모두 비활성화되어 있으며 사용자 이름 NAD 비밀번호가 올바른지 확인했습니다. 코드는 다음과 같습니다.

$conn=mysql_connect('localhost','westbrookc16','megadots') || die (mysql_error());

사용자 이름은 특정 형식이나 무언가에 있어야합니까?

도움이 되었습니까?

해결책

나는 여기서 문제가 당신이 부여한 호스트라는 직감이 있지만, 그것은 실제로 교육받은 추측 이상이 아닙니다. Access Myuser@'127.0.0.1 '또는 서버 실제 IP 주소를 부여하면 LocalHost를 호스트로 사용하여 연결할 수 없습니다. 이는 "LocalHost"가 호스트로 지정 될 때 PHP가 네트워크 소켓 대신 UNIX 소켓을 사용하려고한다고 가정하며,이 맥락에서 127.0.0.1은 LocalHost와 동일하지 않기 때문입니다.

수동 항목에서 mysql_connect ():

참고 : "LocalHost"또는 "LocalHost : Port"를 서버로 지정할 때마다 MySQL 클라이언트 라이브러리는이를 무시하고 로컬 소켓 (Windows의 파이프)에 연결하려고 시도합니다. TCP/IP를 사용하려면 "LocalHost"대신 "127.0.0.1"을 사용하십시오. MySQL 클라이언트 라이브러리가 잘못된 로컬 소켓에 연결하려는 경우 PHP 구성에서 올바른 경로를 런타임 구성으로 설정하고 서버 필드를 비워 두어야합니다.

이것이 완전히 중복되지 않기를 바랍니다. :)

다른 팁

이전에 MySQL 사용자가 PHP를 통해 로그인하고 다른 하나는 그렇지 않은 곳에서 이것을 보았습니다. 때로는 사용자가 CommandLine에서도 작동하지만 PHP에서는 작동하지 않습니다.

항상 Emil이 둘을 Reffering하는 것이 었습니다. MySQL 사용자는 실제로 사용자/호스트 쌍입니다. 따라서 사용자 megadots@localhost와 user megadots@mycoolhost는 mysql.user 테이블에 두 개의 분리 된 레코드로 나열됩니다.

명령 줄에서 로그인 할 수 있다면이 쿼리를 실행하십시오.

SELECT user, host FROM mysql.user

사용자와 호스트의 전체 목록을 볼 수 있습니다.

작동중인 Phpmyadmin 사용자를 인식하는 경우 사용하려는 호스트 인 호스트 열을보십시오.

호스트가 재설정하려면이 쿼리를 실행하려면 (!이 작업을 조심해야합니다.

update mysql.user set host = 'hostname' 
where user = 'username' and host = 'oldhostname';

flush privileges;

사용자 이름을 가진 레코드와 %가 다른 모든 것보다 우선 순위를 가진 호스트로서의 레코드를보고, 사용자에 대한 여러 레코드가 있고 그 중 하나의 호스트로 %가있는 경우, 호스트와 같이 %의 사용자 이름이 비밀번호가 잘못되어서 username@localhost의 비밀번호를 재설정 한 시간에 관계없이 로그인시 사용자 이름@%와 비교되므로 유효하지 않습니다.

Linux를 사용하는 경우 Synaptic Package Manager를 사용하여 PHP 및 MySQL이 필요한 모든 라이브러리 및 모드를 찾아 다운로드하여 연결할 수 있습니다. 내 문제는 단독으로 실행되는 PHP 스크립트가 서버 측에서 작동했지만 PHP 스크립트를 사용하여 MySQL에 연결하려고 시도했을 때 연결되지 않으면 일반 흰색 페이지 만 볼 수 있습니다. 그런 다음 PHP가 MySQL에 동의하는 데 사용하는 MySQL 클라이언트 라이브러리가 없다는 것을 알았습니다. MySQL 서버 라이브러리 만 가지고있었습니다. 클라이언트 측 라이브러리를 설치하고 Apache 서버를 다시 시작하면 PHP 스크립트에 연결하는 데 아무런 문제가 없었습니다. 기본적으로 PHP 5는 MySQL 클라이언트 측 라이브러리와 함께 설치되지 않습니다.

제 경우에는 사용중인 데이터베이스를 작성하는 데 사용 된 사용자를 삭제했습니다. 일반적으로 이것은 '사용자 지정 된 정의기가 존재하지 않는다'는 오류를 주어야하지만 어떤 이유로 든 단순히 내 PHP 코드에 거부 된 더 일반적인 액세스를 반환하는 것이 었습니다. 명령 줄 및 기타 인터페이스를 통해 왜 로그인 할 수 있는지 잘 모르겠습니다. 내 문제를 해결하기 위해 삭제 된 사용자를 재현했습니다.

이것은 오타이거나 특권을 부여하지 않았습니다. 때로는 이것을 발견하는 것이 놀라 울 정도로 어려울 수 있습니다.

나는 phpmyadmin을 사용하지 말고 사본을 다운로드하는 것이 좋습니다. sqlyog (무료 커뮤니티 에디션은 훌륭합니다) 그리고이를 통해 사용자와 로그인하려고합니다. 문제가 진단되면 스크립트에 사용자 이름/비밀번호를 복사/붙여 넣기.

우연히 Phpmyadmin은 괜찮지 만 SQLYOG와 같은 프로그램은 일반적으로 더 편리하므로 어쨌든 체크 아웃 할 가치가 있습니다. 나는 당신이 변환 될 것이라고 확신합니다. SQLYOG가 당신의 취향에 맞지 않는다면 몇 가지 다른 무료 및 상업적 대안이 있습니다.

그리고 DB에 대한 적절한 권한을 부여했습니다

어떻게? 사용자에게 부여 할 때 어떤 호스트를 사용 했습니까?

이것이 일반적으로 수행되는 방식입니다.

GRANT ALL ON mydb.* TO 'someuser'@'somehost' identified by 'password';
FLUSH privileges;

귀하의 경우 'SomeHost'는 아마도 'localhost'또는 '127.0.0.1'이어야합니다 (다른 게시물 참조).

구문 참조 : http://dev.mysql.com/doc/refman/5.1/en/grant.html

비슷한 문제를 겪은 후 '127.0.0.1'을 'LocalHost'로 대체하는 것이 트릭을 수행했다는 것을 알았습니다 ( 'localhost'를 사용하여 터미널을 통해 성공적으로 연결할 수 있다는 사실에도 불구하고).

나는 같은 문제가 있었지만 '%'(모든 호스트)로 기본 계정에 남겨두면 비밀번호가 없으면 비밀번호와 연결할 수 없다는 것을 알아 냈습니다. 문제가 정확히 무엇인지 확실하지 않지만 해결하면 해결했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top