博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#中mysql远程连接方法及实例
阅读量:4303 次
发布时间:2019-05-27

本文共 3737 字,大约阅读时间需要 12 分钟。

#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);                                   MySqlCommand cmd = new MySqlCommand("select * from MyTable", conn);            //执行命令--读取数据            MySqlDataReader reader = cmd.ExecuteReader();            DataTable dt = new DataTable();            if (reader.HasRows)            {                //读取MySqlDataReader里的内容                             }                       cmd.Dispose();                       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;

转载地址:http://ejlws.baihongyu.com/

你可能感兴趣的文章
期货市场技术分析05_交易量和持仓兴趣
查看>>
TB交易开拓者入门教程
查看>>
TB创建公式应用dll失败 请检查用户权限,终极解决方案
查看>>
python绘制k线图(蜡烛图)报错 No module named 'matplotlib.finance
查看>>
talib均线大全
查看>>
期货市场技术分析06_长期图表和商品指数
查看>>
期货市场技术分析07_摆动指数和相反意见理论
查看>>
满屏的指标?删了吧,手把手教你裸 K 交易!
查看>>
不吹不黑 | 聊聊为什么要用99%精度的数据回测
查看>>
X 分钟速成 Python
查看>>
对于模拟交易所引发的思考
查看>>
高频交易的几种策略
查看>>
量化策略回测TRIXKDJ
查看>>
量化策略回测唐安奇通道
查看>>
CTA策略如何过滤部分震荡行情?
查看>>
量化策略回测DualThrust
查看>>
量化策略回测BoolC
查看>>
量化策略回测DCCV2
查看>>
mongodb查询优化
查看>>
五步git操作搞定Github中fork的项目与原作者同步
查看>>