如何正确登录到mySQL

问题描述:

这是一个初学mySQL问题。如何正确登录到mySQL

我在看一些关于mySQL和C#登录表单的文章和youtubes。当我注意到每个解决方案和文章都使用以“root”帐户执行登录的表单开始,然后在数据库内的用户密码表中进行检查时。

例如下面的代码确实是:

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(); 
    } 
} 

我觉得root密码不应该在客户端代码。

我还想知道这样的用户密码表是否可以赋予权限。
因此,用户用户X被允许添加表格Z的某个字段,但不允许添加到表格Y.

那么这是否真的是登录应该看起来像?

如果您正在构建客户端应用程序,我建议您通过API调用来检索信息。

如果不查看我以前的回答here了解我如何直接连接到数据库。确保您使用Parameters来防止SQL注入。

+0

我很担心上面的代码给出了它的连接字符串。它是一个具有'内部'用户表的数据库,但它使用mySQL服务器的root帐户进行日志记录,我发现它出现在很多示例中,但我想不通过root登录,但只能在特定数据库表中登录 – user3800527

+0

您永远不想构建直接连接到数据库的客户端应用程序。如果你想访问数据库,你应该总是把客户端和服务器端分开。您可以在您的服务器上构建一个单独的应用程序来处理这些调用,或者构建一个网站并通过API运行数据。 –