Удаленные Подключения Mysql Ubuntu
по какой-то причине мне не удалось удаленно подключиться к моему серверу 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';`
и все равно ничего!
Что я делаю не так?
изменить:
мой.cnf прокомментировал привязку ip .
4 ответов:
чтобы открыть MySQL для чего-либо, кроме localhost, вам нужно будет иметь следующую строку
для mysql версии 5.6 и ниже
раскомментированы в
/etc/mysql/my.cnfи назначенный вашим компьютерам IP-адрес, а не loopbackдля mysql версии 5.7 и выше
раскомментированы в
/etc/mysql/mysql.conf.d/mysqld.cnfи назначенный вашим компьютерам IP-адрес, а не loopback#Replace xxx with your IP Address bind-address = xxx.xxx.xxx.xxxили добавить
bind-address = 0.0.0.0если вы не хотите указать IPзатем остановите и перезапустите MySQL с новым my.записи КНФ. После запуска перейдите к терминалу и введите следующую команду.
lsof -i -P | grep :3306это должно вернуться что-то вроде этого с вашим фактическим IP в xxx-х
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)если приведенная выше инструкция возвращает правильно, вы сможете принимать удаленных пользователей. Однако для удаленного пользователя для подключения к правильным priveleges вам нужно, чтобы этот пользователь был создан в обоих localhost и '%' в качестве.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass'; CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';затем,
GRANT ALL ON *.* TO 'myuser'@'localhost'; GRANT ALL ON *.* TO 'myuser'@'%';и наконец,
FLUSH PRIVILEGES; EXIT;если у вас нет того же пользователя, созданного выше, при локальном входе в систему вы можете наследовать базовые привилегии localhost и иметь проблемы с доступом. Если вы хотите ограничить доступ myuser, вам нужно будет прочитать синтаксис инструкции GRANT здесь если вы пройдете через все это и все еще будете иметь проблемы, опубликуйте некоторые дополнительные ошибки и мои.cnf соответствующая линия.
Примечание: Если lsof не возвращается или не найден, вы можете установить его здесь на основе вашего дистрибутива Linux. Вам не нужно lsof, чтобы заставить вещи работать, но это очень удобно, когда вещи не работают, как ожидалось.
добавить несколько пунктов на вершине отличный пост апеса:
1) Вы можете использовать команду ниже, чтобы проверить ip-адрес mysql server слушает
netstat -nlt | grep 3306 sample result: tcp 0 0 xxx.xxx.xxx.xxx:3306 0.0.0.0:* LISTEN2) Использовать
FLUSH PRIVILEGESпринудительно загружать таблицы грантов, если по какой-то причине изменения не вступают в силу немедленноGRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION; GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT;3) если включен брандмауэр netfilter (
sudo ufw enable) на компьютере сервера mysql выполните следующие действия, чтобы открыть порт 3306 для удаленного доступа:sudo ufw allow 3306проверить статус используя
sudo ufw status4) После того, как удаленное соединение установлено, его можно проверить на клиентской или серверной машине с помощью команд
netstat -an | grep 3306 netstat -an | grep -i established
MySQL слушает только localhost, если мы хотим включить удаленный доступ к нему, то нам нужно внести некоторые изменения в my.cnf file:
sudo nano /etc/mysql/my.cnfнам нужно закомментировать привязку-адрес и пропустить-внешнюю блокировку линий:
#bind-address = 127.0.0.1 # skip-external-lockingпосле внесения этих изменений, нам нужно перезапустить службу MySQL:
sudo service mysql restart
Comments