Назад | Перейти на главную страницу

Как настроить сервер MySql для приема удаленных подключений?

Я устанавливаю сервер MySql на рабочий стол Ubuntu. Я мог бы подключить к нему MySql Query Browser, указав Server Hostname так как localhost, но когда я заменяю его IP-адресом машины, он перестает работать (даже если браузер запросов MySql работает на том же компьютере).

Все, что я сделал до сих пор, - это удаление iptables, но, похоже, это не имеет к этому никакого отношения.

Вот сообщение об ошибке

Не удалось подключиться к хосту 192.168.0.2.

Ошибка MySQL № 2003 г.

Не удается подключиться к серверу MySQL на 192.168.0.2 (111)

Нажмите кнопку «Ping», чтобы узнать, есть ли проблемы с сетью.

Хотя пинг в порядке

Вам нужно будет привязать ваш mysqld к IP-адресу, отличному от 127.0.0.1.

Откройте свой my.cnf (обычно /etc/mysql/my.cnf) и измените строку, в которой говорится

bind = 127.0.0.1

к любому IP-адресу, который ваша машина использует для подключения к внешнему миру. 0.0.0.0 привязывается ко всем IP-адресам. Не забудьте перезапустить mysqld после этого изменения.

В дополнение к ответу Halfdan мне пришлось выполнить следующую команду mysql:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON databasename.*
TO 'username'@'clientipaddress'
IDENTIFIED BY 'password'

Как я узнал на

http://forums.mysql.com/read.php?86,23619,41248#msg-41248

Здесь объясняется еще несколько потенциальных проблем:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html http://dev.mysql.com/doc/refman/5.1/en/access-denied.html

Если вы хотите предоставить все права всем базам данных, попробуйте

grant all on *.* to 'joe'@'%';

Однако, прежде чем вы это сделаете, убедитесь, что у вас есть пользователь в базе данных «mysql», у которого «Хост» установлен на ваш IP-адрес - в моем случае это мой IP здесь, дома. Таким образом, пользователь «joe» может иметь несколько записей, по одной для каждого IP-адреса, с которого он может звонить. Чтобы увидеть, что у вас уже есть:

use mysql;
select Host, User, Password from user where user='joe';`

В моем случае оказалось, что у моего пользователя теперь правильный IP-адрес, но пароль также отсутствовал. Я вырезал пароль (он хеширован или что-то в этом роде), и это решило мою конкретную проблему с удаленным подключением:

update user set Password='5493845039485' where user='joe';

Еще одна вещь: в my.cnf вы можете установить «port = 3306» или любой другой порт, который вы планируете использовать.