sonsur, можно смотреть мак-адреса на портах. По этим макам вычислить их IP. Смотреть характерные признаки компов: их имя, куда с них ходят, какими юзерами на сервер логинятся...
grant all on *.* to `root`@`%` identified by 'пароль';
или более частный случай:
grant all on *.* to `root`@`127.0.0.1` identified by 'пароль';
При заходе без хоста идёт коннект через юникс-сокет юзером root@localhost, при заходе с хостом по сети юзером root@%, где % - это "любой хост" (причём на localhost по unix-сокету % не распространяется). С точки зрения mysql это два разных юзера и у них даже могут пароли отличаться.
Но в дальнейшем советую не использовать root для доступа к базам, а вместо этого создавать отдельного пользователя с доступом только к нужной базе. Например, если на сервере крутится несколько проектов, то, ломанув один, можно получить доступ к базам всех. Плюс у root есть слишком много прав, благодаря которым можно получить данные не только из базы, но и из других файлов и приложений.
chemdev, обычно они сталкиваются с тем, что внутри функции глобальная переменная недоступна и узнают про global, ну а потом начинают его пихать уже на автомате.
NQUAREx, насколько понимаю, там код написан сразу на python с реализацией того же протокола по аналогии.
"Через URL" нельзя, так как у Телеграма нет такого функционала. Раз нельзя, то либо осваивать функционал, который можно, либо может быть реализовать себе маленький сервис с HTTP для своих нужд, который позволяет свои частные задачи.
Какое из слов в фразе "message to delete not found" непонятно?
Не надо использовать тут global! Это будет приводить к проблемам при обращению к боту разными юзерами, при перезапуске бота итд итп. Кроме того, пользователь может успеть два раза нажать на кнопу до удаления сообщения, при обработке второго нажатия сообщения уже не будет.
Правильно брать id сообщения, в котором нажали кнопку, из call.message, точнее call.message.id.
Также для данного сценария (пользователь нажал на кнопку и получил меню следующего уровня) обычно сообщение не удаляют, а редактируют (bot.edit_message_text). Это ещё и лучше выглядит для пользователя, потому то при удалении и отправке нового сообщения между этими операциями успевает пройти некоторое время.
NQUAREx, клиентский API Телеграм строго бинарный (протокол MTProto). Есть реализации не только tdlib, но и на других языках, в частности, telethon и pyrogram на python.
Не надо учить плохому! Не нужно без необходимости ловить Exception, нужно ловить конкретную ошибку. В данном случае ValueError. А то потом пользователи привыкают везде ловить Exception и вылавливают/игнорируют исключения, случившиеся в недрах какого-то кода безо всякой внятной причины.
vldkr, именно так, блочат именно у мобильных провайдеров. И весьма очевидно почему. Власти очень боятся собственного народа на улицах с возможностью хоть куда-то ходить мимо одобренных сайтов, а надо совсем скоро провести марионеточные выборы. По проводу же люди ходят из дома, а не на улице.
SidVisceos, метод можно просто дописать :) Когда мне понадобилось из update достать поле, которое библиотека не трансформировала в поле класса, я просто напрямую забрал его из json. Отказываться от библиотеки для этого необязательно.
Всё равно это топикстартера не оправдывает в его нежелании читать документацию.
Vadimayer, немного погрузился в тему. Оказывается jdbc не умеет по умолчанию коннектиться к unix socket, и там нужна всякая магия, см. например тут или тут.
Но я бы лучше всё же разобразся, всё ли там норм с базой по локальному tcp.
Для начала надо глянуть, слушает ли база порт 3306:
netstat -lnp|grep 3306
Если нет - надо это лечить. Если да, то пытаться зайти из клиента mysql. Я вижу в комментариях к ответу, что не получилось. Но вот что я не понял: а как делался grant, если юзером root не удаётся соединиться?
gidwin, в конце концов, приводить кусок кода, в котором возникает ошибка, чтобы мы тут могли его обсуждать. А docker-compose.yml тут никак не помогает.