Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Как грамотно заблокировать доступ к MySQL извне?  [new]
volosoed
Member

Откуда:
Сообщений: 10
Добрый день!
Только начинаю постигать MySQL, появился вопрос, как грамотно запретить внешние подключения к серверу.
Например, предполагается, что доступ к БД будет только у пользователя данного ПК.
В ходе часовых поисков была найдена переменная bind_address, которой нужно передать разрешенный адрес подключения (в моем случае это 127.0.0.1).
Запускаю MySQL 8.0 Command Line Client, ввожу пароль root-пользователя (он у меня единственный), затем ввожу команду:
set global bind_address='127.0.0.1';

На нее получаю ответ:
ERROR 1238 (HY000): Variable 'bind_address' is a read only variable
Продолжаю поиски, нахожу информацию, что данную переменную нужно устанавливать в файле my.ini вручную.
Нахожу этот файл в C:\ProgramData\MySQL\MySQL Server 8.0 (я работаю в Windows, тут еще путаница с расположением, в Unix-системах все совсем по-другому)
После [mysqld]
дописываю
bind-address=127.0.0.1
Перезагружаюсь, запускаю консоль, проверяю
mysql> show global variables like "bind_address";

+---------------+-----------+
| Variable_name | Value |
+---------------+-----------+
| bind_address | 127.0.0.1 |
+---------------+-----------+
1 row in set, 1 warning (0.00 sec)
Выдает предупреждение. Пытаюсь узнать что за предупреждение
mysql> show warnings;

+---------+------+----------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------------------------------------+
| Warning | 1366 | Incorrect string value: '\xE7\xE8\xEC\xE0)' for column 'VARIABLE_VALUE' at row 1 |
+---------+------+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Все ли правильно я делаю? Что это за предупреждение? Можно ли как-то задать эту переменную с помощью команды или через MySQL Workbench?
12 ноя 20, 10:55    [22230620]     Ответить | Цитировать Сообщить модератору
 Re: Как грамотно заблокировать доступ к MySQL извне?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20775
volosoed
Все ли правильно я делаю?

Да.

volosoed
Что это за предупреждение?

Какая-то из переменных имеет кривое значение. Кириллица, служебные символы...
12 ноя 20, 13:06    [22230697]     Ответить | Цитировать Сообщить модератору
 Re: Как грамотно заблокировать доступ к MySQL извне?  [new]
volosoed
Member

Откуда:
Сообщений: 10
Akina, кривое значение в файле
my.ini
? А в какой кодировке его нужно сохранить? И с ANSI, и с UTF-8 - та же ошибка.
Я попробовал раскомментировать переменную
skip_networking
, при этом убрал из файла строку
bind-address=127.0.0.1
(прочитал, что эти строчки исключают друг друга, хотя в некоторых мануалах рекомендуют их писать вместе), и после этого не смог подключиться ни через консоль, ни через MySQL Worckbench. Как правильно использовать skip_networking, как в таком случае подключаться, стоит ли его вообще использовать, если нужно разрешить только локальные подключения?
12 ноя 20, 13:33    [22230721]     Ответить | Цитировать Сообщить модератору
 Re: Как грамотно заблокировать доступ к MySQL извне?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20775
volosoed
Akina, кривое значение в файле
my.ini
? А в какой кодировке его нужно сохранить?

Вряд ли в My.ini. Скорее это, например, system_time_zone.

volosoed
Как правильно использовать skip_networking, как в таком случае подключаться

Дык... через сокет. Сетевая часть при skip_networking отключена СОВСЕМ.

Сообщение было отредактировано: 12 ноя 20, 16:34
12 ноя 20, 16:37    [22230901]     Ответить | Цитировать Сообщить модератору
 Re: Как грамотно заблокировать доступ к MySQL извне?  [new]
volosoed
Member

Откуда:
Сообщений: 10
А как тогда подключиться, при создании нового коннекта в MySQL Workbench у меня на выбор 3 варианта подключения, из них 2 - с использованием TCP/IP. Третий - через некий Spot. Как тогда поделючаться, если все-ьаки оставить skip_networking?
12 ноя 20, 17:48    [22231000]     Ответить | Цитировать Сообщить модератору
 Re: Как грамотно заблокировать доступ к MySQL извне?  [new]
volosoed
Member

Откуда:
Сообщений: 10
Вчера не было под рукой MySQL, написал не то... В Connection Method (при создании нового подключения в Workbench) три варианта подключения:
Standart (TCP/IP)
Local Socket/Pipe
Standart TCP/IP over SSH
При включенной опции skip_networking с помощью Local Socket/Pipe подключиться не удалось. Поле Socket/Pipe path оставлял пустым/ставил точку (в каких-то мануалах так рекомендовали/что я туда только не писал, результат - Can't open named pipe to host при пробном подключении.
Как тогда подключиться?
13 ноя 20, 06:02    [22231200]     Ответить | Цитировать Сообщить модератору
 Re: Как грамотно заблокировать доступ к MySQL извне?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20775
Для включения Local Socket/Pipe необходимо как минимум:

- раскомментировать и установить настройки enable-named-pipe и socket (для Windows - ещё и named-pipe) в секции [mysqld].
- раскомментировать и установить настройку pipe= в секции [client].
- перезапустить сервер для применения настроек.

Ну и вообще почитать User Manual по этому вопросу. Там есть и ещё настроек.
13 ноя 20, 07:39    [22231211]     Ответить | Цитировать Сообщить модератору
 Re: Как грамотно заблокировать доступ к MySQL извне?  [new]
volosoed
Member

Откуда:
Сообщений: 10
Спасибо! Я правильно понимаю, что при установке skip_networking подключиться можно будет только через Local Socket/Pipe?
В таком случае, для начала, мне хватит и bind-address=127.0.0.1 - простого ограничения доступа извне.
13 ноя 20, 07:54    [22231218]     Ответить | Цитировать Сообщить модератору
 Re: Как грамотно заблокировать доступ к MySQL извне?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20775
volosoed
Я правильно понимаю, что при установке skip_networking подключиться можно будет только через Local Socket/Pipe?
да.
13 ноя 20, 10:21    [22231262]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить