mysql - 我在 Windows 10 上运行 mysql,如何从 WSL 连接到其端口

标签 mysql sockets xampp windows-subsystem-for-linux

当 XAMPP mysql 服务器位于“localhost”时,

mysql (有充分的理由)会非常努力地尝试连接到套接字文件。但是,由于 Win64 mysqld 当然不会在 Windows Subsystem for Linux 文件系统中删除套接字文件,因此它无法通过套接字文件进行连接。如何强制它使用该端口?

$ mysql --port=3306 -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directo
ry")

Nmap 显示端口 3306 可以访问。

$ nmap localhost -p 3306

Starting Nmap 7.60 ( https://nmap.org ) at 2019-04-25 09:58 DST
Problem binding to interface , errno: 92
socket_bindtodevice: Protocol not available
Problem binding to interface , errno: 92
socket_bindtodevice: Protocol not available
Problem binding to interface , errno: 92
socket_bindtodevice: Protocol not available
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0019s latency).

PORT     STATE SERVICE
3306/tcp open  mysql

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

如果不需要,我宁愿不将 mysqld 绑定(bind)到我的外部网络。

我如何告诉mysql软件,“我知道你在想什么,但是请使用端口3306,而不是socket”?我最好也想知道如何向 PHP 传达同样的信息。

最佳答案

已解决,需要添加--protocol=TCP。示例:

$ mysql --protocol=TCP -p
Enter password:
ERROR 1045 (28000): Access denied for user 'henk'@'localhost' (using password: YES)

现在这只是我这边的用户/密码问题。

我将编辑 /etc/mysql/mariadb.conf.d/50-client.cnf/etc/php/7.2/cli/php.ini 的设置 一旦我弄清楚需要什么设置。

编辑:

sudo vim/etc/mysql/mariadb.conf.d/50-client.cnf,在[client]下用注释掉套接字行#,添加一行 protocol = TCP。该文件的路径可能与实际的 Oracle MySQL 安装不同,而不是 MariaDB。

[mysql]
# socket = 3306
protocol = TCP

如果您连接到 127.0.0.1 而不是 localhost,PHP 的 pdo_mysql/mysqli/mysqlnd 将使用 TCP 协议(protocol),这适用于 localhost 套接字文件/命名管道启发式。

关于mysql - 我在 Windows 10 上运行 mysql,如何从 WSL 连接到其端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55844651/

相关文章:

java - 安卓应用程序: read data then send to database : check if data matches

c - socket.h 的 recv() 上的段错误

php - 如何在 web 服务器下的 Windows 平台上通过 PHP 进行 gpg 加密?

php - 如何在 xampp 服务器上运行 Angular 应用程序?

mysql - 如何在mysql中加入来自同一个表的两个选择

sql - 不是独立地连接多个表,而是使用单独的查询?

php - mysql:未知选项 '--includedir/etc/mysql/mariadb.conf.d/'

java - websocket 双向概念如何工作?

c# - 无法连续发送三个或更多数据包

php - 当我运行此示例时,浏览器上显示意外的奇怪代码