我无法从 C# 访问 mysql 数据库

Posted

技术标签:

【中文标题】我无法从 C# 访问 mysql 数据库【英文标题】:i can't access to mysql database from c# 【发布时间】:2013-07-02 17:10:31 【问题描述】:

我有一个网站,在其中 phpmyadmin 创建一个数据库,我想从 c# 连接到它。

我在 Visual Studio 2010 中使用 mysql connector for .NET

我的String Connection 是:

 server=158.58.185.197;database=porbarco_base;uid=****;pwd=****;CharSet=utf8;

但我无法连接到数据库并给出错误:Unable to connect to any of the specified MySQL hosts.

我如何连接到这个数据库。

我在*** 中看到很多线程,但没有解决我的问题。

【问题讨论】:

你可以使用给定的信息从那台机器连接到数据库吗? 那么你可以在你的代码之外的那台机器上作为那个用户连接到它吗? 我可以在我的 php 代码中作为 localhost 连接到数据库。我可以用 C# 连接到我的电脑中的 localhost mysql 【参考方案1】:

可能的问题在于您的 C# 较少,而对 MySQL 的远程访问较多

您需要检查以下内容。

    MySQL 是否在侦听网络地址。检查你的mysql配置文件。查找bind address 的条目。如果它设置为127.0.0.1,那么您只是在本地主机上监听,将其更改为0.0.0.0并记住重新启动服务

    你的 linux 防火墙是否阻止远程访问 mysql 端口。

    您的 mysql 是否允许指定用户从远程主机进行远程访问。见This link for an example of how to set this up

【讨论】:

我无法访问mysql 配置文件和linux firewall。我在网站 navidiranian.ir 有一个帐户,并使用direct admin 来管理数据库和域等。我发现了我的问题并在下面的答案中解释它。 @MohammadRezaVahedi 你的评论没有意义。名称解析与它无关,您直接使用IP地址。不是这样的。很可能是您的主机提供商不支持远程访问 MySQL 数据库,这并不奇怪,因为这是一个很大的安全漏洞。使用 nmap 快速查看一下,该服务器上的端口 3306 未打开。【参考方案2】:

如果您尝试使用 IP 地址直接访问它,则需要打开端口 3306。端口是否开放?如果应用程序与数据库托管在同一台服务器上,那么我建议使用 localhost 而不是 IP 地址来访问它。

【讨论】:

端口 3306 已打开。我的应用程序是 C#,服务器是基于 linux 的。我想远程访问数据库。 尝试在连接字符串中正确指定端口如下:Server=158.58.185.197;Port=3306; 区分大小写吗?试试这个版本:Server=158.58.185.197;Port=3306;Database=porbarco_base;Uid=myUsername;Pwd=myPassword;CharSet=utf8; 我这样做了,结果没有变化。 您的问题是否与此帖子有关:***.com/questions/5915534/…

以上是关于我无法从 C# 访问 mysql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 c#“第 1 行的 SQL 语法错误”将数据从 Ms Access 迁移到 MySQL 工作台

从 C# 连接到 .accdb。 “无法识别的数据库格式”错误

为啥我可以从计算机堆栈c#的末尾访问数据

从 C# 访问 XML 数据

从 C# 代码访问报告

无法从 MyODBC 链接访问 MySQL 8.0 INFORMATION_SCHEMA