【问题标题】:Can't connect to remote mysql database server无法连接到远程mysql数据库服务器
【发布时间】:2014-02-10 08:11:39
【问题描述】:

我无法弄清楚为什么我无法在 VMware 内的 ubuntu 中访问远程 MySQL 服务器。我已经有了代码,它成功地连接到我的本地主机以及插入、删除和更新数据。但是当我使用指定的 IP 服务器地址创建一个新的连接字符串时,它会显示一个错误:

我只能通过 SSH 和浏览器 (192.168.56.xxx/phpmyadmin) 访问该服务器中的文件。

这是我的连接字符串代码。

 Dim conn As New MySqlConnection
 conn.ConnectionString = "Server=192.168.56.xxx;port=3306;User=root;password=mypassword;Database=prodDB_vb"
 conn.Open()
 MessageBox.Show("Connection to Database has been opened.")
 cmd.Connection = conn

我已经阅读了很多关于此的论坛。但不明白他们指的是什么。 我也执行了代码:

  GRANT ALL PRIVILEGES ON prodDB_vb TO 'root@*' IDENTIFIED BY 'my_password';
  FLUSH PRIVILEGE;

我唯一知道的是我在服务器文件中找不到 my.cnf,但已经在我的 localhost 的绑定 IP 地址中更改了 my.ini。

  #bind-address="127.0.0.1" 

3306 正在听

我的 my.cnf 中有这个

为什么会出现这个错误?

请任何人帮忙。

【问题讨论】:

  • 您的密码拼写错误。再检查一遍。您不应该为此使用 root 帐户。

标签: mysql ubuntu virtual-machine vb.net-2010 remote-access


【解决方案1】:

您是否检查以确保 MySQL 确实在侦听 3306?运行 netstat -tlpn 并提供结果。如果您没有看到 3306,那么它可能没有。

在 my.cnf 中,您应该验证 --skip-networking 已被注释掉

[mysqld] 用户 = mysql pid 文件 = /var/run/mysqld/mysqld.pid 套接字 = /var/run/mysqld/mysqld.sock 端口 = 3306 basedir = /usr 数据目录 = /var/lib/mysql tmpdir = /tmp 语言 = /usr/share/mysql/英文 绑定地址 = 65.55.55.2 # 跳过网络

找到您的CNF file

已编辑:

例如,如果您的 MySQL 服务器 IP 是 192.162.0.3,那么整个块应该如下所示:

[mysqld] 用户 = mysql pid 文件 = /var/run/mysqld/mysqld.pid 套接字 = /var/run/mysqld/mysqld.sock 端口 = 3306 basedir = /usr 数据目录 = /var/lib/mysql tmpdir = /tmp 语言 = /usr/share/mysql/英文 绑定地址 = 192.168.0.3 # 跳过网络 …… .. ……
  • bind-address : 要绑定的 IP 地址。
  • skip-networking :根本不监听 TCP/IP 连接。与 mysqld 的所有交互都必须通过 Unix 套接字进行。对于只允许本地请求的系统,强烈建议使用此选项。由于您需要允许远程连接,因此应从文件中删除此行或将其置于注释状态。

然后我们必须重新启动mysql服务才能使更改生效:

/etc/init.d/mysql restart

【讨论】:

  • my.cnf 在哪里看?在服务器端还是在本地主机中?我已经在我的本地主机中搜索,我找到了具有 bind-address = "127.0.0.1".. 的 my.ini
  • 你的端口是什么?要找到 cnf 文件,请检查我提供的链接。
  • 在我的 my.ini 中我有 3306 的端口。
  • 你找到cnf了吗??
  • 先生,我很抱歉,但我认为我在这里感到困惑。我在我现在使用的 localhost/pc 中找到了这个 my.ini,它的绑定地址 =“127.0.0.1”。 my.cnf 是否位于我正在远程处理的电脑中?