2013-07-16 2 views
-1

을 부여하는이 코드를 통해 데이터베이스에 연결하는 JApplet에 있습니다JDBC 연결 : 사용자에 대한 액세스가 거부에도 모든 Previlleges은

String url = "jdbc:mysql://localhost:3306/moodlele_survey"; 
    String user = "moodlele_garanti"; 
    String password = "garanti"; 



    try { 
     panel.add(new JLabel("before driver")); 
     Class.forName("com.mysql.jdbc.Driver"); 
     panel.add(new JLabel("failed")); 
     Connection con = DriverManager.getConnection(url, user, password); 

애플릿에 서명을, 그래서 데이터베이스를 연결할 수있는 권리가 있습니다. 매우 동일한 정보로 PHP를 통해 데이터베이스에 연결할 수 있기 때문에 데이터베이스 사용자에게는 모든 사전 패키지가 부여되며 사용자 이름, 암호 및 데이터베이스 이름이 정확합니다. 어떻게 해결할 수 있습니까?

인쇄 스택 오류는 다음과 같습니다 액세스 사용자 moodlele_garanti '에 대한 @'localhost를 '(암호 사용 : YES) 거부

+0

왜이 것이 다운 되었습니까? –

+0

데이터베이스, 사용자 및 비밀번호에 올바른 텍스트를 사용하고 있습니까? –

+0

@RohitJain IMO upvote 또는 downvote가 필요 없습니다. –

답변

2

을 당신은 정말 당신이 사용하고있는 기술을 파악하는 것, 또는 어떻게하지 않는다 작업. 코멘트에서

당신은 상태 :

My website's client machine is also a localhost for the codes that run inside it uploaded via ftp like the logic in PHP: you write localhost and upload to the server, then it connects

는 PHP는 웹 서버에 를 실행. 그것도 mysql 서버와 같은 호스트가된다. 그래서 예 localhost은 PHP에서 정확합니다. 집에있는 컴퓨터의 웹 브라우저가 TCP를 통해 웹 서버에 연결되고 PHP가 웹 서버에서 실행되며 같은 호스트에있는에있는 mysql 서버에 연결하면 모두 정상입니다.

Java 애플릿은 컴퓨터의 브라우저에서 을 실행합니다.. 애플릿은 웹 사이트에서 가정의 컴퓨터로 다운로드되며 해당 컴퓨터에서 실행됩니다. 귀하의 코드가 귀하의 질문에 쓰여진 방식대로, 은 가정의 컴퓨터에서 mysql 서버에 연결을 시도합니다.. localhost이 컴퓨터입니다.

해당 애플릿을 호스팅 회사의 mysql 서버에 연결하려면 호스트에 연결해야합니다. 또한, mysql 서버에 대한 원격 연결을 허용하기 위해 포트를 열거 나 서버에 열어 둘 필요가 있습니다. mysql은 외부 (공개) IP 주소에서 연결을 수신 대기해야하며 해당 사용자에 대한 권한을 부여해야합니다 원격 호스트에서 연결할 수 있어야합니다.

일반적으로 을 언급 할 가치가 있습니다. 이것은 매우 나쁜 생각입니다. 데이터베이스를 전세계에 알리는 것이 거의 드뭅니다. 액세스 권한을 부여 할 때 작은 실수 하나가 발생하면 매우 큰 문제가 발생합니다. 수많은 다른 보안 문제가 있습니다. 사람들이 그것을합니까? 확실한. 아직도 좋은 생각이 아닙니다.

일반적으로 대중 소비를 위해 설계된 애플릿은 웹 API 또는 RMI와 같은 중개 서비스를 사용하여 작업을 잠글 수있는 싸울 기회를 제공합니다.