Удаленные подключения Mysql Ubuntu

По какой-то причине я не смог удаленно подключиться к своему серверу MySQL. Я перепробовал все, и я все еще получаю ошибки.

[email protected]:/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 [email protected] IDENTIFIED BY 'XXXXX'; 
 GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'XXXXXX';' 

и еще ничего! Что я делаю не так?

РЕДАКТИРОВАТЬ: my.cnf закомментировал ip привязки.

Ответ 1

Чтобы открыть MySQL для чего-либо, кроме локального, вам понадобится следующая строка

Для 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.cnf. После запуска перейдите к терминалу и введите следующую команду.

lsof -i -P | grep :3306

Что-то вроде этого с вашим фактическим IP-адресом в xxx's

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

Если приведенный выше оператор вернется правильно, вы сможете принимать удаленных пользователей. Однако для удаленного пользователя для подключения с правильными привилегиями вам необходимо, чтобы этот пользователь создал как локальный хост, так и "%", как в.

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, чтобы все работало, но это очень удобно, когда все работает не так, как ожидалось.

Ответ 2

Добавить несколько точек на вершине превосходной должности apesa:

1) Вы можете использовать команду ниже, чтобы проверить ip-адрес, который прослушивает сервер mysql

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

Ответ 3

MySQL только слушает localhost, если мы хотим включить удаленный доступ к нему, тогда нам нужно внести некоторые изменения в файл my.cnf:

sudo nano /etc/mysql/my.cnf

Нам нужно прокомментировать строки привязки и пропустить-внешние блокировки:

#bind-address = 127.0.0.1
# skip-external-locking

После внесения этих изменений нам нужно перезапустить службу mysql:

sudo service mysql restart

Ответ 4

При тестировании в Windows не забудьте открыть порт 3306.