У меня установлен новый сервер MySQL 8. Свежий, чистый, прямо из пакета. Теперь я хочу подключиться к нему с помощью DBeaver (инструмент с графическим интерфейсом). У него есть такая функция безопасности, как туннель SSH. Туннель работает. Я подключаюсь по SSH, используя свой закрытый ключ.
Затем я пытаюсь подключиться как root к localhost с помощью DBeaver (через туннель), и это дает мне сообщение об ошибке «Доступ запрещен для пользователя 'root' @ 'localhost'».
Почему? Когда я подключаюсь к серверу по SSH с помощью putty от имени пользователя root, набираю mysql - он просто работает. У меня есть полный доступ.
Кстати, я пытался использовать «127.0.0.1» вместо «localhost» в конфигурации DBeaver, но это не помогло.
Вот моя таблица mysql.user:
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | debian-sys-maint |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
Есть идеи, как настроить доступ? А может я должен установить пароль? Но почему это работает в терминале?
Нельзя использовать root
со стороны сервера. Это преднамеренно со стороны MySQL, потому что люди (слишком часто) ставят сайт с MySQL бэкэндом и фронт-ендом с ошибками, используют простой пароль, и получают pWn3d ... часто несколькими способами.
Быстрым способом является создание еще одной учетной записи для всей вашей работы администратора, а затем предоставление всех привилегий с опцией "Grant". Процесс будет выглядеть следующим образом:
CREATE USER 'harry'@'%' IDENTIFIED WITH mysql_native_password BY 'superSecretPassword!123';
GRANT ALL ON *.* TO 'harry'@'%' WITH GRANT OPTION;
Проблема решена