Открытие удаленного доступа — вопрос , встречающийся достаточно часто, но также часто вызывающий проблемы и дополнительные трудозатраты. Разберемся по шагам, как открыть удаленный доступ к базе данных MySQL.
Подключаемся к серверу по ssh.
На сервере пишем:
mysql -uroot -p
Вводим пароль, логинимся. Далее пишем:
use mysql
Теперь посмотрим, какие пользователи есть на сервере и с каких хостов они могут подключаться:
SELECT Host,User,Password FROM user;
После этого Вы увидите таблицу, наподобие примера ниже:
+-----------+--------+-------------------------------------------+ | Host | User | Password | +-----------+--------+-------------------------------------------+ | localhost | root | *425678901585ACDB80C72475B1E70451ADB1263 | +-----------+--------+-------------------------------------------+
Это означает, что создан один пользователь — root, у которого установлен пароль и подключатся он может только с localhost.
Чтобы разрешить root доступ с любого адреса выполните следующие команды:
UPDATE user SET Host='%' WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES;
Здесь мы устанавливаем значение колонки host в %, что означает снятие ограничений — т.е. подключений с любого хоста, что нам и было нужно. Вторая команда применяет внесенные изменения.
Для изменения пароля воспользуйтесь следующей командой:
UPDATE user SET Password=PASSWORD('новый пароль') WHERE User='root' AND Host='%';
Кстати, используя эту таблицу и манипуляции с ней можно сделать один очень интересный трюк. В таблице может быть несколько записей для одного пользователя — грубо говоря, несколько root с разными host и соответственно разными паролями. Например, так:
+-------------+--------+-------------------------------------------+ | Host | User | Password | +-------------+--------+-------------------------------------------+ | localhost | root | *425678901585ACDB80C72475B1E70451ADB1263 | +-------------+--------+-------------------------------------------+ | 192.168.1.2 | root | *425678901585ACDB80C72475B1E70451ADB1263 | +-------------+--------+-------------------------------------------+ | 192.168.1.3 | root | *34901585ACDB80C72475B1E70451ADB41263771 | +-------------+--------+-------------------------------------------+ | 192.168.1.9 | root | *1585ACDB80C72475B1E70451ADB126309876588 | +-------------+--------+-------------------------------------------+
Таким образом, в зависимости от того, откуда подключается пользователь root, ему нужно будет вводить разные пароли.