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

16

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

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

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

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

MySQL Error Nr. 2003

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

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

Пинг в порядке, хотя

Джадер Диас
источник

Ответы:

22

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

Откройте ваш my.cnf (обычно /etc/mysql/my.cnf) и измените строку с надписью

bind = 127.0.0.1

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

Хафдан
источник
теперь получена другая ошибка: не удалось подключиться к хосту «192.168.0.2». MySQL Error Nr. 1130 Хосту "what-vubuntu.local" не разрешено подключаться к этому серверу MySQL
Jader Dias
user @ localhost и user @ <hostname> разные. Вы должны добавить пользователя, чтобы иметь возможность подключаться с удаленных хостов.
Джеймс
Это не проблема. Я сделал это, и я все еще получаю ошибку.
Cerin
Должно ли это быть bind-address?
Томас Веллер
5

В дополнение к ответу на полдана мне пришлось выполнить следующую команду 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

Джадер Диас
источник
2

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

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

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

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

Однако, прежде чем сделать это, убедитесь, что у вас есть пользователь в базе данных «mysql», в котором «Host» настроен на ваш 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» или любой другой порт, который вы планируете использовать.

PJ Brunet
источник