it-swarm.com.ru

Удаленные подключения 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.

89

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

Для MySQL версии 5.6 и ниже

не комментируется в /etc/mysql/my.cnf и присваивается вашим компьютерам IP-адрес, а не зацикливание

Для mysql версии 5.7 и выше

не комментируется в /etc/mysql/mysql.conf.d/mysqld.cnf и присваивается вашим компьютерам IP-адрес, а не зацикливание

#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 в ххх

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

324
apesa

Добавьте несколько пунктов поверх отличного поста 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) Если на компьютере с сервером MySQL включен брандмауэр netfilter (Sudo ufw enable), выполните следующие действия, чтобы открыть порт 3306 для удаленного доступа:

Sudo ufw allow 3306

проверить статус с помощью

Sudo ufw status

4) После того как удаленное соединение установлено, его можно проверить на клиентском или серверном компьютере с помощью команд

netstat -an | grep 3306
netstat -an | grep -i established
34
Jonathan L

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

Sudo nano /etc/mysql/my.cnf

Нам нужно закомментировать строки bind-address и skip-external-lock:

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

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

Sudo service mysql restart
7
Vinh Lee

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

1
marw