Привычная работа с базами данных через графический интерфейс часто отталкивает разработчиков от использования среды Ubuntu, особенно в случае с WSL (Windows Subsystem for Linux). Однако подключение графического клиента, такого как Navicat, для управления базой данных на MySQL-сервере, развернутом в WSL, выполняется намного проще, чем кажется, и не требует сложных настроек.
Все, что нужно, - это правильно настроить MySQL-сервер для внешних подключений, обеспечить доступ к порту WSL из Windows и решить возможные проблемы с аутентификацией. После этого становится возможным использовать привычный и удобный интерфейс для полноценной работы с базами данных.
В этом кратком руководстве вы узнаете, как настроить MySQL-сервер и устранить ошибку "1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client", чтобы обеспечить успешное подключение через графический клиент Navicat.
Шаг 1: Настройка MySQL на WSL
Убедитесь, что MySQL установлен и запущен
Если MySQL ещё не установлен, выполните следующие команды в WSL для его установки и запуска:
sudo apt update
sudo apt install mysql-server
sudo service mysql start
После запуска проверьте его работу:
sudo service mysql status
Шаг 2: Разрешение подключений с других устройств
По умолчанию MySQL-сервер слушает только локальные соединения (через 127.0.0.1
). Для подключения из Navicat (или других программ на Windows) нужно изменить это поведение:
- Откройте файл конфигурации MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
- Найдите настройку
bind-address
:Она будет выглядеть примерно так:
bind-address = 127.0.0.1
- Измените её на следующее:
bind-address = 0.0.0.0
- Сохраните файл и перезапустите MySQL:
sudo service mysql restart
Шаг 3: Настройка пользователя MySQL для удалённых подключений
По умолчанию в MySQL пользователь root
может подключаться только локально. Чтобы разрешить подключение из Navicat, выполните следующие шаги:
- Войдите в MySQL:
sudo mysql -u root
- Проверьте методы аутентификации и существующих пользователей:
SELECT host, user, plugin FROM mysql.user;
- Измените метод аутентификации пользователя
root
на совместимый:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY ''; FLUSH PRIVILEGES;
- Убедитесь, что изменения применились:
SELECT host, user, plugin FROM mysql.user WHERE user = 'root';
- Выйдите из MySQL:
EXIT;
Шаг 4: Найдите IP-адрес WSL
Для подключения по TCP/IP из Windows нам нужен IP-адрес, назначенный WSL.
ip addr show
Найдите IP-адрес интерфейса eth0
. Пример:
inet 172.24.239.136/20 brd 172.24.255.255 scope global eth0
Здесь IP-адрес WSL — 172.24.239.136.
Шаг 5: Разрешите порт 3306
Для подключения снаружи нужно разрешить доступ к порту MySQL (3306
):
- Если включён брандмауэр WSL (
ufw
), выполните:sudo ufw allow 3306
- Проверьте доступность порта на стороне Windows (в терминале Powershell):
Test-NetConnection -ComputerName 172.24.239.136 -Port 3306
Если TcpTestSucceeded
равен True, доступ разрешён.
Шаг 6: Настройка подключения в Navicat
Теперь вы можете настроить подключение в Navicat:
- Откройте Navicat.
- Создайте новое соединение, выбрав Connection → MySQL.
- В настройках соединения укажите:
- Connection Name: любое имя, например,
MySQL WSL
. - Host Name/IP Address: IP-адрес вашего WSL (например,
172.24.239.136
). - Port:
3306
. - User Name:
root
. - Password: оставьте пустым (или укажите пароль, если он установлен).
- Connection Name: любое имя, например,
- Нажмите Test Connection.
Итог
В результате у нас есть настройки пользователей в MySQL на WSL для удаленных подключений:
Синхронизация MySQL на Ubuntu с Navicat на Windows:
Доступ к IP и соответствующему порту WSL с Windows:
Решение проблемы с аутентификацией существующих пользователей (ошибка - 1251 - Клиент не поддерживает протокол аутентификации, запрашиваемый сервером):
Остается только зарегистрировать следующий путь в конфигурации нашей базы данных в проекте:
Теперь вы можете управлять вашими базами данных на MySQL, установленном в WSL, через удобный интерфейс Navicat!