【问题标题】:I am unable to use MySQL due to a "refused connection"由于“拒绝连接”,我无法使用 MySQL
【发布时间】:2014-05-25 14:57:51
【问题描述】:

我正在尝试在我的机器上位于 C:/mysql/ 的 Windows XP 上运行免安装版本的 MySQL。

当我尝试连接 MySQL 时,我在 PHP 文件中收到错误消息。

无法连接:由于目标机器主动拒绝,无法建立连接

我已经编辑了配置文件 my.ini 并更改/添加了以下内容。

[client]
port        = 3306
socket      = C:/mysql/tmp/mysql.sock

[mysqld]
port        = 3306
socket      = C:/mysql/tmp/mysql.sock
basedir = C:/mysql/
datadir = C:/mysql/data/
bind-address = 127.0.0.1
skip-networking
enable-named-pipe

当我运行 mysqld.exe 时,我可以确认它正在命令提示符任务列表中运行。 但是,当我尝试 cmd netstat -a 时,我在 3306 处看不到任何端口使用情况。

在 MySQL 错误日志中,它会读取。

140411 13:30:34 [注意] c:\mysql\bin\mysqld.exe:准备连接。 版本:'5.5.37-log' 套接字:'' 端口:0 MySQL 社区服务器(GPL)

端口:0 在我看来不正确,但我不确定。

当我在 cmd 中直接运行 mysql.exe 时,会返回以下内容

ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

有些事情我已经尝试过了。

  • my.ini 的副本放在 C:/WINDOWS 中,并将副本放在 C:/mysql 中
  • bind-address = 127.0.0.1 更改为 bind-address = 本地主机
  • 在 PHP 文件 MySQL 连接变体中,localhost127.0.0.1127.0.0.1:3306 在基本 mysql_connect() 中
  • 已创建 tmp/mysql.sock 文件(以防 dir + 文件不存在问题)
  • my.ini 中注释掉 skip-networking
  • 在运行 mysqld.exe 的同时在 cmd 中运行 mysqladmin.exe 后返回“无法连接到位于 'localhost' 的 MySQL 服务器”
  • 运行 telnet localhost 3306 返回 'Connecting To localhost...无法在端口 3306 上打开与主机的连接:C 连接失败'
  • 注释掉 my.ini 中的 bind-address 以允许默认设置。
  • 使用 root 用户 (-u root) 运行 mysqld.exe,同时在 my.ini 中插入 user = root
  • 将 Windows 防火墙设置为关闭。

提前致谢。

【问题讨论】:

  • 你用什么命令连接?如果你连接到 127.0.0.1 而不是 localhost,它将使用 TCP 而不是套接字,但是你有 skip-networking 所以它会失败。
  • 你的 PHP 代码是什么样的?您可能有错误的连接字符串。
  • @Michael Berkowski 和 user2254180 我已经更新了我尝试过的列表,我应该最初包括这些,因为我已经尝试了许多 php mysql 连接变体。
  • @cecilli0n 你读过这个MySQL documentation。命名管道仅适用于 mysqld-nt 并且您正在运行 mysqld。您需要命名管道来跳过网络
  • 确保您可以从控制台连接,即mysql -h localhost dbname

标签: php mysql


【解决方案1】:

好的。您已将您的服务器绑定到特定 IP,因此请阅读此MySQL bind-addres。请取消绑定您的服务器并检查您是否有正确的用户。 (文档中的最后一段)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-25
    • 2013-07-06
    • 2019-02-04
    • 2011-12-31
    • 1970-01-01
    • 2012-09-19
    • 2013-05-18
    相关资源
    最近更新 更多