Для большинства ответ - DBeaver Community: бесплатный, работает на Windows, macOS и Linux, справляется с MySQL 8.4 без капризов, а потом тот же инструмент подойдёт для PostgreSQL и SQL Server. HeidiSQL - более быстрый и лёгкий выбор, если вы на Windows и в основном просматриваете и редактируете данные. MySQL Workbench - собственный инструмент Oracle, и его стоит выбрать, когда нужны моделирование схемы и визуальные планы запросов, ценой того, что он медленнее и капризнее остальных. Все три подключаются к удалённому серверу MySQL по одним и тем же пяти параметрам - хост, порт, пользователь, пароль и база данных - и не подключаются по одним и тем же немногим причинам, которые разобраны в этой статье вместе с настройкой каждого.
Что нужно, прежде чем открывать любой клиент#
Каждый клиент спрашивает одно и то же. Сначала соберите это:
| Поле | Пример | Откуда берётся |
|---|---|---|
| Хост | db.example.com или IP | Адрес вашего сервера баз данных |
| Порт | 3306 или порт, выделенный вашему тарифу | На хостинговых серверах не всегда 3306 |
| Пользователь | app | Созданный вами аккаунт или сгенерированный пользователь приложения |
| Пароль | - | Генерируется вместе с аккаунтом |
| База данных | app | Необязательно, но экономит клик |
Используйте пользователя приложения, а лучше отдельный аккаунт для людей, а не root. В GUI очень легко выполнить DELETE не в той вкладке, а аккаунт, которому доступна только база данных приложения, ограничивает ущерб от одного неверного клика. Как сделать аккаунт только для чтения для просмотра данных - правильное умолчание для всех, кому нужно лишь смотреть, - показано в статье пользователи и привилегии в MySQL.
Два факта о MySQL 8.4 на стороне сервера решают, подключится ли клиент вообще:
- Аутентификация. Аккаунты используют
caching_sha2_password. Более старый плагинmysql_native_passwordв 8.4 по умолчанию отключён. Клиент на старой клиентской библиотеке - примерно на всём, что старше MySQL 8.0, - не может аутентифицироваться и падает сAuthentication plugin 'caching_sha2_password' cannot be loaded. Актуальные версии всех трёх клиентов из этой статьи его поддерживают. - TLS. Сервер по умолчанию включает TLS с сертификатом, который генерирует сам. Клиенты могут шифровать с ним соединение, но не могут проверить его по публичному центру сертификации, пока вы не дадите им файл CA сервера.
Если можете, сначала проверьте соединение из терминала. Если mysql -h db.example.com -P 3306 -u app -p app работает, с сервером и сетью всё в порядке, и любая проблема в GUI - это настройка клиента. Клиент командной строки и режимы SSL подробно разобраны в статье удалённое подключение к MySQL.
Если клиент MySQL не установлен, всё равно можно проверить, доступен ли порт вообще, - это отделяет сетевые проблемы от проблем с аккаунтом ещё до того, как в дело вступит GUI:
# Windows PowerShellTest-NetConnection db.example.com -Port 3306# macOS and Linux$ nc -vz db.example.com 3306TcpTestSucceeded : True в Windows или succeeded / open от nc означают, что что-то слушает порт и ваша сеть позволяет до него достучаться. Таймаут значит, что трафик отбрасывает файрвол - часто это офисная или учебная сеть, блокирующая непривычные исходящие порты, - и никакая настройка клиента не поможет. «Connection refused» значит, что хост ответил, но на этом порту ничего не слушает, а это почти всегда неверный номер порта. Когда эта проверка проходит, любой оставшийся отказ - уже между клиентом и самой MySQL, и такие случаи разобраны в таблице ошибок ниже.
Сравнение трёх клиентов#
| DBeaver Community | HeidiSQL | MySQL Workbench | |
|---|---|---|---|
| Платформы | Windows, macOS, Linux | Windows | Windows, macOS, Linux |
| Лицензия | Бесплатный, open source | Бесплатный, open source | Бесплатный (GPL), от Oracle |
| Основа | Java, драйверы JDBC | Нативный, клиентские библиотеки MySQL/MariaDB | Нативный, клиентская библиотека MySQL |
| Другие базы данных | PostgreSQL, SQL Server, SQLite и многие другие | MariaDB, PostgreSQL, SQL Server, SQLite | Только MySQL |
| Сильная сторона | Один инструмент для всего, ER-диаграммы | Скорость, быстрые правки, экспорт | Моделирование, визуальный EXPLAIN, экраны администрирования |
| Слабая сторона | Время запуска, расход памяти | Не кроссплатформенный | Стабильность на больших результатах, только MySQL |
Ни один из трёх не является неправильным выбором. Выбирать приходится между широтой (DBeaver), скоростью (HeidiSQL) и глубиной именно для MySQL (Workbench). Многие в итоге держат два: HeidiSQL или DBeaver для повседневной работы и Workbench для редкой ER-диаграммы или плана запроса.
Подключение через DBeaver#
- Нажмите значок вилки с плюсом (New Database Connection), выберите MySQL и нажмите Next.
- На вкладке Main заполните Server Host, Port, Database, Username и Password. Authentication оставьте как Database Native. Ставьте галочку Save password только на машине, которой доверяете.
- Нажмите Test Connection. В первый раз DBeaver предложит скачать JDBC-драйвер MySQL (Connector/J); согласитесь.
- Нажмите Finish. Соединение появится в Database Navigator.
DBeaver использует Java-драйвер, а не C-библиотеку MySQL, и у этого драйвера есть одна ошибка, которую на MySQL 8 встречает каждый: Public Key Retrieval is not allowed. С caching_sha2_password клиенту, который входит по незашифрованному соединению, нужен публичный RSA-ключ сервера, чтобы безопасно передать пароль, а Connector/J отказывается его запрашивать, пока ему не разрешат. Два решения, на вкладке Driver properties:
- Зашифровать соединение: установите
useSSLвtrue(иrequireSSLвtrue, если хотите на этом настаивать). Тогда пароль передаётся внутри TLS, и получать ключ не нужно. Это лучшее решение. - Разрешить получение ключа: установите
allowPublicKeyRetrievalвtrue. Это работает, но машина посередине может подсунуть вам свой ключ, поэтому через интернет предпочитайте TLS.
useSSL=truerequireSSL=trueverifyServerCertificate=falseallowPublicKeyRetrieval=falseverifyServerCertificate=false шифрует, не проверяя, кто ответил, - именно это вы получаете с самосгенерированным сертификатом сервера. Если у вас есть сертификат CA сервера, укажите его на вкладке SSL и включите проверку. Вкладка SSH пускает соединение через туннель на сервер, к которому у вас есть доступ к оболочке, - так можно достучаться до базы данных, не открытой в интернет.
Полезные привычки в DBeaver: для живых баз данных задайте тип соединения (Edit Connection, General) Production - редактор окрасится, чтобы вы видели, где находитесь, и сможет спрашивать подтверждение перед выполнением операторов; Ctrl+Enter выполняет оператор под курсором, а Alt+X - весь скрипт; а просмотрщик результатов по умолчанию загружает по 200 строк, так что быстрый на вид запрос мог загрузить не всё.
Подключение через HeidiSQL#
- Откройте Session manager, нажмите New и дайте сессии имя.
- В Network type выберите вариант MySQL или MariaDB TCP/IP.
- Заполните Hostname / IP, User, Password и Port. Поле Databases принимает список баз для отображения через точку с запятой; оставьте его пустым, чтобы видеть всё, к чему у пользователя есть доступ.
- Нажмите Open.
На вкладке SSL поставьте галочку Use SSL, чтобы шифровать сессию, и укажите сертификат CA, если он у вас есть для проверки. На вкладке Advanced выбирается клиентская библиотека, которую загружает HeidiSQL. Если сессия падает с caching_sha2_password cannot be loaded, переключите библиотеку на libmysql от MySQL 8 или новее из списка - старые встроенные библиотеки появились раньше этого плагина - или обновите сам HeidiSQL.
Сильная сторона HeidiSQL - скорость: он открывается мгновенно, редактирует данные прямо в таблице, а в меню Tools есть Export database as SQL, который записывает дамп выбранных таблиц или баз данных в файл, на другой сервер или в буфер обмена. Для большой базы данных настоящий mysqldump всё ещё надёжнее как бэкап - см. бэкап и восстановление через mysqldump, - но чтобы скопировать несколько таблиц между серверами, HeidiSQL трудно превзойти.
HeidiSQL - в первую очередь программа для Windows. На Linux и macOS его запускают под Wine с переменным успехом; на этих системах используйте DBeaver.
Подключение через MySQL Workbench#
- На главном экране нажмите плюс рядом с MySQL Connections.
- Задайте Connection Name, Connection Method оставьте Standard (TCP/IP).
- Заполните Hostname, Port и Username. Нажмите Store in Vault (Windows, macOS) или Store in Keychain (Linux), чтобы сохранить пароль.
- При желании задайте в Default Schema свою базу данных.
- На вкладке SSL у настройки Use SSL пять значений: No, If available, Require, Require and Verify CA, Require and Verify Identity. Для удалённого сервера с самосгенерированным сертификатом используйте Require; с файлом CA - Require and Verify CA.
- Нажмите Test Connection, затем OK.
У Workbench три умолчания, о которых стоит знать заранее, чтобы они вас не удивили:
| Настройка | По умолчанию | Эффект |
|---|---|---|
| Safe Updates | Включено | UPDATE и DELETE без ключа в WHERE падают с ошибкой 1175 |
| Limit Rows | 1000 | Workbench дописывает LIMIT 1000 к SELECT в редакторе |
| DBMS connection read timeout | 30 секунд | Долгие запросы падают с Lost connection to MySQL server during query |
Все три находятся в Edit, Preferences, SQL Editor (и SQL Execution для лимита строк). Safe Updates стоит оставить включённым - ошибка 1175 спасла немало таблиц. Таймаут чтения - тот, который нужно поднять, если вы запускаете из Workbench долгие отчёты или ALTER TABLE; запрос был в порядке, Workbench просто перестал ждать.
Где Workbench оправдывает себя: Visual Explain рисует план выполнения запроса со стоимостями, и это хороший способ научиться читать планы (см. индексы и EXPLAIN в MySQL); Database, Reverse Engineer строит ER-диаграмму по живой схеме; а экран Users and Privileges - удобочитаемый вид прав. Его Data Export запускает встроенный mysqldump, который должен быть не старше сервера, - предупреждение о несовпадении версий там стоит принимать всерьёз.
Некоторые выпуски Workbench при подключении к серверу новее того, с которым их тестировали, показывают предупреждение о несовместимой или нестандартной версии сервера. Это лишь предупреждение; можно продолжить, и повседневные запросы работают.
Ошибки, которые останавливают любой клиент#
Клиент меняется, причины - нет.
| Ошибка | Значение | Решение |
|---|---|---|
Can't connect to MySQL server on 'host' (10060) или (111), ошибка 2003 | На этом хосте и порту никто не отвечает | Проверьте хост, порт и любой файрвол между вами |
Access denied for user 'app'@'203.0.113.5', ошибка 1045 | Неверный пароль или нет аккаунта, подходящего под ваш адрес | Проверьте пароль; проверьте хостовую часть аккаунта |
Host '203.0.113.5' is not allowed to connect, ошибка 1130 | Для вашего адреса нет вообще никакого аккаунта | Создайте аккаунт для '%' или для вашего адреса |
Authentication plugin 'caching_sha2_password' cannot be loaded | Слишком старая клиентская библиотека | Обновите клиент или выберите библиотеку новее |
Public Key Retrieval is not allowed | JDBC-клиент без TLS | Включите TLS или разрешите получение ключа |
SSL connection error | Одна сторона требует TLS, другая отказывает или не может проверить | Согласуйте режим SSL; укажите CA или ослабьте проверку |
Разница между ошибкой 2003 и 1045 - самое полезное различие в этой таблице. 2003 означает, что вы так и не добрались до MySQL, - проблема сети. 1045 означает, что MySQL ответила отказом, - проблема аккаунта. Сторона аккаунта объяснена в статье пользователи и привилегии в MySQL: MySQL определяет аккаунт по имени пользователя и хосту клиента вместе, поэтому 'app'@'localhost' не сможет войти с вашего ноутбука, каким бы правильным ни был его пароль.
Безопасная работа из GUI#
Графический клиент меняет не только удобство, но и риски. Несколько привычек предотвращают большинство аварий:
- Отдельные соединения для продакшена и всего остального, с разными именами и цветами. В большинстве историй «я запустил это не на той базе» участвуют две вкладки, которые выглядели одинаково.
- Следите за autocommit. Все три клиента по умолчанию работают с autocommit, но все три позволяют переключиться на ручную фиксацию. В ручном режиме каждый выполненный вами
UPDATEдержит блокировки строк, пока вы не нажмёте Commit, - а приложение ждёт за вами. Забытая незафиксированная правка в GUI - классическая причина таймаутов ожидания блокировок; как найти такую, показано в статье транзакции, блокировки и deadlock в MySQL. - Правки в таблице - это SQL. Изменение ячейки и сохранение выполняют
UPDATEсWHERE, построенным по первичному ключу. В таблице без первичного ключа некоторые клиенты строятWHEREпо всем колонкам, и если строка дублируется, одна правка меняет две строки. Дайте каждой таблице первичный ключ. - Большие результаты живут в памяти вашей машины.
SELECT * FROM eventsна пятьдесят миллионов строк может заморозить клиент задолго до того, как это заметит сервер. Пока исследуете данные, добавляйтеLIMIT. - Закрывайте то, чем не пользуетесь. Каждая открытая вкладка может держать соединение, а простаивающие сессии GUI учитываются в
max_connectionsнаравне со всем остальным.
Другие клиенты, о которых стоит знать#
Три клиента выше - не единственный вариант:
- mysql и MySQL Shell (`mysqlsh`) - клиенты командной строки. Доступны всегда, поддаются скриптованию и служат эталоном, чтобы понять, чья проблема с подключением - сервера или GUI.
- Sequel Ace - бесплатный, open source, только для macOS, MySQL и MariaDB. Естественный выбор на Mac, если DBeaver кажется тяжёлым.
- TablePlus - нативный, быстрый, для многих баз данных, коммерческий с ограниченной бесплатной версией.
- DataGrip - платная IDE для баз данных от JetBrains с лучшим автодополнением SQL из всех. Также встроена в другие их IDE как окно инструментов для баз данных.
- Beekeeper Studio - open source, кроссплатформенный, простой; коммерческая редакция добавляет возможности.
- phpMyAdmin и Adminer - веб-клиенты, работающие на PHP-хосте. Полезны, когда локально ничего установить нельзя; они подключаются с веб-сервера, а не с вашей машины. Сторона импорта разобрана в статье импорт и экспорт в phpMyAdmin.
FAQ#
Можно ли использовать MySQL Workbench с MariaDB?
Часто он подключается, но Workbench сделан для MySQL, и по мере того как они расходятся, некоторые экраны на MariaDB показывают неверные данные или ломаются. HeidiSQL и DBeaver поддерживают MariaDB полноценно. Для сервера MySQL 8.4 годятся все три.
Почему клиент подключается из дома, но не из офиса?
Либо офисная сеть блокирует исходящие соединения на этот порт, либо аккаунт базы данных или файрвол разрешает только определённые адреса. Ошибка 2003 указывает на сеть; ошибка 1045 или 1130 с офисным адресом в тексте - на шаблон хоста в аккаунте.
Безопасно ли сохранять пароль в клиенте?
На вашей собственной зашифрованной машине - в разумной мере. Workbench хранит его в связке ключей операционной системы; DBeaver и HeidiSQL - в собственной конфигурации, которая защищена хуже. Для продакшена подумайте о том, чтобы не сохранять пароль, или используйте для сохранённого соединения аккаунт только для чтения.
Нужен ли TLS, если я подключаюсь через интернет?
Да. Без него каждый запрос и результат идут по сети открытым текстом, а на старых путях аутентификации - и учётные данные. Все три клиента поддерживают TLS; включить его - одна настройка.
Какой клиент лучше всего для импорта большого SQL-дампа?
Никакой. Импорт через GUI загружает файл через клиент и на дампах больше нескольких сотен мегабайт идёт медленно или падает. Используйте клиент командной строки: mysql -h host -P port -u user -p dbname < dump.sql.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.