Как я могу подключиться к СУБД MySQL удаленно и какие могут быть возможные ошибки в этом процессе?

Здравствуйте!  
У меня есть локальная сеть, состоящая из трех виртуальных машин, и на одной из них установлена СУБД MySQL. Я прочитал в интернете, что удаленный доступ к базе данных по умолчанию отключен. Это действительно так?  
Я пытался предоставить пользователю «root» удаленный доступ с помощью команды:  
"GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;  
FLUSH PRIVILEGES;", но столкнулся с ошибкой:  
"ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '123' WITH GRANT OPTION' at line 1".  
Также аналогичная ошибка возникает при попытке настроить доступ для других пользователей.
  • 22 января 2025 г. 8:14
Ответы на вопрос 3
Здравствуйте!

Вы правы, по умолчанию удаленный доступ к MySQL может быть отключен по соображениям безопасности. Чтобы подключиться к MySQL удаленно, вам нужно выполнить несколько шагов:

### Шаги для настройки удаленного доступа к MySQL:

1. **Настройка конфигурационного файла:**
   Убедитесь, что в конфигурационном файле MySQL (обычно это `my.cnf` или `my.ini`) параметр `bind-address` позволяет подключение с удаленных адресов. Если он установлен на `127.0.0.1`, MySQL будет принимать соединения только с локального хоста.
   ```ini
   [mysqld]
   bind-address = 0.0.0.0
   ```
   После изменения этого параметра, вам нужно перезапустить MySQL-сервер.

2. **Создание пользователя с удаленным доступом:**
   Ошибка, с которой вы столкнулись, указывает на неправильный синтаксис команды. Вам нужно создать пользователя без `IDENTIFIED BY` в команде `GRANT`. Сначала создайте пользователя, а затем задайте ему права доступа:
   ```sql
   CREATE USER 'root'@'%' IDENTIFIED BY '123';
   GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
   FLUSH PRIVILEGES;
   ```

3. **Проверка привилегий:**
   Убедитесь, что права пользователя были успешно применены. Вы можете просмотреть список пользователей с правами доступа:
   ```sql
   SELECT host, user FROM mysql.user;
   ```

### Возможные ошибки и их решения:

1. **Ошибка 1045 (Access Denied):**
   Это может означать, что у пользователя нет прав на подключение с удаленного хоста или неверно указаны учетные данные. Проверьте, что пользователь создан правильно и имеет необходимые привилегии.

2. **Ошибка подключения:**
   Убедитесь, что порт 3306 (по умолчанию для MySQL) не заблокирован фаерволом на сервере. Проверьте, что ваш фаервол настроен на разрешение входящих соединений на этом порту.

3. **Сетевые проблемы:**
   Убедитесь, что вы можете пинговать сервер с клиентской машины и что используется правильный IP-адрес.

4. **Синтаксические ошибки:**
   В вашей команде `GRANT` произошла синтаксическая ошибка. Помните, что для создания пользователя и выдачи права доступа необходимо использовать отдельно стоящие команды.

### Заключение:
Следуя приведенным выше шагам, вы сможете настроить удаленный доступ к MySQL. Если вы будете сталкиваться с другими ошибками, рекомендуется проверять лог-файлы MySQL для более детальной информации о возникающих проблемах.
Тебе тут даже MySQL вежливо предлагает RTFM. 
https://dev.mysql.com/doc/refman/8.4/en/grant.html
Это верно или нет???

В общем случае нет. Точнее, зависит от настроек при установке/конфигурировании. ЕМНИП при использовании предопределённого профиля разработчика сервер настраивается только на использование socks/shared memory, соответственно сетевой интерфейс (даже локалхост) не слушается и внешние подключения невозможны.

Смотрите настройки. skip_networking, bind_address и т.п.

Server Option, System Variable, and Status Variabl...

столкнулся с ошибкой
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '123' WITH GRANT OPTION' at line 1

Позорище... вот что мешает читать не всякую срань в интернете, а официальную документацию, причём для именно той версии ПО, которая используется?
Похожие вопросы