Удаленные Подключения 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 и ниже
uncommented in /etc/mysql/my.cnf
и назначается на ваши компьютеры IP-адрес, а не loopback
для mysql версии 5.7 и выше
uncommented in /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.запись cnf. После запуска перейдите к терминалу и введите следующую команду.
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 здесь если вы пройдете через все это и все еще имеете проблемы, опубликуйте некоторые дополнительные выходные данные об ошибках и my.cnf соответствующая линия.
Примечание: Если lsof не возвращается или не найден, вы можете установить его здесь на основе вашего дистрибутива Linux. Вам не нужно lsof, чтобы заставить вещи работать, но это очень удобно, когда все работает не так, как ожидалось.
добавьте несколько очков поверх отличного поста apesa:
1) Вы можете использовать команду ниже, чтобы проверить ip-адрес mysql server слушает
netstat -nlt | grep 3306
sample result:
tcp 0 0 xxx.xxx.xxx.xxx:3306 0.0.0.0:* LISTEN
2) Использовать 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 status
4) Как только удаленное соединение установлено, его можно проверить в любом клиенте или машине сервера используя команды
netstat -an | grep 3306
netstat -an | grep -i established
MySQL слушает только localhost, если мы хотим включить удаленный доступ к нему, то нам нужно внести некоторые изменения в мой.cnf файл:
sudo nano /etc/mysql/my.cnf
нам нужно прокомментировать строки bind-address и skip-external-locking:
#bind-address = 127.0.0.1
# skip-external-locking
после внесения этих изменений нам необходимо перезапустить службу mysql:
sudo service mysql restart