Вы используете MySQL Workbench, но судя по выходным данным при подключении к порту базы данных с помощью браузера, база данных на самом деле является MariaDB , которая является конкурирующей вилкой MySQL.
Поскольку MySQL Workbench разрабатывается совместно с MySQL, разработчики, очевидно, не могут гарантировать полную совместимость с продуктами конкурентов.
(Однако на практике любая функция MySQL Workbench, основанная на базовых функциях базы данных MySQL, разработанной до форка, вероятно, будет работать нормально. С новыми функциями, появившимися после разветвления MariaDB, вам, возможно, придется быть более осторожным.)
Порт 3306 является портом по умолчанию для MySQL/MariaDB и предназначен для прямого соединения между приложениями и базой данных. :он не обеспечивает доступ по протоколу HTTP. Вот почему ваша попытка подключения с помощью браузера привела к появлению строки двоичного мусора с некоторыми фрагментами текста, смешанного в :, он не предназначен для подключения к браузеру.
Причина в том, что вы неправильно цитируете свой ввод . Параметр, который вы передаете скрипту, содержит $
, а параметр вы передаете без кавычек (, т.е. просто как NS3#$xX$56M
), что означает, что он будет подвергаться раскрытию переменной . Это означает, что оболочка, интерпретирующая ваш
sh test.sh e NS3#$xX$56M
Команда для вызова сценария test.sh
сначала попытается заменить часть $xX
содержимым переменной оболочки (, либо определенной локально, либо экспортированной как переменная среды )xX
, и -, поскольку, вероятно, isn't any -заменяет эту часть словом «ничего» перед тем, как передать результат вашему сценарию. Однако это правильное функционирование оболочки, и, следовательно, в вашем скрипте (нет ничего принципиально неправильного, как заметил @roaima ).
Чтобы предотвратить эту проблему, заключите строку в одинарные -кавычки, которые отключат любые расширения:
sh test.sh e 'NS3#$xX$56M'
В качестве общего примечания к вашему сценарию:
test
вместоTEST
)-это предотвратит нежелательные конфликты между переменными вашего скрипта и, возможно, важными переменными среды. shellcheck
, также доступную как отдельная программа во многих дистрибутивах Linux, для "проверки -чтения" ваших скриптов; это поможет предотвратить многие ошибки. sh test.sh....
Это переопределит строку#!
-и будет использовать оболочку sh
, которая во многих системах будет совместимой с POSIX -оболочкой, которая не понимает оператор [[... ]]
, например. Либо сделайте его исполняемым и назовите его как ./test.sh
, либо явно используйте bash test.sh
.