【问题标题】:Remote MySql Can Connect using Navicat but Not From Another Host远程 MySql 可以使用 Navicat 连接,但不能从其他主机连接
【发布时间】:2017-07-12 01:49:30
【问题描述】:

你好我有一个centos服务器,我已经成功地从windows上的Navicat,android上的remoDB等软件设置了远程连接。但问题是,我无法从其他主机连接到服务器。

这是我的代码示例

<?php
$servername = "******";
$username = "***";
$password = '*****';

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";
?>

我得到的错误是这个

Connection failed: Can't connect to MySQL server on '*****' (111 "Connection refused")

【问题讨论】:

  • 你有没有试过在“密码”之后指定一个“db_name”?

标签: mysql remote-connection


【解决方案1】:

“其他托管”是什么意思?我猜它不是本地主机。 可能你在使用 Navicat 时使用了“over ssh”连接,所以没有被拒绝。

111错误反映“连接被拒绝”,这意味着你的mysqld只监听本地主机。 解决方案:您需要在 my.cnf 文件的 mysqld 部分编辑(或注释)bind-address 值(检查“how to locate my.cnf”?)

  • 将此行评论bind-address = 127.0.0.1#bind-address = 127.0.0.1
  • 然后重启mysql

【讨论】:

  • 您好,谢谢。我没有在 navicat 或 remodb(android 应用程序)中使用 over ssh 连接。我一直在我的服务器上搜索my.cnf文件,我在/etc/my.cnf中只找到了一个并且只有几行,并且没有绑定地址值。
【解决方案2】:

另一个猜测: 尝试指定db_name、port、socket:

  • 确保使用正确的端口:mysqladmin -u {user} -p{pwd} variables | grep port
  • 确保使用正确的套接字:mysqladmin -u {user} -p{pwd} variables | grep sock

  • 然后像这样继续: $conn = new mysqli('localhost', 'my_user', 'my_password', 'my_db’, ‘xxxx’, ‘{path to my socket}/mysql.sock’);

【讨论】:

  • 兄弟也不行,我不知道这里有什么问题。我使用 3306 端口 telnet 到服务器,连接已建立。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
  • 2019-11-07
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多