2017-09-21 8 views
0

이것은 초보자 용 mySQL 질문입니다.mySQL에 올바르게 로그온하는 방법

저는 몇 가지 기사와 youtubes, mySQL 및 C# 로그인 양식에 대해 살펴 보았습니다. 각 솔루션과 기사는 "루트"계정으로 로그인을 수행 한 다음 데이터베이스 내부의 사용자 - 비밀번호 테이블을 확인하는 양식으로 시작한다는 점에 유의하십시오.

public partial class Login_Form_2 : Form 
{ 
    public Login_Form_2() 
    { 
     InitializeComponent(); 
    } 

    //Root level login ?? 
    MySqlConnection connection = new MySqlConnection(
    "datasource=localhost;port=3310;Initial Catalog='test';username=root;password=" 
    ); 

    MySqlDataAdapter adapter; 
    DataTable table = new DataTable(); 

    private void BTN_Login_Click(object sender, EventArgs e) 
    { 
     adapter = new MySqlDataAdapter("SELECT `username`, `password` FROM `users` WHERE `username` = '" + textBox_username.Text + "' AND `password` = '" + textBox_password.Text + "'", connection); 
     adapter.Fill(table); 

     if(table.Rows.Count <= 0) 
     { 
      panel1.Height = 0; 
      label_Message.ForeColor = Color.Red; 
      label_Message.Text = "Username Or Password Are Invalid"; 
      timer1.Start(); 
     } 
     else 
     { 
      panel1.Height = 0; 
      label_Message.ForeColor = Color.Green; 
      label_Message.Text = "Login Successfully"; 
      timer1.Start(); 
     } 
     table.Clear(); 
    } 
} 

내가 루트 암호가 클라이언트 측 코드에 있지한다고 생각 :

예를 들어 아래의 코드는 않습니다.

그리고 나는 그러한 사용자 암호 테이블이 권한 할당 가능한지 궁금합니다.
그래서 사용자 X는 테이블 Z의 특정 필드를 추가 할 수 있지만 테이블 Y는 추가 할 수 없습니다.

이렇게 로그인하면 어떻게 될까요?

답변

0

클라이언트 측 응용 프로그램을 만드는 경우 API 호출을 통해 정보를 검색하는 것이 좋습니다.

내 이전 답변 here을 확인하지 않은 경우 데이터베이스에 직접 연결하는 방법에 대해 알아보십시오. SQL 삽입을 방지하려면 Parameters을 사용해야합니다.

+0

위의 예제 코드에서 연결 문자열에 대해 신경을 쓰고 있습니다. '내부'사용자 테이블이있는 데이터베이스이지만 mySQL 서버의 루트 계정을 사용하여 로그합니다. 예를 들어 많이 보았지만 루트가 아니라 특정 데이터베이스 테이블의 사용자 만 로그온하고 싶습니다. – user3800527

+0

데이터베이스에 직접 연결하는 클라이언트 측 응용 프로그램을 빌드하고 싶지는 않습니다. 데이터베이스에 액세스하려면 항상 클라이언트 측과 서버 측을 분리해야합니다. 서버에서 호출을 처리하거나 웹 사이트를 구축하고 API를 통해 데이터를 실행하기 위해 별도의 응용 프로그램을 작성할 수 있습니다. –

관련 문제