c# 远程连接局域网数据库方法

发布时间 2023-04-15 11:41:09作者: MR·黑藻

#region 远程数据库连接测试
//需给远程数据库分配所有权限
// cmd命令: grant all privileges on *.* to 'root'@'%' with grant option;
string connStr = "Database=MyDataBase;Data Source=" + "192.168.2.206" + ";port=3306;User Id=root;Password=root;";

MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
MySqlCommand cmd = new MySqlCommand("select * from MyTable", conn);
//执行命令--读取数据
MySqlDataReader reader = cmd.ExecuteReader();
DataTable dt = new DataTable();
if (reader.HasRows)
{
//读取MySqlDataReader里的内容
dt.Load(reader);
}
reader.Close();
cmd.Dispose();
conn.Close();
conn.Dispose();
return;
#endregion
//************************

c# 远程连接数据库方法
1、导入命名空间
using System.Data.SqlClient; //连接SQLServer 数据库专用

2、创建连接
SqlConnection lo_conn = New SqlConnection("Server=服务器名字或IP;Database=数据库名字;uid=用户名;pwd=密码");

3、打开连接,第2步并没有真正连接数据库
lo_conn.Open(); //真正与数据库连接

4、向数据库发送SQL命令要使用SqlCommand:
SqlCommand lo_cmd = new SqlCommand(); //创建命令对象
lo_cmd.CommandText = "这里是SQL语句"; //写SQL语句
lo_cmd.Connection = lo_con; //指定连接对象,即上面创建的

5、处理SQL命令或返回结果集
lo_cmd.ExecuteNonQuery(); //这个仅仅执行SQL命令,不返回结果集,实用于建表、批量更新等不需要返回结果的操作。
SqlDataReader lo_reader = lo_cmd.ExecuteReader();//返回结果集

6、以数据集的方式反回结果集
SqlDataAdapter dbAdapter = new SqlDataAdapter(lo_cmd); //注意与上面的区分开
DataSet ds = new DataSet(); //创建数据集对象
dbAdapter.Fill(ds); //用返回的结果集填充数据集,这个数据集可以被能操作数据的控件DataBind,其它的就自己发挥了吧

7、关闭连接
lo_conn.Close();

//**********************************

C#连接云数据库
1.宝塔面板放行数据库默认3306端口:

2.设置数据库权限-所有人或者指定ip,指定ip需要你本机的ip:

3.操作C#写方法下的连接语句:
连接前导入引用:MySql.Data.dll (顶部有下载链接),不知道怎么导入,可以去我的另一篇博客
在顶部using一下:using MySql.Data.MySqlClient;

代码如下:

using System;
using MySql.Data.MySqlClient;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{

String connetStr = "server=服务器主机ip;port=3306;user=数据库用户名;password=密码;database=数据库名;";

MySqlConnection conn = new MySqlConnection(connetStr);
try
{
conn.Open();//打开通道,建立连接


Console.WriteLine("连接成功!");

//在这里使用代码对数据库进行增删查改


Console.ReadKey(); //让程序运行得到结果不终止
}
catch (MySqlException ex)
{

Console.WriteLine(ex.Message); //有异常,打印错误信息到控制台

}
finally
{
conn.Close();
}
} }
}

//**************远程连接问题解决

mysql Access denied for user 'root'@'localhost' (using password: YES)
【现象说明】

C/S程序远程访问正常,本地访问报以下异常

MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'localhost' (using password: YES) ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Access denied for user 'root'@'localhost' (using password: YES)
配置文件如下:

<add name="RemoteConnString" connectionString="Database='mealbooker';Data Source='localhost';User Id='root';Password='123456';charset='gb2312';pooling=true" providerName="MySql.Data.MySqlClient"/>

【分析】
权限问题吧,查看下mysql数据库中的user表


发现localhost下面值为空,于是connection string中的localhost 改为 127.0.0.1,测试通过~~~
【解决】


配置文件中改为localhost,访问数据库正常;同时mysql command line工具输入密码后一闪而过问题同时解决。

重启之后又访问不了,继续上面的思路修改:

另,mysql command line工具一闪而过,方法参见这里


另一个权限相关问题:

Error Code: 1370 execute command denied to user 'root'@'localhost' for routine

使用grant execute on procedure/function dbname.fname TO 'root'@'localhost';

另一密码相关问题(调试机放几天后就没法远程访问了,root密码被改动,不明原因):

Authentication to host '10.10.123.6' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'10.10.123.5' (using password: YES) ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Access denied for user 'root'@'10.10.123.5' (using password: YES)
修改password语句如下:


然后还要给远程用户非配权限

grant all privileges on *.* to 'root'@'%' with grant option;
————————————————
版权声明:本文为CSDN博主「luckyone906」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011555996/article/details/115640494