Answers:
这里有人建议这可能是防火墙问题:
我刚遇到这个问题,发现它是我的防火墙。我使用PCTools Firewall Plus,但不允许完全访问MySQL。一旦我改变,那很好。希望有帮助。
可以吗?
而且这里有人暗示这可能是因为MySQL服务器绑定到了环回IP(127.0.0.1 / localhost),这实际上使您无法从“外部”进行连接。
如果是这种情况,则需要将脚本上传到Web服务器(该服务器也可能正在运行MySQL服务器),并将服务器主机保持为“ localhost”
打开名为my.cnf的mysql配置文件,并尝试找到“绑定地址”,此处将设置(127.0.0.1 OR localhost)替换为实时服务器IP(在mysql_connect函数中使用的IP)
这肯定会解决问题。
谢谢
127.0.0.1
适当的位置,这样就不可能从其他主机直接访问。这样可以防止远程暴力攻击,并且不会向网络暴露可能的安全问题。如果您的应用程序位于同一台计算机上(这是非常常见的托管设置),请使用127.0.0.1
resp。localhost
作为mysql主机,它将与将服务绑定到您的外部接口并将其用作mysql主机的工作方式相同。如果您的应用程序位于其他地方,请尽可能使用内部网络。
1)允许远程连接到MySQL。编辑文件:
>sudo nano /etc/mysql/my.cnf
评论专栏:
#bind-address = 127.0.0.1
重新启动MySQL:
>sudo service mysql restart
2)创建用于远程连接的用户。
>mysql -uroot -p
CREATE USER 'developer'@'localhost' IDENTIFIED BY 'dev_password';
CREATE USER 'developer'@'%' IDENTIFIED BY 'dev_password';
GRANT ALL ON *.* TO 'developer'@'localhost';
GRANT ALL ON *.* TO 'developer'@'%';
3)就我而言,我需要使用Ubuntu从Windows远程连接到VirtualBox计算机。因此,我需要在iptables中允许端口3306:
>iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
FLUSH PRIVILEGES
创建新用户后记得。
设置新的从属服务器时出现此问题。发现主服务器/etc/hosts.allow
文件中缺少从服务器IP地址。添加了IP地址,它使我可以连接到主服务器。
请注意,我使用hosts.allow
和hosts.deny
控制访问。
我遇到了这个问题,最终成为以前的系统管理员更改了MySQL正在运行的端口。MySQL Workbench试图连接到默认的3306,但是服务器在20300上运行。
从MySQL工作台连接时,我遇到了完全相同的错误。这是我固定的方法。我的/etc/my.cnf配置文件将bind-address值设置为服务器的IP地址。必须执行此操作才能设置复制。无论如何,我通过做两件事解决了它:
例如
CREATE USER 'username'@'bind-address' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON schemaname.* TO 'username'@'bind-address';
FLUSH PRIVILEGES;
该错误表示它没有从预期在其上找到服务器的端口接收到响应。原因包括从联系错误的计算机(出于多种原因之一)到服务器不在预期的端口上。
在/etc/mysql/my.cnf中检查服务器绑定到的端口。这是否与connect语句中的内容相对应。如果它们匹配,则尝试从服务器本身以及运行客户端的计算机的命令行与mysql连接。如果它在一个地方而不是另一个地方工作,则可能是防火墙/路由器配置问题。
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)
,而不是Lost connection to MySQL server
消息。
就我而言,我在hosts.deny中拥有“全部:全部”。更改为全部:通过ssh连接时,PARANOID解决了我的问题
这个问题对我来说很愚蠢。
我曾经在AWS EC2 Ubuntu计算机上遇到相同的问题(暂时在本地安装了MariaDB),所以我尝试进行SSH隧道传输,并遇到了同样的问题。所以我试图通过终端SSH隧道:
ssh -L13306:127.0.0.1:3306 root@ip.address -i my/private/key.pem
它告诉我:
请以用户“ ubuntu”而不是用户“ root”的身份登录。
就像我的ssh配置一样,我将ssh用户从root更改为ubuntu,并且连接正常。
因此,请检查您的SSH连接用户。
我对此进行了监督,所以这也是我半个小时的时间,因此希望对您有用。
对我来说,发现配置文件为“ /etc/mysql/mysql.conf.d/mysqld.cnf”,注释掉绑定地址就可以了。
正如我们在这里看到的: 现在,默认设置是只在本地主机上侦听,而不是跳过网络,本地主机更兼容且安全性也不差。
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
,而不是bind-address = 111.112.113.114
我用bind-address = 127.0.0.1
。SSH隧道设置已按照hostpresto.com/community/tutorials/…上的说明进行设置。谢谢!
遇到同样的问题,来回绑定地址无济于事。对我来说,解决办法是冲洗特权。
mysql> FLUSH PRIVILEGES;
对我来说,设置bind-address = 0.0.0.0
在mysql/my.cnf
工作是可行的。然后,它基本上侦听所有地址(但仍然侦听一个端口)。
并且不要忘记重启服务器: systemctl restart mysql
我遇到了同样的问题。我检查并尝试将AllowTcpForwarding设置为Yes,但是在我的sshd_config中丢失了它,所以没有帮助。我没有更改sshd_config或my.cnf。确保ssh主机名不是与MySQL主机(使用localhost)相同。
在工作台中,选择+添加新连接并设置以下内容:
测试连接。应该会成功,然后点击OK。Viola!
如果您的配置文件中没有bind-address并且mysql托管在AWS实例上,请检查您的安全组。在理想情况下,入站规则应接受来自端口3306的所有连接,出站规则应响应所有有效IP。
我已完成以下3个步骤,然后为我工作。
bind-address = "YOUR MACHINE IP"
在/etc/my.cnf中的my.cnf
文件中
通过命令重新启动服务: service httpd restart
GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YPUR_PASSWORD' WITH GRANT OPTION;
我有一个类似的错误(通过MYSql Workbench在aws上连接到MYSQL)。我以前连接正常,但突然间它停止工作,只是再也无法工作了)。我的连接是通过受密钥文件保护的SSH进行的。
原来我在超时。因此,我将SQL连接超时时间从默认的10秒增加到30秒,很高兴再次尝试。可以尝试的事情(如果您使用的是类似设置)
mysql -u [username] -p [database]
吗?这将检查用户权限问题等。