По какой-то причине мне не удалось удаленно подключиться к моему серверу MySQL. Я все перепробовал и все еще получаю ошибки.
root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)
Теперь я пробовал бежать
GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX';
GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';`
и все равно ничего! Что я делаю не так?
EDIT : my.cnf
закомментировал привязку ip.
Ответы:
Чтобы предоставить MySQL кому-либо другому, кроме localhost, вам понадобится следующая строка
Для mysql версии 5.6 и ниже
раскомментированный
/etc/mysql/my.cnf
и назначенный вашим компьютерам IP-адрес, а не loopbackДля mysql версии 5.7 и выше
раскомментированный
/etc/mysql/mysql.conf.d/mysqld.cnf
и назначенный вашим компьютерам IP-адрес, а не loopbackИли добавьте,
bind-address = 0.0.0.0
если вы не хотите указывать IPЗатем остановите и перезапустите MySQL с новой записью my.cnf. После запуска перейдите к терминалу и введите следующую команду.
Это должно получиться примерно так с вашим фактическим IP-адресом в xxx
Если приведенный выше оператор вернется правильно, вы сможете принимать удаленных пользователей. Однако для того, чтобы удаленный пользователь мог подключиться с правильными привилегиями, вам необходимо, чтобы этот пользователь был создан как на локальном хосте, так и в '%', как в.
затем,
и наконец,
Если у вас нет такого же пользователя, как указано выше, при локальном входе в систему вы можете унаследовать базовые привилегии localhost и иметь проблемы с доступом. Если вы хотите ограничить доступ myuser, вам нужно будет прочитать синтаксис оператора GRANT ЗДЕСЬ. Если вы прошли через все это, но у вас все еще остались проблемы, опубликуйте дополнительный вывод ошибок и соответствующие строки my.cnf.
ПРИМЕЧАНИЕ. Если lsof не возвращается или не обнаруживается, вы можете установить его ЗДЕСЬ в зависимости от вашего дистрибутива Linux. Вам не нужен lsof для работы, но он очень удобен, когда что-то работает не так, как ожидалось.
источник
lsof -i -P | grep :3306
этим, это не сработало, но удаленное соединение по-прежнему работает нормально без этого подтверждения, не обращайте внимания, если вы не видите правильного вывода.sudo lsof -i -P
будет намного полезнееlsof -i -P
(при условии, что вы вошли в систему как непривилегированный пользователь).lsof -i -P | grep :3306
ничего не возвращает!Добавьте несколько пунктов к отличному посту apesa:
1) Вы можете использовать команду ниже, чтобы проверить IP-адрес, который прослушивает сервер mysql.
2) Используйте
FLUSH PRIVILEGES
для принудительной загрузки таблиц грантов, если по какой-то причине изменения не вступают в силу немедленно.3) Если брандмауэр netfilter включен (
sudo ufw enable
) на сервере mysql, выполните следующие действия, чтобы открыть порт 3306 для удаленного доступа:проверить статус с помощью
4) После того, как удаленное соединение установлено, его можно проверить на клиентском или серверном компьютере с помощью команд
источник
sudo ufw status
!!netstat -nlt | grep 3306
возвращается пустымMySQL слушает только localhost, если мы хотим разрешить удаленный доступ к нему, нам нужно внести некоторые изменения в файл my.cnf:
Нам нужно закомментировать строки адреса привязки и пропуска внешней блокировки:
После внесения этих изменений нам необходимо перезапустить службу mysql:
источник
skip-external-locking
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
При тестировании в Windows не забудьте открыть порт 3306.
источник
Вы используете ubuntu 12 (довольно старый)
Сначала откройте файл /etc/mysql/mysql.conf.d/mysqld.cnf ( /etc/mysql/my.cnf в Ubuntu 14.04 и более ранних версиях
В [mysqld] найдите строку, bind-address = 127.0.0.1 и измените ее на, bind-address = 0.0.0.0 или прокомментируйте ее.
Затем перезапустите сервер Ubuntu MysQL.
systemctl restart mysql.service
Теперь Ubuntu Server разрешит удаленный доступ к серверу MySQL, но все же вам нужно настроить пользователей MySQL, чтобы разрешить доступ с любого хоста.
Пользователь должен иметь
'username'@'%'
все необходимые грантыЧтобы убедиться, что сервер MySQL прослушивает все интерфейсы, выполните команду netstat следующим образом.
netstat -tulnp | grep mysql
Надеюсь, это сработает!
источник