2011-02-10 2 views
0

PHP 5.3.5 (Apache 모듈로 설치됨) 용으로 작성된 스크립트를 PHP 5.2 환경에서 테스트하려고했습니다. .사용자 'SYSTEM'@ 'localhost'에 대한 액세스가 거부되었습니다 (PHP 5.2.17 + mySQL 5.5.8 + Windows 7)

아파치 2.0.64와 PHP 5.2.17의 새로운 복사본을 설치하고 이전에 PHP 5.3을 구성한 것처럼 정확하게 구성했습니다. (PHP 5.3에는이 파일이 더 이상 없다) 아파치 bin 디렉토리에 복사 libmysql.dll 않았다.

두 서버는 수동으로 구성되며 (XAMPP 버전이 아닌) 로컬로 설치된 동일한 mySQL Server 5.5.8에 액세스합니다. 두 서버 모두 시스템 계정에서 Windows Server로 실행 중입니다.

PHP 5.3 완벽하게 작동, PHP 5.2 반환 오류 :

Warning: mysql_connect() [function.mysql-connect]: Access denied 
for user 'SYSTEM'@'localhost' (using password: NO) in C:\Tools\htdocs\myscript.php on line 33 

[email protected] 아닌 내가 사용 SQL 사용자는 PHP 코드 개미에 하드 코딩되어있다. SYSTEM은 Apache가 실행중인 Windows 계정 인 것 같습니다. (Administrator 계정에서 Apache를 시작하면 메시지가 [email protected]으로 변경됩니다.)

SQL Server에서 기본 사용자 (이름이 '')가 삭제되었습니다. 이 빈 사용자가 존재하면 PHP 5.2는 데이터베이스에 성공적으로 연결되지만 권한 때문에 데이터베이스 선택 (mysql_select_db)에 실패합니다.

+0

당신은 당신이 데이터베이스에 연결하는 데 사용하는 코드를 게재 할 수 있습니까? –

답변

2

php.ini에서에 에서 sql.safe_mode (안 PHP 안전 모드), PHP는 항상 SQL 서버와하지를 연결하는 스크립트 소유자를 사용하는 경우 사용자가 mysql_connect()으로 지정되었습니다.

구성 중에 safe_modesql.safe_mode 속성을 섞어서 6 시간을 소비했습니다!

대답

여기에서 발견되었다 : http://www.php.net/manual/de/ref.mysql.php#72632

0

mysql_connect에 적절한 사용자 이름과 암호를 지정하지 않는 것이 문제입니다. PHP를 기본 사용자로 사용하는 대신 공백으로 두는 대신 GRANT (또는 phpMyAdmin 또는 다른 관리 클라이언트)을 사용하여 MySQL에 추가 된 실제 사용자 이름과 암호를 지정하십시오.

비밀번호없는 인증을 허용하는 것은 거대한 아니오입니다. 비밀 번호없이 관리자 액세스를 허용하는 것은 단순한 무시 무시한 일입니다. 대신 모든 프로그램에 대해 제한된 사용자 계정을 만드십시오. 만 권한있는 계정을 사용하는 경우 절대적으로 필요 ...

관련 문제