我有一个 vb.net 桌面应用程序..我需要在我的网站上向数据库插入一些数据。当尝试添加数据时,我收到此错误:“无法连接到任何指定的 MySQL 主机”
当我尝试从其他网站共享其他 IP 时,它可以工作。但这不适用于我的网站。
我检查过了https://www.yougetsignal.com/tools/open-ports/它告诉我“我的 IP 地址”上的 3306 端口已关闭
这是我的连接字符串:
服务器=我的网站 IP;端口=3306;数据库=数据库名称;Uid=用户名;Pwd=密码;
你能帮我吗?谢谢。
答案1
正如@pmdba 提到的,将数据库开放到互联网是一个非常糟糕的主意。
由于您没有提到您使用的是哪个 GNU/Linux 发行版以及您是否使用 MySQL 或 MariaDB,因此我在这里概括一下:
- 通过在 my.cnf 中设置以下参数来配置您的 MySQL/MariaDB 服务器以监听您的 IP 地址:对于服务器上的所有 IP 接口,bind-address=IP_address 或 bind-address=0.0.0.0。
- 重新启动数据库服务器
- 确保您的防火墙允许连接到 tcp/3306。有效的命令是:iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
查看发行版文档,了解如何在防火墙中正确添加 tcp/3306 规则。4. 确保允许数据库用户远程连接。一个通用的命令是:授予所有 IP 的“用户名”@“%”对数据库的所有权限。* 或授予“用户名”@“DesktopIP”对数据库的所有权限。* 以仅启用桌面应用程序 IP 地址的访问。
答案2
/etc/mysql/mysql.conf.d/mysqld.cnf必须有本地主机绑定地址注释掉如下内容:
#bind-address = 127.0.0.1
创建并授予从计算机连接的用户 root 的权限192.168.0.2例如:
mysql -u root -p
Enter password: <enter password>
mysql>CREATE USER 'root'@'192.168.0.2' IDENTIFIED BY 'root';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.2';
mysql>FLUSH PRIVILEGES;
mysql>exit