Я запускаю mysqld на Windows 10, как мне подключиться к его порту из WSL - PullRequest
0 голосов
/ 25 апреля 2019

mysql (по уважительным причинам) очень старается подключиться к файлу сокета, когда сервер XAMPP mysql находится на «localhost». Но поскольку 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 с моей внешней сетью, если мне это не нужно.

Как мне сказать программному обеспечению mysql: «Послушайте, я знаю, что вы думаете, но, пожалуйста, используйте порт 3306, а не сокет»? Желательно, чтобы я тоже знал, как сказать то же самое PHP.

1 Ответ

0 голосов
/ 25 апреля 2019

Разрешил, нужно добавить --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

PHP pdo_mysql / mysqli / mysqlnd будет использовать протокол TCP, если вы подключитесь к 127.0.0.1 вместо localhost,это работает вокруг эвристики файла сокета localhost / named-pipe.

...