Я только что установил новый сервер Ubuntu с MySQL (Percona 5.5), но он отказывается принимать подключения от удаленных хостов
Вот что произойдет, если я попытаюсь подключиться к этому серверу удаленно:
mysql -h10.0.0.2 -uroot -pmypassowrd
ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.0.2' (111)
telnet 10.0.0.2 3306
Trying 10.0.0.2...
telnet: Unable to connect to remote host: Connection refused
Когда я проверил, слушает ли mysql удаленные соединения, я увидел это:
sudo netstat -ntlup | grep mysql
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 127018/mysqld
Как вы можете видеть, он говорит, 127.0.0.1:3306
что означает «Я принимаю только локальные соединения».
Я проверил мои skip_networking
и bind-address
переменные - все выключено:
mysql> show variables like '%skip_networking%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> show variables like '%bind%';
Empty set (0.00 sec)
У меня есть другой сервер с абсолютно такой же конфигурацией, и он прекрасно работает:
sudo netstat -ntlup | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2431/mysqld
В чем может быть причина этого? Как заставить mysql реагировать на удаленные соединения?
bind_address
доступна только с версии 5.6 ( bugs.mysql.com/bug.php?id=44355 ), поэтому она вернет пустой набор в v5.5, даже если он установлен.Ответы:
Попробуйте добавить
bind-address = 0.0.0.0
в свой[mysqld]
разделmy.cnf
и перезапустите mysqld .источник
/etc/mysql/mysql.conf.d/mysqld.cnf
Это может быть связано с таблицей пользователей базы данных mysql (используйте mysql; покажите таблицы;). Если привязка к 0.0.0.0 у вас не работает, попробуйте указать вашему пользователю хост «%» вместо «localhost» в этой таблице.
Например, попробуйте создать пользователя как:
Муравей пытается связаться с этим пользователем.
источник
Когда все остальное терпит неудачу, и вы уверены, что сервер прослушивает порт по умолчанию, и вы пытаетесь отчаянно подключиться к клиенту mysql с другого хоста, попробуйте указать порт в URL-адресе команды mysql.
Как это ни странно, мне пришлось использовать следующий синтаксис:
Я нашел это (ошибка?) Совершенно случайно (после того, как потерял свои волосы :)).
Моя установка: debian jessie, свежий mysql 5.7.18, пользователи / db созданы, bind-адрес закомментирован, mysqld перезапущен
источник
У меня только была эта проблема, и моя проблема, казалось, была связана с брандмауэром. Кстати, спасибо @Temnovit за команды по устранению неполадок Mysql.
Я использовал netstat, чтобы сказать, что сервер работает и на правильном порту. Я также мог сказать, что мой сервер не принимает соединения через этот порт с помощью простой команды telnet.
После другого полезного ответа на команды брандмауэра Fedora я смог открыть правильные порты.
Моя команда telnet была тогда успешной.
Если у вас все еще есть проблемы, скорее всего это проблема с разрешениями пользователей.
источник
Я
mariadb
установил. Решением было изменитьbind-address
расположение/etc/mysql/mariadb.conf.d/50-server.cnf
источник
Решение, описанное в приведенной ниже ссылке, должно решить вашу проблему http://www.debianhelp.co.uk/remotemysql.htm
источник