1

Я хочу получить доступ к MySQL удаленно:

GRANT ALL ON *.* TO thufir@'192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

Когда Workbench не удалось подключиться, я посмотрел с помощью ping и telnet:

Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ ping 192.168.0.21
PING 192.168.0.21 (192.168.0.21): 56 data bytes
64 bytes from 192.168.0.21: icmp_seq=0 ttl=64 time=0.274 ms
64 bytes from 192.168.0.21: icmp_seq=1 ttl=64 time=0.499 ms
^C
--- 192.168.0.21 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.274/0.387/0.499/0.113 ms
Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ telnet 192.168.0.21
Trying 192.168.0.21...
^C
Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ telnet 192.168.0.21 3306
Trying 192.168.0.21...
^C
Brents-MacBook:~ thufir$ 

Я устанавливаю coreutils и мне нужно будет научиться использовать netstat на Mac и lsof - по-видимому, все по-другому.

Сервер arrakis работает под управлением OpenSuSE ; это закрыло порты?

Примечание: я не установил MySQL на Mac, он выдает ошибки...

-------------------------------------------------- ----------------------------Обновить

MariaDB [mysql]> 
MariaDB [mysql]> GRANT ALL ON *.* TO `thufir`@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> select host, user, grant_priv from user;
+------------+--------+------------+
| host       | user   | grant_priv |
+------------+--------+------------+
| localhost  | root   | Y          |
| linux-k7qk | root   | Y          |
| 127.0.0.1  | root   | Y          |
| ::1        | root   | Y          |
| localhost  |        | N          |
| linux-k7qk |        | N          |
| %          | cron   | N          |
| localhost  | cron   | N          |
| localhost  | custom | N          |
| %          | custom | N          |
| %          | slave  | N          |
| %          | root   | N          |
| %          | thufir | N          |
+------------+--------+------------+
13 rows in set (0.00 sec)

MariaDB [mysql]> 

1 ответ1

2

Чтобы включить сетевое взаимодействие в MySQL, необходимо убедиться, что две вещи корректно обрабатываются: MySQL предоставляет и сам MySQL должен включать сетевые функции:

Настройка грантов MySQL.

Ваша команда GRANT мне кажется странной:

GRANT ALL ON *.* TO thufir@'192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

Почему '192.168.0.16' в одинарных кавычках, а пользователь - нет? Может показаться, что '192.168.0.16' является литералом с одинарными кавычками для хоста. Поэтому попробуйте сделать это так:

GRANT ALL ON *.* TO 'thufir@192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

Но когда я даю такие разрешения, есть две команды, и они структурированы так:

GRANT USAGE ON *.* TO 'thufir@192.168.0.16' IDENTIFIED BY 'thufir';
GRANT ALL PRIVILEGES ON *.* TO 'thufir@192.168.0.16';

И затем после установки грантов вы должны очистить таблицу привилегий, чтобы получить новые привилегии для загрузки:

FLUSH PRIVILEGES;

И тебе должно быть хорошо идти.

Включить сеть MySQL.

Но, тем не менее, проверьте ваш my.cnf и, если есть настройка bind-address как это:

bind-address = 127.0.0.1

Это связывало бы MySQL с localhost (то есть: 127.0.0.1) по умолчанию, и это нормальное поведение безопасности «из коробки» для MySQL, поскольку уязвимость серверов баз данных в сети может представлять угрозу безопасности. Так что в этом случае - поскольку вам нужно включить сеть - вы должны закомментировать это так:

#bind-address = 127.0.0.1

А также убедитесь, что skip-networking отключен, закомментировано так:

#skip-networking

Затем перезапустите сервер MySQL, чтобы новые настройки вступили в силу.

Постскриптум.

Теперь, после всего сказанного, команда MySQL GRANT вы используете, использует IP-адрес 192.168.0.16 но все ваши тесты ping и telnet предназначены для 192.168.0.21 . Так какой это IP-адрес? Когда вы устанавливаете гранты в MySQL, вы делаете это на основе IP-адреса клиента ; не IP-адрес сервера.

Таким образом, если у сервера есть IP-адрес 192.168.0.16 а у клиента - IP-адрес 192.168.0.21 , команда MySQL GRANT должна использовать 192.168.0.21 а не 192.168.0.16 как показывают ваши примеры. Может в этом проблема?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .