Как подключиться к MySQL удаленно?

После того, как Вы установили сервер MySQL, подключиться к нему Вы можете только с этой же машины. Сделано это в целях безопасности системы, так как в большинстве случаев MySQL используется в Web, а там в редких случаях разносят web-сервер и сервер баз данных.
В корпоративном же сегменте правильнее использовать 1 сервер под все похожие задачи. Глупо держать MySQL с одной базой данных на каждом сервере, где он может потребоваться. Поэтому сервер баз данных должен быть один, на котором заведено нужное количество баз данных под разные задачи.
Кстати, в Web`е разносят сервер базы данных и web-сервер только в тех случаях, когда мощности одного сервера не хватает. Арендуется выделенный сервер и выноситься на него база данных. Хотелось бы уточнить, что делать это разумно только в пределах одного ДЦ.
Разрешаем подключаться к MySQL удаленно
В конфигурационном файле самого MySQL есть параметр bind-address, который отвечает за это, поэтому:
- открываем конфигурационный файл для редактирования:
sudo nano /etc/mysql/my.cnf
- комментируем строку:
# bind-address = 127.0.0.1
- перезапускаем MySQL:
sudo service mysql restart
Закомментировать эту строку равносильно тому, что присвоить IP-адрес 0.0.0.0, то есть разрешить подключаться всем. Указать 2 IP-адреса в этой строчке нельзя. Если нужно ограничить подключение к серверу MySQL, нужно использовать возможности iptables.
Теперь через telnet-клиент Вы можете подключиться к серверу базы данных, но для того, чтобы зайти внутрь нужна учетная запись, которой разрешено подключаться не только с localhost. Для этого нужно подключиться к MySQL с самого сервера и создать такого пользователя:
mysql -u root -p
И командой создаем пользователя:
GRANT ALL PRIVILEGES
ON *.*
TO 'новый_пользователь'@'удаленный_адрес'
IDENTIFIED BY 'пароль'
WITH GRANT OPTION;
Эта строчка создает пользователя с неограниченными правами, что делать не совсем правильно. Правильнее максимально ограничить доступ пользователя, который подключается удаленно. Поэтому команда может выглядеть так:
GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,ALTER
ON 'имя_базы'.*
TO 'новый_пользователь'@'удаленный_адрес'
IDENTIFIED BY 'пароль'
WITH GRANT OPTION;
Этой командой мы ограничили полномочия пользователя только одной базой данных и действиями с ней.
Полный список всех прав, которые можно указать пользователю:
- ALL PRIVILEGES – все права на указанный объект за исключением назначения прав на этот объект;
- CREATE – право на создание таблицы;
- ALTER – право на изменение таблицы;
- DROP – право на уничтожение таблицы;
- LOCK TABLES – право на блокировку таблицы;
- CREATE TEMPORARY TABLES – право на создание временных таблиц;
- CREATE ROUTINE – право на создание хранимых процедур и функций;
- ALTER ROUTINE – право на изменение или уничтожение хранимых процедур и функций;
- CREATE VIEW – право на создание представления;
- TRIGGER – право на создание и уничтожение триггеров;
- INDEX – права на создание и уничтожение индексов;
- EXECUTE – право на выполнения хранимых процедур и функций;
- EVENT – право на создание событий;
- CREATE USER – права на создание, уничтожение, переименование пользователя и снятия все прав. Назначается только на глобальном уровне;
- SELECT – право на выборку;
- DELETE – право на удаление;
- INSERT – право на вставку;
- UPDATE – право на обновление;
- FILE – право на использование команд SELECT … INTO OUTFILE и LOAD DATA INFILE;
- PROCESS – право на просмотр всех процессов командой SHOW PROCESSLIST;
- SHOW DATABASES – право на просмотр списка схем;
- SHOW VIEW – право на просмотр списка представлений;
- SHUTDOWN – право на закрытие.
Статья относится к
- Синхронизация времени через Интернет в Ubuntu
- Увеличение количества подключений в Windows XP
- Кодеки для Ubuntu или подключение репозитория Medibuntu
- Учет трафика сетевого интерфейса в Linux с помощью vnstat
- Как "подружить" Claws-Mail 3.8.1 и апплет уведомлений Ubuntu?
- Где взять Ammy Admin для linux?
- Устанавливаем flash-плеер в 64-битной Ubuntu
- 12
Dec - 26
May - 24
Feb - 05
Feb - 11
Dec
- RedNotebook - личный дневник в Linux
[3604680]
- Основные команды Linux - Справочник команд Линукс
[1661225]
- Команда mount в Linux или все о монтировании разделов, дисков, образов ISO и SMB ресурсов.
[1092646]
- Как сделать загрузочную флешку из ISO-образа ОС
[1069701]
- Скрипт Winetricks или доводим Wine до ума
[618517]
- Список радиостанций для Rhythmbox
[589557]
- Yarssr - RSS-напоминалка о новых поступлениях на сайте
[567249]
8 December, 14:10
А не проще iptables’ом форвардить пакеты на порт к другой машине. Более того, необходимо огранччить количество запросов в минуту.и настройить fail2ban на авторизацию в мускуль. Иначе забрутят мускуль и привет.
20 February, 15:33
Вообще-то из покон веков MySQL вешают на локалхост онли и подключаются к нему через SSH тунель с пробросом 8080 в обе стороны.
3 October, 03:17
Отличная статья, спасибо. Обязательно будем использовать данный кейс.
14 November, 14:19
А что мешает подключаться по ssh До сервера и с него уже юзать MySQL