LINUX.ORG.RU
решено ФорумAdmin

Поднять удаленный доступ к MySQL

 


0

1

Хочу поднять доступ к мускулю, крутящемуся на локалхосте с домашнего же нетбука.

Начинаю делать так: В /etc/mysql/my.cnf в секции [mysqld] комментирую строчку

# bind-address = 127.0.0.1

Пишу новую:

bind-address = 172.16.172.187
где 172.16.172.187 — это айпишник, который мне выдал роутер.

После этого перезапускаю mysql командой

service mysql restart
В выхлопе появляется только
mysql stop/waiting

Об успешном запуске, соответственно не сообщает.

Смотрим в логи, а там такое:

140609 21:23:35 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140609 21:23:35 [Note] Plugin 'FEDERATED' is disabled.
140609 21:23:35 InnoDB: The InnoDB memory heap is disabled
140609 21:23:35 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140609 21:23:35 InnoDB: Compressed tables use zlib 1.2.8
140609 21:23:35 InnoDB: Using Linux native AIO
140609 21:23:35 InnoDB: Initializing buffer pool, size = 128.0M
140609 21:23:35 InnoDB: Completed initialization of buffer pool
140609 21:23:35 InnoDB: highest supported file format is Barracuda.
140609 21:23:35  InnoDB: Waiting for the background threads to start
140609 21:23:36 InnoDB: 5.5.37 started; log sequence number 1636061
140609 21:23:36 [Note] Server hostname (bind-address): '172.16.172.87'; port: 3306
140609 21:23:36 [Note]   - '172.16.172.87' resolves to '172.16.172.87';
140609 21:23:36 [Note] Server socket created on IP: '172.16.172.87'.
140609 21:23:36 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
140609 21:23:36 [ERROR] Do you already have another mysqld server running on port: 3306 ?
140609 21:23:36 [ERROR] Aborting

140609 21:23:36  InnoDB: Starting shutdown...
140609 21:23:37  InnoDB: Shutdown completed; log sequence number 1636061
140609 21:23:37 [Note] /usr/sbin/mysqld: Shutdown complete
И так много-много раз. Соответственно, один раз не подключился, пытается еще раз.

В чем проблема, как поправить?

Пробовал перевесить на другой порт (изменив строчку port в секциях [client] и [mysqld]. Также пробовал указать явную возможность подключения для рута с указанного айпишника. Результат идентичный.

UPD.
Чуть не забыл: дистр — Ubuntu 14.04

mysql --version 
mysql  Ver 14.14 Distrib 5.5.37, for debian-linux-gnu (i686) using readline 6.3

★★★★

Последнее исправление: HerrWeigel (всего исправлений: 1)
Ответ на: комментарий от anonymous

Также пробовал указать явную возможность подключения для рута с указанного айпишника

То есть делал

GRANT ALL ON *.* TO 'root'@'172.16.172.187' IDENTIFIED BY 'mypass' WITH GRANT OPTION;
а потом только делал restart.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от HerrWeigel

По-моему, как раз так логичнее - сервисы слушают на всех адресах, а все разрешения относительно сети разруливаются в фаерволе.

У mysql к пользователю прилагается разрешённая подсеть, так что если биндишь только к внешнему адресу, у утилит для контроля службы могут возникнуть проблемы. Постгресовский pg_hba.conf мне больше нравится.

Как вариант - биндить на внешний ip и на 127.0.0.1

selivan ★★★
()
Ответ на: комментарий от selivan

Ну, может быть. Все, я не спец, так что молчу.

Как вариант - биндить на внешний ip и на 127.0.0.1

То есть написать

bind-address = 127.0.0.1
bind-address = 172.16.172.187

А можно? Он ругаться не будет?

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от HerrWeigel

Вроде через запятую. Уточни в man-е (или просто попробуй).
Но вообще 0.0.0.0 логичнее в твоём случае. IP выданный роутером не обязан быть статичным, и едва-ли помимо визического интерфейса и lo на твоём локалхосте есть другие интерфейсы (при-чём таки от которых mysql хотелось-бы оградить).

MrClon ★★★★★
()
Ответ на: комментарий от HerrWeigel

Написали же:

140609 21:23:36 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address 140609 21:23:36 [ERROR] Do you already have another mysqld server running on port: 3306 ?

Посмотреть что висит на 3306

netstat -nlop

invokercd ★★★★
()
Ответ на: комментарий от MrClon

IP выданный роутером не обязан быть статичным

Это понятно, просто я хочу сегодня-завтра БД на VPS-ке поднять. Надо на локалхосте потренироваться, чтобы там дров не наломать.

Вроде через запятую. Уточни в man-е (или просто попробуй).

The MySQL server listens on a single network socket for TCP/IP connections. This socket is bound to a single address, but it is possible for an address to map onto multiple network interfaces. The default address is 0.0.0.0. To specify an address explicitly, use the --bind-address=addr option at server startup, where addr is an IPv4 address or a host name. If addr is a host name, the server resolves the name to an IPv4 address and binds to that address. The server treats different types of addresses as follows:

If the address is 0.0.0.0, the server accepts TCP/IP connections on all server host IPv4 interfaces. If the address is a «regular» IPv4 address (such as 127.0.0.1), the server accepts TCP/IP connections only for that particular IPv4 address.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от invokercd

Проверял же. Даже порт менял. Если мускуль не запущен, то там пусто. То есть меняю my.cnf, останавливаю мускуль. 3306 свободен. Запускаю service mysql start и ничего не происходит. При этом первое же сообщение об ошибке — именно такое, какое я указал. Впрочем, как и все остальные. То есть, по идее, порт не занят, айпишник валидный, но мускулю что-то не нравится.

HerrWeigel ★★★★
() автор топика
Последнее исправление: HerrWeigel (всего исправлений: 1)
Ответ на: комментарий от HerrWeigel

Это понятно, просто я хочу сегодня-завтра БД на VPS-ке поднять. Надо на локалхосте потренироваться, чтобы там дров не наломать.

А зачем тебе на VPS доступ к mysql извне? Админить и через ssh можно без проблем. Или VPS чисто под БД?

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Не, не админить, моя прога должна получать оттуда данные, ну и отсылать их туда. Так-то я и так туда по ssh хожу.

HerrWeigel ★★★★
() автор топика
Последнее исправление: HerrWeigel (всего исправлений: 1)
Ответ на: комментарий от HerrWeigel

Ну хз тогда. Может убунтопатчи какие то.

Можно попробовать снести с конфигами (--purge), и поставить заново, проверить апдейты также.

invokercd ★★★★
()
Ответ на: комментарий от HerrWeigel

http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_bind...

Я не совсем прав, ругаться не будет, но использовать станет только последний из перечисленных. Суда по написанному по ссылке выше, тебе надо завести root@'%ip%' и debian-sys-maint@'%ip' и тем же паролем, что и у нормального debian-sys-maint.

Или всё-таки биндить к *(ipv4+ipv6) или 0.0.0.0(ipv4), а подключения фильтровать в iptables. Вообще, выставлять сервис голой жопой в интернет нехорошо. Хотя бы SSL к нему прикрути

selivan ★★★
()
Ответ на: комментарий от nerve

Он же тогда к 0.0.0.0 будет биндиться, а это решение уже обсудили.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от selivan

Там для 5.6, а у меня 5.5. Сейчас за комп сяду - посмотрю, что для моей версии похожее есть.

Насчет SSL - хорошая идея, сделаю.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от invokercd

Да не, перестановка тут ничего не решит, я конфиг до этого вроде не трогал даже. А апдейтов нету для мускуля.

HerrWeigel ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.