2014-04-04 3 views
0

나는 이것을 정말로 이해할 수 없다. 특정 사용자의 경우 컴퓨터 B에서 컴퓨터 A의 MySQL DB에 연결할 수 있지만 컴퓨터 A에서 로컬로 연결할 수 없거나 PHP에서 연결할 수 없습니다. PHP에서 MySQL에 연결할 수 없지만 원격 시스템에서 연결할 수 있습니까?

는 그럼 난 사용자 MYTEST을 만들어이 시스템 A에 DB를 MYTEST을 작성, 설명 및 MYTEST에 모든 권한을 부여하려면 : 나는 어떤없이 어디서나 연결할 수있는 루트, 이러한했다
GRANT ALL PRIVILEGES ON MYTEST.* TO 'MYTEST'@'%' IDENTIFIED BY 'mypass'; 
FLUSH PRIVILEGES; 

문제. 결과 :
[email protected]*-*-2-153:~$ mysql -u MYTEST -p -h *.*.*.174 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 84 
Server version: 5.5.32-0ubuntu7 (Ubuntu) 

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> 

다음은 모두 좋아 보이는 : enter image description here

는 그럼, 다른 기계, 기계 B에서 연결을 시도합니다. 지금은 다시 시스템 A에 가서 이렇게 :

[email protected]:~# mysql -u MYTEST -p 
Enter password: 
ERROR 1045 (28000): Access denied for user 'MYTEST'@'localhost' (using password: 
YES) 
[email protected]:~# 

내가 루트로 연결할 수있어 반면 :

[email protected]:~# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 

가 궁극적으로 내가 PHP에서 연결해야합니다. 그 중 하나가 작동하지 않습니다

php > $con = mysqli_connect('128.199.253.174', 'root', 'somepasswordhere'); 
php > 

는 그때 적극적으로 뭔가를 시도 :

php > $con = mysqli_connect('128.199.253.174', 'MYTEST', 'mypass'); 
PHP Warning: mysqli_connect(): (28000/1045): Access denied for user 'MYTEST'@'w 
angboyang.com' (using password: YES) in php shell code on line 1 

내가 뿌리를 사용해야합니다. MYTEST에 모든 권한을 부여했지만 모든 결과는 동일하게 유지되었습니다. 누구든지 아이디어가 있으십니까? 정말 고맙겠습니다.

참고 :

  1. 나는 암호가 올바른지 확신합니다. 이를 확인하기 위해 루트와 동일한 비밀번호를 사용하고 해시 값을 동일하게 비교했습니다. 루트를 사용하여 연결할 수 있습니다. 암호가 맞습니다.

  2. 두 기계 우분투 13.10.

  3. 나는이 모든 단계들 사이에서 mysql 서버를 재시작했지만 아무런 효과가 없었습니다.

+0

내 호스팅 회사는 특정 ip addy 만 데이터베이스에 연결할 수 있도록 허용합니다. 들어가서 목록에 추가해야합니다. 어쩌면 너와 똑같을거야. – pathfinder

답변

0

나는이 문제를 해결할 수 있었지만 나는 그 이유를 정말로 알지 못한다.

문제는 와일드 카드 '%'인 것 같습니다. 모든 IP 도메인에서 사용자 연결을 대체 할 수 있어야합니다.

그러나 'localhost'및 'mydomain.com'의 경우에는 작동하지 않습니다. 내 생각에 '%'는 IP에만 일치하거나 동작은 doc 또는 config 파일의 어딘가에 지정됩니다.

해결하려면 사용자 'MYTEST'@ 'localhost'및 'MYTEST'@'domainname.com'을 작성하십시오.

관련 문제