【问题标题】:How to connect other MySQL in terminal PC?如何在终端PC连接其他MySQL?
【发布时间】:2014-11-08 22:44:56
【问题描述】:

我的 mac 有一些问题。问题之一是安装了两个 MySQL 实例。第一个 mysql 在 localhost 执行,第二个在 MAMP 执行。因此,当我尝试使用 php 连接 mysql 时:

...它连接到 MAMP 实例。

当我尝试使用终端连接到 MySQL 时,它已连接到 localhost 实例。所以我不能做我想做的事......当我创建一个名为'dbname'的数据库并尝试从我的html连接到它时,它会生成一个错误:mysqli_connect(): (42000/1049): Unknown database'dbname '

我应该怎么做才能让它工作?

【问题讨论】:

  • 向我们展示你的命令
  • 用 PHP 连接到您的本地主机或使用 mysql 客户端连接到 MAMP 服务器?

标签: php mysql mamp


【解决方案1】:

当您连接到本地主机时,默认情况下它不尝试使用 TCP/IP 来提供连接,而是使用 UNIX-socket 代替 - 如果您的连接没有严格说明,则必须使用 TCP/IP。这意味着,例如,如果您在 localhost 的不同端口上有两个 mysqld 实例,那么仅指定端口是不够的,因为那时 mysql 将尝试连接一个 wring 套接字。

示例:您在 localhost:3306 上拥有一次 mysql 实例,在 localhost:3307 上拥有第二个实例。然后,命令:

mysql -uUSER -pPASSWORD -P3307

会将您连接到错误 3306 实例,因为它将使用默认套接字而不是端口。它可能看起来像是 mysql 客户端的疏忽,但在这种情况下套接字具有优先级(即 localhost)。要解决这个问题,您有两种选择:

第一个选项是直接指定套接字。这可以直接使用-S 参数完成,例如:

mysql -uUSER -pPASSWORD -S/path/to/correct/socket

您可能会在配置文件中看到所需实例的套接字路径。由于您有 Mac,可能您甚至需要创建文件,请参阅this question 了解更多详细信息。

第二个选项是 - 强制 mysql 客户端使用 TCP/IP 连接。为此,您可以在连接选项中明确指定主机 IP 地址:

mysql -uUSER -pPASSWORD -h127.0.0.1 -P3307

那将用于3307 端口。但是,这可能会导致如下错误:

“在'读取初始通信包时丢失与MySQL服务器的连接,系统错误:0”

那么,很可能,这意味着错误配置的实例。然后,您可以将bind-address=127.0.0.1 添加到您的my.cnf 文件中,如果它不存在的话。同样,可以在this question 中找到有关该问题的更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 2018-02-19
    • 2017-10-30
    • 2012-01-09
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 2017-01-28
    相关资源
    最近更新 更多