Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 11.05.16 22:08
Оценка:
Вообще то к базе нужен доступ из С#, но проблема не в этом, а в настройках сервера. Пример на С# работает почти аналогично.

Итак, для теста есть домашний никсный сервер. На нём есть root/admin пользователь и dbUser, который состоит в группе администраторов. Также есть root и dbUser как пользователи MySQL (Вообщето на сервере стоит MariaDB, но говорят что это одно и тоже)
На виндовс клиенте берем HeidiSQL с MySQL(SSH Tunnel).
Вариант 1. Для создания туннеля пользуем admin, для базы root или dbUser — всё работает
Вариант 2. Для создания туннеля пользуем dbUser, для базы также dbUser или root — не работает

Если заходить через SSH терминал как dbUser, а затем запускать MySQL через командную строку как dbUser, то доступ к базе есть.
Что еще проверять не знаю, с никсами почти не работаю, как и с администрированием MySQL.

Куда копать и что можно еще проверить? Каких привилегий может не хватать dbUser?
Re: Проблемы удаленного доступа к MySQL
От: Anton Batenev Россия https://github.com/abbat
Дата: 12.05.16 07:37
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> Куда копать и что можно еще проверить? Каких привилегий может не хватать dbUser?


Покажи как точно ты запускаешь консоль MySQL и параметры соединения при тунелировании, а так же какую ошибку выдает MySQL, когда "не работает"? Так же вывод запросов:

SELECT `user`, `host` FROM `mysql`.`user`;
SELECT `user`, `host`, `db` FROM `mysql`.`db`;
Бэкапимся на Яндекс.Диск
Re[2]: Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 12.05.16 17:10
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, AlexNek, Вы писали:


AN>> Куда копать и что можно еще проверить? Каких привилегий может не хватать dbUser?


AB>Покажи как точно ты запускаешь консоль MySQL и параметры соединения при тунелировании, а так же какую ошибку выдает MySQL, когда "не работает"? Так же вывод запросов:


  Вариант когда всё работает



  Вариант когда не работает



Ошибка, тоже самое выдает стандартный драйвер. DevArt выдает, что получено мало данных


ELECT `user`, `host` FROM `mysql`.`user`;
"user"    "host"
"DBUser"    "%"
"DBUser"    "127.0.0.1"
"DBUser"    "localhost"
"DBUser"    "server-name"
"root"            "127.0.0.1"
"root"            "server-name"
"root"      "localhost"
------------------------------
SELECT `user`, `host`, `db` FROM `mysql`.`db`;
"user"    "host"    "db"
"DBUser"    "%"    "mantis"
"DBUser"    "127.0.0.1"    "mantis"
"DBUser"    "server-name"    "mantis"
"DBUser"    "localhost"    "mantis"
Re[2]: Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 12.05.16 17:20
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, AlexNek, Вы писали:


AN>> Куда копать и что можно еще проверить? Каких привилегий может не хватать dbUser?


AB>Покажи как точно ты запускаешь консоль MySQL

mysql -p DBUser
пароль

Могу попробовать вариант без пароля он тоже был и тоже не работал.
Но нужно иметь в виду что машинка пережила несколько обновлений системы, после которых многие вещи пришлось восстанавливать.
Вначале они пути все обнулили, потом начали увеличивать уровни безопасности: запретили логин руту, повыкидали всё что не принадлежит системе, запретили абсолютные пути к изображениям и прочее что еще не нашёл.
Re[3]: Проблемы удаленного доступа к MySQL
От: Anton Batenev Россия https://github.com/abbat
Дата: 12.05.16 17:25
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> Ошибка, тоже самое выдает стандартный драйвер. DevArt выдает, что получено мало данных


Так, а ты точно с ним соединяешься во втором случае? Проходит ли установка соединения через

telnet 127.0.0.1 3306


? (вместо 3306 — твой локальный порт). Если да, выполни еще команду

mysql> SHOW GRANTS FOR 'DBUser'@'127.0.0.1';
... в первом классе мне говорили, что нужно делиться, а теперь говорят, что это незаконно ...
Re[3]: Проблемы удаленного доступа к MySQL
От: Anton Batenev Россия https://github.com/abbat
Дата: 12.05.16 17:27
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> AB>Покажи как точно ты запускаешь консоль MySQL

AN> mysql -p DBUser
AN> пароль

mysql -u DBUser -p <имя_базы>


То, как ты написал — это соединение с базой DBUser.
... в первом классе мне говорили, что нужно делиться, а теперь говорят, что это незаконно ...
Re[4]: Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 12.05.16 19:41
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, AlexNek, Вы писали:


AN>> AB>Покажи как точно ты запускаешь консоль MySQL

AN>> mysql -p DBUser
AN>> пароль

AB>
AB>mysql -u DBUser -p <имя_базы>
AB>


AB>То, как ты написал — это соединение с базой DBUser.

Сорри, написал, как помнил, не сверялся с записями. Вот из-за этого и не люблю Никсы, что нужно постоянно куда-то смотреть. Каждый раз когда нужно VI закрыть приходится гуглу спрашивать.
Ну отчего на второй ESC не спросить пользователя что надо.
Re[4]: Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 12.05.16 19:44
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, AlexNek, Вы писали:


AN>> Ошибка, тоже самое выдает стандартный драйвер. DevArt выдает, что получено мало данных


AB>Так, а ты точно с ним соединяешься во втором случае? Проходит ли установка соединения через


Через Heidi такой финт не пройдёт сделал SSH сессию на C#
mysql --user=DBUser --password=xxxx mantis
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 1552
Server version: 5.5.47-MariaDB Source distribution

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [mantis]>
MariaDB [mantis]>
SHOW GRANTS FOR 'DBUser'@'127.0.0.1';
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for DBUser@127.0.0.1                                                                                                                                                                      |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'DBUser'@'127.0.0.1' IDENTIFIED BY PASSWORD 'yyyyy' WITH GRANT OPTION                                                         |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `mantis`.* TO 'DBUser'@'127.0.0.1' |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

MariaDB [mantis]>


Devart.Common.w occurred
  _HResult=-2146233088
  _message=Read less bytes than expected. Probably the connection was forcefully closed by the remote server.
  HResult=-2146233088
  IsTransient=false
  Message=Read less bytes than expected. Probably the connection was forcefully closed by the remote server.
  Source=Devart.Data.MySql
  StackTrace:
       at Devart.Common.q.c(Byte[] A_0, Int32 A_1, Int32 A_2)
  InnerException:
Re: Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 12.05.16 22:12
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Вообще то к базе нужен доступ из С#, но проблема не в этом, а в настройках сервера. Пример на С# работает почти аналогично.


Еще одну интересную особенность нашел. В либе SSH есть класс для перенаправления портов "ForwardedPortLocal"
И когда в параметрах пишешь "localhost" используется соединение по IPV6 (::1), а когда "127.0.0.1" то IPV4
При этом во втором случае DevArt драйвер генерирует
System.Net.Sockets.SocketException occurred
  _HResult=-2147467259
  _message=No connection could be made because the target machine actively refused it
  HResult=-2147467259
  IsTransient=false
  Message=No connection could be made because the target machine actively refused it 127.0.0.1:3306
  Source=System
  ErrorCode=10061
  NativeErrorCode=10061

но игнорирует его и соединение происходит, а оригинальный драйвер на этом и обрывается.
В первом случае DevArt соединяется без никаких исключений, а оригинальный драйвер IPV6 видимо не понимает
Также порт форвардинг показывает результат (там есть эвент RequestReceived) для IPV6, но не для IPV4

Не могу только понять отчего оригинальный драйвер начинает работать, когда активна терминальная root сессия PUTTY с сервером. И при активной сессии PUTTY второй пользователь также может работать с базой.
Получается что PUTTY открывает какой то канал. Или ошибка в системе, когда второй туннель получает привилегии первого.
Однако если PUTTY соединяется с сервером как dbUser, то опять валят ошибки
System.IO.EndOfStreamException occurred
  _HResult=-2147024858
  _message=Attempted to read past the end of the stream.
  HResult=-2147024858
  IsTransient=false
  Message=Attempted to read past the end of the stream.
  Source=MySql.Data
  StackTrace:
       at MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
  InnerException:
Re[5]: Проблемы удаленного доступа к MySQL
От: Anton Batenev Россия https://github.com/abbat
Дата: 12.05.16 23:52
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> Через Heidi такой финт не пройдёт сделал SSH сессию на C#


Честно говоря, я уже запутался что и как работает, а что нет. А названия программ мне абсолютно ни о чем не говорят — в линуксе все как-то на много проще. Ты можешь убедиться, что не работает именно серверная часть сделав проброс порта из линукса? Скажем, взять какой-нибудь TurnKey MySQL Live CD, загрузиться с него, дальше в консоли:

$ ssh -L 3307:127.0.0.1:3306 your.server.com


В соседнем терминале (переключаются обычно по CTRL + ALT + F1,F2,etc)

$ mysql -u your_user -p -P 3307 -h 127.0.0.1 your_database


Если соединение проходит успешно, то проблема не на серверной стороне. Если нет, то копируем ошибку и смотрим дальше.

P.S. Вместо реальной загрузки с LiveCD можно загрузиться в VirtualBox или любую систему виртуализации, которая способна грузиться с ISO.
Бэкапимся на Яндекс.Диск
Re[3]: Проблемы удаленного доступа к MySQL
От: hrensgory Россия  
Дата: 13.05.16 06:47
Оценка:
On 12.05.2016 20:20, AlexNek wrote:

> Но нужно иметь в виду что машинка пережила несколько обновлений системы,

> после которых многие вещи пришлось восстанавливать.
> Вначале они пути все обнулили, потом начали увеличивать уровни
> безопасности: запретили логин руту, повыкидали всё что не принадлежит
> системе, запретили абсолютные пути к изображениям и прочее что еще не нашёл.

Может dbUser-у просто запрещён порт форвардинг в конфиге ssh сервера?

Точнее, может быть он разрешён admin или какой-то группе, куда он
входит, а остальным запрещён.

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 13.05.16 17:32
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, AlexNek, Вы писали:


AN>> Через Heidi такой финт не пройдёт сделал SSH сессию на C#


AB>Честно говоря, я уже запутался что и как работает, а что нет.

Под ssh сессии с админом работает все
Под ssh сессим в dbUser не работает
С открытой ssh сессии с админом из по винды работает.
AB>А названия программ мне абсолютно ни о чем не говорят — в линуксе все как-то на много проще.
Кому как. Я вот раз 5 пытался вслепую пароль набрать — он же гад вообще ничего не показывает
Putty — SSH терминал под виндой, один раз всё набрал и потом только двойной клик мышой

Ты можешь убедиться, что не работает именно серверная часть сделав проброс порта из линукса? Скажем, взять какой-нибудь TurnKey MySQL Live CD, загрузиться с него, дальше в консоли:

AB>
AB>$ ssh -L 3307:127.0.0.1:3306 your.server.com
AB>

С горем пополам зашел, нужно набирать admin@your.server.com — root то запрещен

AB>В соседнем терминале (переключаются обычно по CTRL + ALT + F1,F2,etc)

Это совсем не понимаю, у меня на винде по этому ноткею оказывается отключается второй монитор. Захожу из виртуалки турнкея.
Может просто в этой сессии набирать вторую команду?
PS:После этих экспериментов вообще перестало всё работать
bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 3307
Could not request local forwarding.
Re[4]: Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 13.05.16 19:12
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>Может dbUser-у просто запрещён порт форвардинг в конфиге ssh сервера?


H>Точнее, может быть он разрешён admin или какой-то группе, куда он

H>входит, а остальным запрещён.
А как это проверить?

...
гружу для тестов
https://sourceforge.net/projects/nst/files/
Re[5]: Проблемы удаленного доступа к MySQL
От: hrensgory Россия  
Дата: 13.05.16 19:56
Оценка:
13.05.2016 22:12, AlexNek пишет:

> H>Может dbUser-у просто запрещён порт форвардинг в конфиге ssh сервера?

>
> H>Точнее, может быть он разрешён admin или какой-то группе, куда он
> H>входит, а остальным запрещён.
> А как это проверить?

Заглянуть в /etc/ssh/sshd_config или как его там на linux сервере.

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 13.05.16 22:12
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>13.05.2016 22:12, AlexNek пишет:


>> H>Может dbUser-у просто запрещён порт форвардинг в конфиге ssh сервера?

>>
>> H>Точнее, может быть он разрешён admin или какой-то группе, куда он
>> H>входит, а остальным запрещён.
>> А как это проверить?

H>Заглянуть в /etc/ssh/sshd_config или как его там на linux сервере.

Спасибо, уже нашел и добавил,но никаких изменений
Match User dbUser
AllowTcpForwarding yes

a known_hosts для пользователей имеет значение? Там только имя моего виртуального домена

В логах удалось найти только это
sshd[17374]: pam_unix(sshd:session): session opened for user dbUser by (uid=0)
sshd[17374]: error: mm_request_receive: socket closed
sshd[17374]: pam_unix(sshd:session): session closed for user dbUser
Re[6]: Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 13.05.16 23:43
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, AlexNek, Вы писали:


AN>> Через Heidi такой финт не пройдёт сделал SSH сессию на C#


AB>Честно говоря, я уже запутался что и как работает, а что нет. А названия программ мне абсолютно ни о чем не говорят — в линуксе все как-то на много проще. Ты можешь убедиться, что не работает именно серверная часть сделав проброс порта из линукса? Скажем, взять какой-нибудь TurnKey MySQL Live CD, загрузиться с него, дальше в консоли:


AB>
AB>$ ssh -L 3307:127.0.0.1:3306 your.server.com
AB>


AB>В соседнем терминале (переключаются обычно по CTRL + ALT + F1,F2,etc)


AB>
AB>$ mysql -u your_user -p -P 3307 -h 127.0.0.1 your_database
AB>


AB>Если соединение проходит успешно, то проблема не на серверной стороне. Если нет, то копируем ошибку и смотрим дальше.


AB>P.S. Вместо реальной загрузки с LiveCD можно загрузиться в VirtualBox или любую систему виртуализации, которая способна грузиться с ISO.

С СД всё замечательно получилось, хорошо бы только пароль в команде набирать, чтобы и видеть и повторять. Потвердилась теория что не хватает привилегий

ДБ terminal
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 "internal error/check (not system error)

SSH terminal
channel 3: open failed: administratively prohibited:open failed

C admin все нормально открывается.
Re[6]: Проблемы удаленного доступа к MySQL
От: AlexNek  
Дата: 14.05.16 23:32
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>13.05.2016 22:12, AlexNek пишет:


>> H>Может dbUser-у просто запрещён порт форвардинг в конфиге ssh сервера?

>>
>> H>Точнее, может быть он разрешён admin или какой-то группе, куда он
>> H>входит, а остальным запрещён.
>> А как это проверить?

H>Заглянуть в /etc/ssh/sshd_config или как его там на linux сервере.

AllowTcpForwarding yes
Разрешил глобально и одна ошибка ушла из SSH терминала и могу подсоединятся с некоторыми комбинациями настроек.
Но access denied из под mySQL остался.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.