MySQL无法连接到远程服务器

uelo1irk  于 2023-10-15  发布在  Mysql
关注(0)|答案(7)|浏览(135)

我们在一个远程虚拟机(Windows Server 2008)中有一个MySQL服务器。直到昨天,我们才能够连接到MySQL服务器,在我们本地机器上安装的工作台的帮助下。
昨天重新启动了安装了虚拟机的机器。在此之后,我们无法连接到MYSQL。但我可以ping和远程连接这个特定的虚拟机。我甚至可以在安装在VM中的工作台内执行查询。
我不太擅长网络或安全相关的东西。请帮我解决这个问题。
错误代码:
您的连接尝试失败为用户'根'从您的主机到服务器在ABC:3306:无法连接到MySQL服务器上'ABC'(10060)

cmssoen2

cmssoen21#

实际上,这可能是一个可能的原因,希望这是一个开始:

检查基础网络

在MySQL虚拟机中打开一个命令提示符并输入IPCONFIG /ALL。这将显示绑定到不同网络适配器的所有IP地址。
检查您连接到的IP地址是否在那里列出,虚拟机可能已经从DHCP获得了新的IP,而不是在重新启动后拥有静态IP。

主机名与IP

您应该检查主机名解析,从您引用的错误中,它会建议您连接到主机名而不是服务器IP。检查您的机器可以使用正确的IP地址解析主机名-也可以在连接字符串中将主机名更改为服务器的实际IP。

MySQL配置文件

你说你在Windows上运行MySQL,习惯上把my.cnf重命名为my.ini。MySQL 4.1.5之前的旧版本的配置文件通常存储在c:\my.inic:\windows\my.ini中。对于之后的版本,默认位置是安装目录,通常是%PROGRAMDATA%\MySQL\MySQL Server xxx
找到配置文件后,请在记事本(或类似的文本编辑器)上打开它,找到[mysqld]部分,并确保port=是您尝试连接的端口,bind-address=是您尝试连接的IP地址。

服务器端口

从MySQL虚拟服务器打开一个命令提示符并键入netstat –ano,这将显示进程列表以及它们正在侦听的IP/端口。MySQL服务器应该在这里列出,并且应该监听配置文件定义的相同端口和IP。

Windows防火墙

你应该有一个防火墙规则来允许MySQL,下面将在默认端口3306上添加一个

netsh advfirewall firewall add rule name="MySQL Server" action=allow protocol=TCP dir=in localport=3306

确定这是否是特定于计算机的

您可以在另一个工作站上设置MySQL MySQL MySQL应用程序,并尝试连接以确定这是一个全局问题还是仅与您的特定工作站相关的问题。

mzsu5hc0

mzsu5hc02#

mysql数据库管理员应该允许远程连接到mysql服务器。在我的.cnf中更改:

bind-address    = 127.0.0.1 # this should be your mysql server ip

并评论这一点:

# skip-networking
z9smfwbn

z9smfwbn3#

很可能您的配置是为已更改的IP设置的。默认情况下,mysql不允许你从远程主机连接,除非你显式地给予特定用户对特定模式或一组模式的权限,例如,如果你做了这样的事情:

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

也许你实际上做的是将授权设置到你自己的IP地址上,这是你本地机器的地址,如果你的本地机器(不是远程服务器)已经改变了它的IP地址,那么mysql将不会让你连接,除非你有“1.2.3.4“IP地址,如果你有一个动态IP地址(常见于DSL/电缆连接),显然你不再有了。
因此,通过SSH或SSL或任何您使用的连接到Windows服务器,并以root身份进入mysql并执行以下操作:

SELECT * from information_schema.user_privileges;

这将显示所有用户的赠款以及如何允许他们连接。如果你没有看到你的本地IP地址或一个IP地址(这将允许你从任何远程机器连接到服务器),那么你必须这样设置:

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

其中,USERNAME当然是您的用户。在on后面有一个“/ dot /”,这意味着你希望该用户能够从任何网络的任何用户连接到任何模式(数据库,对于mysql)。但我建议您只为需要连接到的特定模式的用户执行授权。
然后,如果你确实有正确的信息,但仍然无法连接,请使用像nmap这样的portscanner或类似的东西来进行端口扫描,看看mysql是否:
1.打开并监听外部网络
1.在您实际想要连接的端口上运行
如果1为真,则检查2,因为端口可能配置错误。但是,如果这两点中的任何一点确实起作用,那么它听起来绝对不像网络配置,而是用户设置或其他东西。

gev0vcfq

gev0vcfq4#

GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';

这个命令应该对所有用户都有帮助@Gustavo鲁比奥已经给出了适当的解释。
要确保哪些端口是打开的,请在虚拟机中运行cmd并键入。

netstat -a

TCP    127.0.0.1:3360     Hostname:3360   LISTENING

my.cnf位于Mysql-install-path\MySQL\MySQL Server xxx,请确保在更改之前备份原始文件
Can't connect to [local] MySQL server
Testing The MySQL Server Installation on Microsoft Windows
MySQL Workbench: Manage MySQL on Windows Servers the Windows way

mzsu5hc0

mzsu5hc05#

第一次你需要测试并确保你到mysql的连接没有被防火墙阻止。
要在群集中的每台主机上禁用防火墙,请在每台主机上执行以下步骤。

1.保存已有的iptables规则集。

iptables-save > /root/firewall.rules

2.关闭iptables。

对于RHEL、CentOS、Oracle和Debian:

chkconfig iptables off

/etc/init.d/iptables stop

对于SLES:

chkconfig SuSEfirewall2_setup off

rcSuSEfirewall2 stop

对于Ubuntu:

service ufw stop

https://www.cloudera.com/documentation/enterprise/5-7-x/topics/install_cdh_disable_iptables.html

yvt65v4c

yvt65v4c6#

这取决于您的设置,但如果您使用的是cPanel,只需转到RemoteMYSQL并输入您的主机。你也可以使用一个按钮。下面为我工作时,我得到的错误
“无法以用户”“的身份连接到DB服务器”“。端口:不允许主机''连接到此MySQL服务器”

9udxz4iz

9udxz4iz7#

在MySQL v5.6上可能就是这种情况。当另一台服务器通过通告其主机名而不是IP地址进行通信时,解析可能会失败(例如,因为您的用户使用IP地址而不是主机名)。
因此,您需要禁用以下内容,

skip-host-cache
skip-name-resolve

或者使用适当的主机名(而不是IP地址)创建用户。您可能会在建立到远程MySQL的连接时找到主机名。

相关问题