如何在终端PC中连接其他MySQL?

时间:2014-11-08 14:22:58

标签: php mysql mamp

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

...它连接到MAMP实例。

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

我该怎么做才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

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

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

mysql -uUSER -pPASSWORD -P3307

会将您连接到错误的 3306实例,因为它将使用默认套接字而不是使用端口。它可能看起来像是来自mysql客户端的疏忽,但socket在这种情况下具有优先级(即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中找到。