Mysql无法远程连接,本地通过sqlyog无法连接
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql无法远程连接,本地通过sqlyog无法连接相关的知识,希望对你有一定的参考价值。
Centos下安装mysql
防火墙关闭了
数据库也授权了
报错2003:Can't connect to MySQL server on 'xxxxxx' (10060)"
用netstat -ln 可以看到,看一下有3306字样的那一行
MySQL 无法连接远程服务器
【中文标题】MySQL 无法连接远程服务器【英文标题】:MySQL unable to connect with remote server 【发布时间】:2014-03-04 20:17:35 【问题描述】:我们在其中一台远程虚拟机(Windows Server 2008)中有一台 MySQL 服务器。直到昨天,在我们本地机器上安装的工作台的帮助下,我们能够连接到 MySQL 服务器。
昨天安装了虚拟机的机器重新启动。之后我们无法连接到 MYSQL。虽然我可以 ping 和远程连接这个特定的虚拟机。我什至可以在安装在 VM 中的工作台中执行查询。
我不太擅长网络或安全相关的东西。请帮我解决这个问题。
错误:
用户“root”从主机到 ABC 的服务器的连接尝试失败:3306:无法连接到“ABC”上的 MySQL 服务器 (10060)
【问题讨论】:
MYSQL 服务是否正在运行?日志中是否有任何错误(事件查看器)? 【参考方案1】:在 MySQL v5.6 上可能是这种情况。 当另一个服务器通过通告其主机名而不是 IP 地址进行通信时,解析可能会失败(例如,因为您的用户使用的是 IP 地址而不是主机名)。
因此,您需要禁用以下功能,
skip-host-cache
skip-name-resolve
或者可以使用适当的主机名(而不是 IP 地址)创建用户。建立与远程 MySQL 的连接时,您可能会找到主机名。
【讨论】:
【参考方案2】:取决于您的设置,但如果您使用的是 cPanel,只需转到 RemoteMYSQL 并输入您的主机。您也可以使用通配符。当我收到错误时,下面对我有用
“无法以用户''身份连接到数据库服务器''。端口:主机''不是 允许连接到这个 MySQL 服务器”
【讨论】:
【参考方案3】:第一次您需要测试并确保您与 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
【讨论】:
【参考方案4】:GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';
这个命令应该对所有用户都有效,@Gustavo Rubio 已经给出了正确的解释。
要确保打开了哪些端口,请在虚拟机中运行 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
【讨论】:
【参考方案5】:您的配置可能是针对已更改的 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 或 Telnet 或任何您使用的 Windows 服务器连接并以 root 身份访问 mysql 并执行以下操作:
SELECT * from information_schema.user_privileges;
这将向您显示所有用户的授权以及允许他们连接的方式。如果您没有看到您的本地 IP 地址或通配符(这将允许您从任何远程计算机连接到服务器),那么您必须像这样设置它:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
其中 USERNAME 当然是您的用户。看到在on之后有一个通配符/点/通配符,这意味着您希望该用户能够从任何网络的任何用户连接到任何模式(数据库,对于mysql)。但我建议您只为您需要连接到的特定架构的用户进行授权。
然后,如果您确实有正确的信息但仍然无法连接,则可以使用nmap 之类的端口扫描器或类似的东西来进行端口扫描,看看 mysql 是否是:
-
打开并监听外网
在您实际想要连接的端口上运行
如果 1 为真,则检查 2,因为可能存在端口配置错误。但是,如果这 2 点中的任何一个确实有效,那么听起来绝对不是网络配置,而是用户设置或其他东西。
【讨论】:
【参考方案6】:真的,这可能是很多可能的原因,希望这是一个开始:
检查基本网络
从 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.ini
或c:\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 Workbench 应用程序并尝试连接以确定这是一个全局问题还是仅与您的特定工作站有关。
【讨论】:
@TBA 4 天无线电静默 - 你设法解决了你的问题吗? 确实解决了 :) 抱歉回复晚了。 port= 有一个不同的端口。谢谢解决了。【参考方案7】:你的数据库的mysql管理员应该允许远程连接到mysql服务器。 在 my.cnf 中更改:
bind-address = 127.0.0.1 # this shoul be your mysql server ip
并对此发表评论:
# skip-networking
【讨论】:
亲爱的 Volkan,我在哪里可以找到这个 my.cnf 如果您使用的是 Debian Linux 文件位于 /etc/mysql/my.cnf 位置。如果您使用的是 Red Hat Linux/Fedora/Centos,Linux 文件位于 /etc/my.cnf 位置。如果您使用的是 FreeBSD,您需要创建一个文件 /var/db/mysql/my.cnf 位置。 我使用的是 Windows Server 2008 R2 那么这可能不是 mysql 问题。我不知道 Windows 如何处理远程连接,但这看起来像是一个网络问题。看看这个,如果这不起作用,那么它肯定是网络问题。 programcreek.com/2009/09/… 并将绑定地址设置为 0.0.0.0。这将确保您的 mysql 接受所有可用接口上的连接,而不仅仅是一个。然后找到你的 mysql 服务器正在监听的端口(默认是 3306)并确保主机不会阻塞它。真正的解决方案还可能取决于您使用的是什么虚拟化,它的安全设置是什么,而您没有指定它们。以上是关于Mysql无法远程连接,本地通过sqlyog无法连接的主要内容,如果未能解决你的问题,请参考以下文章