문제

나는 다음과 같은 오류가:

액세스 거부한 사용자는'아파치는'@'localhost'(를 사용하여 암호:NO)

사용하는 경우 다음과 같은 코드:

<?php

include("../includes/connect.php");

$query = "SELECT * from story";

$result = mysql_query($query) or die(mysql_error());

echo "<h1>Delete Story</h1>";

if (mysql_num_rows($result) > 0) {
    while($row = mysql_fetch_row($result)){
          echo '<b>'.$row[1].'</b><span align="right"><a href="../process/delete_story.php?id='.$row[0].'">Delete</a></span>';
      echo '<br /><i>'.$row[2].'</i>';
    }
}
else {
   echo "No stories available.";
}
?>

connect.php 파일에 포함된 내 MySQL 연결하는 호출을 자동으로 나 INSERT 쿼리의 다른 부분에서 소프트웨어입니다.면 나는 주석으로 $result = mysql_query 라인,그리를 통해 다른 문입니다.그래서,그것은 라인 또는 콘텐츠는 경우.

나이 검색되었습니다 그물에 대한 모든 솔루션,그리고 대부분의 것과 관련이 너무 많은 MySQL 연결 또는 사용자가 나는 로그인한 소프트웨어 있지 않은 권한이 있습니다.전 검사를 모두.나는 여전히 수행할 수 있는 나른 쿼리의 다른 곳에서 소프트웨어,그리고 내가 처리하고 있음이 확인되 계정이 올바른 권한이 있습니다.

도움이 되었습니까?

해결책

면 그것은 문제 모두에,아파치@localhost 지 않은 사용자 계정의 이름을 내가 사용하는을 얻으로 데이터베이스입니다.난 어떤 사용자 계정과 함께 이름에서 아파치에서 그들 모두는 문제입니다.

면 그것은 말'apache@localhost'사용자 이름을 못하고 제대로 전달되 MySQL 연결합니다.'아파치는'정상적으로 실행하는 사용자가 아파치 프로세스(적어도에 Redhat-기반 시스템)와 없는 경우 사용자 이름이 전달하는 동안 연결 MySQL 사용하는 누구에게나 전화를 연결합니다.

당신이 경우에의 연결 오른쪽에서 스크립트,하지라는 파일에,당신은 당신 같은 오류가?

다른 팁

경(포함)에 필요(). 면"connect.php"파일이 될 수 없습니 require()d,스크립트를 실패할 것이다 와 치명적인 오류가는 반면, 포함한다()만 경고를 생성합니다.사용자 이름을 전달하 mysql_connect()지 않"apache",잘못된 경로를 연결하는 스크립트가 가장 일반적 방법의 이 유형에 오류가 있습니다.

을 확인하는 것을 잊지 마세요 당신의 데이터베이스에 오류 로그입니다.당신이 볼 수 있어야하는 경우 당신은 당신에게 타격 DB.지 않는 경우,당신은 확인해야의 방화벽에 대한 규칙합니다.리눅스 상자를 실행할 수 있습니다 iptables-L 을 얻는 방화벽 목록 규칙이 있습니다.

그렇지 않으면 그것은 순수한 액세스 문제입니다.은"select*from mysql.사용자"를 보면 아파치 사용자가 설정합니다.더욱,권하고 싶 계정 만들기 위해 특별히 귀하의 프로 사용하여 아파치 이후,다른 응용 프로그램을 만들이 실행으로 아파치는 기본적으로,그리고 얻을 수 있습에 대한 무단 액세스를 당신의 db.

그냥"GRANT"문서에@dev.mysql.com 자세한 정보를 얻을 수있.많은 경우 특정 questiosn 에 관한 db 그냥 편집 질문,그리고 내가 살펴볼 것이다.

가 connect.php 스크립트로 연결 또는 그것만 함수를 정의할 필요가 전화 연결을 만들려면?오류는 당신이 얻은 증상의하지 않는 이전에 설립된 연결에서 모두.

ETA:또한 변경을 포함하여 필요합니다.나는 그것을 의심하지 않는 실제로 파일을 포함다.하지만 포함할 수 있는 자동으로 실패합니다.

야 응답이 큰 이런!는 불행하게도 그것은 걸렸을 뿐입니다.당신은 아마 당신과 같은 기능을 dbconnect()를 사용하는 변수에 포함한 파일 연결을 만듭니다.$conn=mysql_connect($dbhost,$다중,$나중에).

이후 이 함수 내에서의 변수를 포함한 파일을 전달해야 하는 기능 또는 다른 기능이 무엇인지 알$dbhost,$다중$나중입니다.이 문제를 해결하는 방법입니다 그 변수는 글로벌 그래서 당신의 기능을 선택할 수 있습니다.다른 솔루션은 매우 안전하는 것을 작성하는 당신을 호스트의 사용자에 전달 mysql_connect 기능입니다.

이지만 나는 같은 문제를 가지고 있었습니다.

는 경우 실제로 삽입할 수 있을 사용하여 동일한 통화 연결,당신의 문제는 대부분에 사용자가"apache"지 않을 선택 사용 권한 데이터베이스에 있습니다.이 있는 경우 phpMyAdmin 을 설치할 수 있는 보에 대한 사용 권한 사용자 권한 창입니다.phpMyAdmin 또한 매우 쉽게 수정할 권한이 있습니다.

는 경우에만 액세스할 수 있습니다 명령 라인,당신은 확인할 수 있는 권한에서 mysql 데이터베이스입니다.

당신은 아마도 뭔가를 해야 합 다음과 같:

부에서 선택한다.가 표시됩니는'아파치는'@'localhost';

당신은 기억을 하:

flush privileges;

는 경우에는 사용자가 설정되지 않음을 줄 것이다'apache'@'localhost'오류가 있습니다.

그냥 확인하려면 사용하는 경우 이 부분에 오류가?

<?php
include("../includes/connect.php");

$query = "SELECT * from story";
$result = mysql_query($query) or die(mysql_error());

그렇다면,당신은 여전히 오류가 발생한 경우 복사 및 붙여넣기를 하나 사람들의 삽입으로 이 페이지,나는지 확인하기 위해 노력하고 그것은 로컬 페이지 또는 실제 라인입니다.

또한,당신은 게시물의 복사본을 연결화(마이너스 암호),지 않는 삽입에 사용하는 정확히 동일한 구문으로 이 예입니다.

그냥 확인하려면 사용하는 경우 이 부분을 얻는 오류?

그렇다면,당신은 여전히 오류가 발생한 경우 복사 및 붙여넣기를 하나 사람들의 삽입이>페이지,나는지 확인하기 위해 노력하고 그것은 로컬 페이지 또는 실제 라인입니다.

또한,당신은 게시물의 복사본을 연결화(마이너스 암호)지 않는 한,인서트>를 사용하여 정확히 동일한 구문으로 이 예입니다.

여기에 무엇입니까 connection.php 파일입니다.내가 연결을 통해 파일에 포함 같은 패션으로 어디를 실행하 삽입 쿼리의 다른 곳에서 코드입니다.

$conn = mysql_connect("localhost", ******, ******) or die("Could not connect");
mysql_select_db("adbay_com_-_cms") or die("Could not select database");

하려면 시간이 좀 걸릴 것입니다 작업을 삽입 쿼리에이 지역을 확인합니다.

으로 다른 사람에게 게시물에 대한 암호 액세스입니다.나가서에 명시된 바와 같이 나의 첫번째 게시 확인 권한이 있습니다.내가 사용하는 phpMyAdmin 는지 확인하는 권한에 대해 사용자 계정을 사용하여 정확했다.면 그것은 문제 모두에,아파치@localhost 지 않은 사용자 계정의 이름을 내가 사용하는을 얻으로 데이터베이스입니다.난 어떤 사용자 계정과 함께 이름에서 아파치에서 그들 모두는 문제입니다.

중 하나를 수행할 수 있습니다 다음과 같다:

  • 사용자를 추가하"apache"및 설치는 그 권한에서 phpmyadmin 을 사용하거나 mysql 에는 셸
  • 말 php 실행 mysql_connect 다른 사용자로,사람이 이미 있는 권한이 필요(그러나 어쩌면 뿌리)에 대한 mysql.default_user in php.ini 파일에 있습니다.

은 아파치 사용자가 암호를 요구하는 데이터베이스에 연결?그렇다면,사실 그것이 말하는"암호를 사용하여:NO"이어질 것을 믿고 나는 코드는 연결을 시도하지 않고 암호를 입력합니다.

는 경우,그러나,아파치 사용자 비밀번호가 필요하지 않아서,더블 체크의 권한 있는 좋은 아이디어(는 당신이 언급한 이미 확인).그것은 여전히 유익한 시도를 실행하는 뭔가가 다음과 같이 mysql 프롬프트에서:

GRANT ALL PRIVILEGES ON `*databasename*`.* to 'apache'@'localhost';

는 구문을 사용해야 합니다.

다른 것보다,난황으로 당신이 있습니다.

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