Простая замена phpMyAdmin для гиков

    Довольно часто возникает ситуация, когда надо быстренько запустить пару запросов к MySQL базе у клиента на сервере. При этом есть только FTP и параметры соединения с СУБД. Самый простой выход — загрузить туда phpMyAdmin, ну а дальше дело техники. Обычно все это проиcходит на фоне того, что у клиента уже установлена какая-то CMS — WordPress, Drupal, Joomla…

    Я люблю простые, красивые и удобные вещи. Я тепло отношусь к phpMyAdmin но в 90% моих Use Cases мне он не нужен. Нужно что-то простое. В идеале такое, что можно просто залить на сервер и открыть в браузере — не настраивая.

    Пара вечеров и пакет готов.

    Так как в чем-то это может быть изобретением велосипеда, да и с фантазией не очень — проект так и назвал — Bike.


    Что он умеет:
    — Bike сам разберется, в подпапку чего его загрузили — WordPress, Drupal, Joomla и приконектится к базе. Конечно можно прописать ему connection parameters вручную.
    — Bike хранит последние 40 запросов в LocalStorage — откроете его завтра и если не чистили кеш — запросы будут на месте.
    — Можно запросу дать имя и сохранить в permanent storage. Bike не создает никаких таблиц, так что для постоянного хранения придется одну папочку на сервере открыть на запись. Кстати весьма удобно, если вы хотите клиенту подготовить какой-то отчет — напишите запрос, дайте ему имя, сохраните и все. Клиент откроет Bike и запустит его.
    — Часто пользуетесь какими-то sql? Есть read-only библиотека запросов — добавьте их туда и они всегда будут с вами в разделе Library.
    — Никаких FORM POST — мы любим AJAX.
    — Bike достаточно неплохо выглядит (IMHO)

    Ну вот, собственно, и все. Скачать можно тут https://github.com/jagermesh/bike. Там же есть ссылка на демо.

    UPD: Работает только на PHP 5.3+

    UPD2: По мотивам комментариев — закомитил на github packed версию — всего два файла загружаете на сервер и идете на /install.php.
    Поделиться публикацией

    Комментарии 116

      +2
      Очень неплохо на первый взгляд.
        +17
        Да, но 350 файлов и почти 4 МБ размер для выполнялки SQL-запросов — перебор, ИМХО.
          +3
          Ну я не стал изобретать два велосипеда и взял готовый фреймворк для реализации, а там папка 3rdparty скриптов 321 файл :(

          Конечно же огромная часть из них в этом проекте не нужна — займусь чисткой! Сделаем действительно маленький bundle.
            +1
            Для такого простого функционала не хватает лишь одного — чтоб все это содержалось в одном файлике + один файлик для конфига (+ввод конфига руками если его нет) =) Вот тогда цены ему не будет. Залил два файла/один файл, и работаешь себе без проблем.
              0
              в этом смысле я просто балдею от сипексдампера (я до сих пор пользуюсь первой версией для создания бакапов, во второй вроде все там распухло и окрутело чересчур) — один файл в 35 Кб
                0
                Примерно вот так? phpminiadmin.sourceforge.net/
          0
          Витала идея, витала! Вы очень большой молодец :) Спасибо.
            +4
            Сделано красиво. Только мне кажется что набегут те, кому бутстрап надоел и… впрочем.
              +10
              Ну иногда лучше с ним, чем без него. Глупо под такую мелочь делать какой-то особенный дизайн. А пользоваться некрасивым интерфейсом я не люблю :)
                0
                + Run query на Ctrl+Enter повесить
                +6
                Не любят — пусть пишут свой велосипед!!!
                +1
                Буду использовать! :)
                  +4
                  попробуйте Adminer — забудете о phpmyadmin как о страшном сне
                    +3
                    Честно говоря, сколько убийц phpMyAdmin не пробовал, ни один не прижился.
                      +1
                      Остановился на chive, минимум зависимостей и настроек, очень легок. Для VPS (nginx + php-fpm) что-то легкое искал. Счастлив не ставить монстра phpmyadmin.
                        +2
                        Мне показался слишком перегруженным.
                          0
                          В каком смысле «перегруженней»? Перегруженней чем phpmyadmin?
                            +2
                            Ну да. Шило на мыло.
                          0
                          chive потому что на Yii? :D
                            0
                            Он сам к CMSке прикрепится? Частенько так ломает искать логины и пароли в почте, не находить. Или находить, а они не работают, потому что уже сменили. Надо лезть к клиенту на сервер — пытаться искать их в конифигах.

                            Так хочется просто зааплоадить нечто, сделать пару нужных SQL, удалить, и заниматься другими делами :)
                              +2
                              Нет, chive сам не прикрепится к CMS. Тут ваш bike опережает всех убийц phpmyadmin'a =)
                                0
                                Просто не надо хранить пароли в почте.
                                  +1
                                  Их клиенты присылают, а я стараюсь вообще пароли не хранить, потому не записываю те, которые врядле еще раз понадобятся. Особенно, когда каждый день по нескольку новых проектов.
                                +3
                                Убивал бы за такие дизайнерские выйбоны d.pr/i/anWS
                                fidex div #grass закрывает половину тамбнейлов скриншотов. Уроды, пилять.
                                  0
                                  Спасибо, решение понравилось
                                0
                                Плюсую, сам давно пользуюсь и очень доволен. И сразу ссылку чтобы не гуглить:
                                  0
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                +3
                                Дам совет тем, кто может быть не в курсе. Есть очень удобный и классный клиент для mysql — SqlYog. И если у вас закрыта субд на внешку(а она закрыта), можно просто скинуь tunnel.php, прописать к нему путь и работать как ни в чем не бывало.
                                Минус — платность. Хотя если вы часто работаете с mysql, проектируете базы и всякое такое, то 99$ не так много.
                                  +1
                                  Да, это отличная программа. Вижу только плюсы для себя и большое удобство работы. Про PhpMyAdmin после этого и не вспоминаю)
                                    0
                                    Я не вижу у них на сайте на чем он работает — если только под Windows, то для меня это не вариант :(

                                    А вообще по возможности предпочитаю то, что работают в любой OS, а в идеале и на мобильных платформах.
                                      +2
                                      SQLYog под Linux как по маслу идёт под Wine — уже 2,5 года пользуюсь =)
                                        0
                                        У меня Mac
                                          +2
                                            0
                                            Wine есть под все ОС, в том числе Mac и Windows.
                                              +1
                                              тогда попробуйте бесплатный Sequel PRO
                                                0
                                                А я где-то уже отвечал — его и использую на десктопе — отличная программка.
                                                +1
                                              0
                                              А вообще по возможности предпочитаю то, что работают в любой OS, а в идеале и на мобильных платформах.

                                              Если вы хотите с телефона исполнять sql запросы, проектировать БД, анализировать производительность, работать с индексами и прочее-прочее, то что-то не так.
                                              Во всяком случае я не представляю когда это может быть необходимо. Разве что вы единственный незаменимый человек, но это проблемы менеджмента, а не ПО.
                                                0
                                                Я имел ввиду подход в целом — чем более униваерсальный метод, тем лучше. Все что нужно ставить и настраивать, да еще и работает только под Win/Mac/Linux для меня мнее предпочтительно универсального варианта.

                                                А вообще я трудоголик :) Так что иногда и с iPad что-то приходится зайти поправить/проверить. С телефона нет — не люблю малюсенькие экраны.

                                                Именно по-этому, кстати вариант с тунеллированием тоже не очень подходит — нужен соответствующий клиент на десктопе.

                                                Но для задач, более сложных чем выполнить запрос или посмотреть PROCESSLIST пожалуй надо принять к сведению.
                                                  0
                                                  Хм, я с планшета сижу в ссх и управляю сервером, сижу на диванчике и пока идет фильм что-то меняю/добавляю/просматриваю. Что не так? Не стоит выражаться шаблонными фразами, я бы и с телефона по ссх управлял бы сервером, если бы была возможность. Там же и sql запросы есть возможность выполнять.
                                              +1
                                              Есть community-версия
                                              Нет некоторых фишек (в которых лично я никогда не нуждался), и назойливый баннер при загрузке и закрытии программы, а так — совершенно бесплатен.
                                                0
                                                «Нет некоторых фишек»
                                                Например той о которой говорит человек =)
                                              –4
                                              >когда надо быстренько запустить пару запросов к MySQL базе у клиента на сервере.
                                              Не понимаю, не проще ли просто напрямую mysql клиентом подключиться и выполнить эту пару запросов?
                                                –1
                                                только FTP
                                                +3
                                                А мне нравится phpminiadmin. Один файл, минимум наворотов, минимум зависимостей и все на старом добром http, никаких аяксов и localstorage. Даже Adminer, который тут выше рекомендовали, по сравнению с ним — монстр.
                                                  +3
                                                  SqlYog + SQLyogTunnel.php — на всё!
                                                    0
                                                    А почему не через ssh?
                                                      0
                                                      Когда есть SSH, то по SSH — так оно намного быстрее и удобней. В противном случае через SQLyogTunnel.php :)
                                                        0
                                                        Денег стоит :(
                                                    +2
                                                    RST MySQL :))
                                                      +43
                                                      Простая замена phpMyAdmin для гиков

                                                      $ mysql
                                                      mysql>
                                                        +1
                                                        Я только за! Жаль по FTP не дает шел запустить! :)
                                                          +16
                                                          Вот и я присоединился к группе «Статьи не читай, комменты пиши!»
                                                            +11
                                                            Забудьте FTP как страшный сон, SFTP!
                                                              +1
                                                              Во-во, всегда удивлялся этим гикам — почта только через ssl, на из дома на работу-VPN, пароли только в голове и т.п., а как клиентские (читай: ответственность за чужой бизнес) сайты админить — так, блин, по FTP!
                                                                +1
                                                                К сожалению приходится работать с тем, что клиент дает. А они часто покупают дешевый хостинг с предустановленным WP (в лучшем случае) и доступом по FTP. А иногда дают просто ФТП и говорят пришлите базу — мы сами поставим. А потом приходится объяснять, что сделали не так и как исправить.

                                                                В идеальном мире конечо есть и SSH и SCP и SFTP, да и cPanel с установленным phpMyAdmin.

                                                                Но мир не всегда идеален :)
                                                              0
                                                              Залили на сервер, запустил через system данный perl скрипт :)
                                                              И у себя через netcat подняли соеденение :)

                                                              #!/usr/bin/perl
                                                              use IO::Socket;
                                                              # Use: bc.pl [Host] [Port]
                                                              # nc.exe -l -n -v -p 80
                                                              $ARGV=@ARGV;
                                                              if ($ARGV
                                                          +1
                                                          Экспорт/импорт bike умеет?
                                                            0
                                                            Пока нет, и импорта скорее всего не будет. Не для тех задач оно. А вот экспорт клиент просил сделать по возможности (уж очень ему понравились запросики сохраненные) так что Excel будет :)
                                                              0
                                                              хм, интересно, а можно например клиенту кинуть URL типа такого:
                                                              mysite.com/client.php?query_id=N&expired=20120615&hash={md5(blabla)}
                                                              или, чего уж там мелочиться:
                                                              mysite.com/client.php?query_text=encrypted_qyery_body,
                                                              где encrypted_qyery_body зашифрованный текст запроса (только select конечно же), ключ прошит в теле скрипта.
                                                                0
                                                                Можно добавить кнопку «Permanent link», не знаю будет ли востребована :)
                                                            0
                                                            Жаль, что не совместимо с PHP
                                                              0
                                                              Жаль, что не совместимо с PHP <5.3.0. На многих хостингах все еще PHP 5.2.x.
                                                              Не думали отказаться от анонимных функций для совместимости?

                                                              Я ненавижу хабрапарсер. Срезал все, что было после <. А еще это ограничение 1 комментарий в 5 минут — дурацкий комментарий висел пять минут и я не мог его «исправить».
                                                                0
                                                                С анонимными функциями удобнее и веселее, да и Singleton без get_called_class навскидку удобно (в одну строку) не делается…
                                                                0
                                                                С PHP 5.3 совместим! :)
                                                                +4
                                                                SqlBuddy, правда в последнее время не очень активно развивается но текущего функционала мне вполне хватает :)
                                                                  0
                                                                  Да, клёвая штука.
                                                                  –4
                                                                  это же… это же… это же твиттербутстрааап
                                                                    +1
                                                                    Вроде самое место для него. Или рисовать новый дизайн руками для малюсенького инструмента?
                                                                    +7
                                                                    Я люблю немного юмора в коде, вот над этим, например, смеялся

                                                                    $fileName = dirname(dirname(dirname(dirname(__FILE__)))) . '/config.php'
                                                                      +2
                                                                      С тех пор как перелез на Мак использую Sequel Pro
                                                                      Бесплатная и очень удобная GUI. Поддерживает так-же коннект к мускулу через SSH тунель.
                                                                        +2
                                                                        Аналогично. И тоже не нарадуюсь. Это теперь одна из тех программ, из-за которых слезть с мака на что-либо другое будет проблематично, уж больно она хороша.
                                                                          0
                                                                          Согласен, именно им и пользуюсь на десктопе.
                                                                            0
                                                                            А оно поддерживает HTTP-туннелирование? :)
                                                                              0
                                                                              Насколько мне известно — нет.
                                                                            0
                                                                            А мне больше нравится подход с HTTP-туннелированием, его многие программы для управления БД поддерживают (EMS SQL Manager, например; есть бесплатные) — залил маленький файл, зарегистрировал базу и получил все (почти) средства управления + значительно выше скорость работы.
                                                                              +1
                                                                              А можете сделать отправку по Ctrl+Enter?
                                                                                0
                                                                                Конечно, отличная мысль.
                                                                                0
                                                                                Спасибо!
                                                                                  +1
                                                                                  Вау! Отличная вещь! Давно задумываюсь над поиском нечто подобного, но то руки не доходили, а когда доходили, то натыкался на кривые или не красивые в плане дизайна вещи. А у вас всё на высоте. Идеальное для меня решения! Спасибо!
                                                                                  p.s. научить бы её еще дамп делать
                                                                                    +1
                                                                                    Ну корректный дамп не совсем тривиальная задача, но где-то у меня была реализация. Можно добавить.
                                                                                    +1
                                                                                    И как пища для размышлений: было бы хорошо запаковать всё в один файл, без необходимости распаковки. Было бы совсем хорошо.
                                                                                      0
                                                                                      Ну в один не получится — как минимум три — php, js, css + шаблоны. Можно паковать в zip и сделать, чтобы он сам там распаковывался. Вот это сделать крайне просто, но надо будет давать право на запись всей папки. Наверное с текущим позиционированием — залил, поработал, удалил — такой вариант вполне приемлем.
                                                                                        0
                                                                                        /bike.php?get=css
                                                                                        /bike.php?get=js
                                                                                        /bike.php?get=tpl
                                                                                        в чем трабл?
                                                                                          0
                                                                                          Ну если я правильно понял суть идеи господина RubtsovAV — задача минимизировать количество файлов.

                                                                                          Тоесть надо еще
                                                                                          /bike.php?get=png
                                                                                          /bike.php?get=jpg
                                                                                          /bike.php?get=xml (не в данном случае, но в принципе)


                                                                                          И один большой php — с кучей всего внутри! И весь код перелопатить, и все ссылки на картинки в css перекроить… Мсье знает толк в извращениях :)

                                                                                          Кстати это может быть инетерсным отдельным проектом — phpProject2file! Пишешь в обычном нормальном стиле, а потом пакушь все в один PHP скрипт. Прям аж руки зачесались! :)
                                                                                            0
                                                                                            Если мне не изменяет мой склероз, phar это умеет.
                                                                                              0
                                                                                              По-моему, для него надо сам код писать специальным образом, как минимум инклуды через phar://, или нет? Если бы я решал задачу сделать из проекта один файл — я бы искал/делал решение, которое не требует менять сам код исходгого проекта.

                                                                                              Ну и js/css/images/html в варанте с phar, наверное, будут идти отдельными файлами, а это бОльшая часть почти всех сайтов.

                                                                                              Кстати вариант /bike.php?get=js скорее всего не будет кешироваться браузером, потому что админы обычно апач настраивают так, чтобы он на скрипты отдавал nocache. А так как я рассматриваю универсальный вариант — тоесть не могу перенастраивать сервер — некешируемые скрипты и картинки большой минус.
                                                                                                0
                                                                                                Всё равно автоматически переписать всё и всюду нельзя — там будут хаки для юза в простом и в пакованном режиме
                                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                                        0
                                                                                        Интересная идея, но я думаю, что это будет лишнее в этом скрипте. Он, как бы, не для этого…
                                                                                        –1
                                                                                        MySQL Workbench + форвардинг портов через SSH — обалденное сочетание. Настраиваешь один раз и с одного компа по всем, с одним интерфейсом и очень функционально.
                                                                                          0
                                                                                          Буквально сегодня пытался использовать mysqldiff из MySQL Workbench Utilities через SSH tunnel. Говорит, мол

                                                                                          $mysqldiff --server1=root:somepass@127.0.0.1:8889 --server2=root:somepass@127.0.0.1:3306 db1.obj1:db2.obj2
                                                                                          # server1 on 127.0.0.1:… connected.
                                                                                          # server2 on localhost:… ERROR: Cannot connect to the server2 server.
                                                                                          Error 1045: Access denied for user 'root'@'127.0.0.1' (using password: YES)

                                                                                          в то время как, естественно, просто из консоли руками я с теми же логином/паролем вхожу на сервер замечательно.
                                                                                          Не сталкивались с таким поведением утилит при ssh-тунелировании?
                                                                                            0
                                                                                            Cталкивался с таким моментом: когда указываешь адрес как localhost — он пытается подключиться к локальному SQL через сокет, а не удаленному через сеть. Помогало указывать адрес как 127.0.0.1, но у вас я вижу он так и написан, только при выполнении почему-то изменился на localhost у server2. Я бы в эту сторону исследовал.
                                                                                              0
                                                                                              Меня превращение 127.0.0.1 в localhost тоже смущало/ет. А нет идей в какую сторону надо «исследовать»?
                                                                                              Кстати, описанный выше отрицательный результат получается на AWS EC2. На локальной виртуалке в VirtualBox mysqldiff коннектится нормально.
                                                                                                0
                                                                                                Попробуйте сменить локальный порт на втором сервере со стандартного на 3307, допустим. Ну а вообще надо почитать доки на mysqldiff, может там какая подковырка.
                                                                                          0
                                                                                          был похожий проект, turboadmin, жаль — почил в бозе =(
                                                                                            +1
                                                                                            Довольно часто возникает ситуация, когда надо быстренько запустить пару запросов к MySQL базе у клиента на сервере. При этом есть только FTP и параметры соединения с СУБД. Самый простой выход — загрузить туда phpMyAdmin, ну а дальше дело техники.

                                                                                            Для меня самый простой способ залить туда r57shell… он умеет сразу много полезного и всего 1 файлик…
                                                                                              +1
                                                                                              Я не уверен, что по умолчанию PHP на сервере разрешено запускать шелл скрипты. Если разрешено — я бы как раз запретил. Спасибо — посмотрю на него.
                                                                                                0
                                                                                                Оно довольно старое и писаное на PHP… последняя версия за 2009 год.
                                                                                                Умеет дампы баз.
                                                                                                Умеет грузить файлы (можно даже с другого ftp)
                                                                                                Ну и вообще просто удобный миниатюрный инструмент с довольно большим функционалом…
                                                                                                0
                                                                                                …или WSO2, его, правда, антивирусы не любят.
                                                                                                0
                                                                                                На мой взгляд не хватает возможности просмотра структуры таблиц, ну а вообще сам я привык юзать десктопные клиент MySql Workbench и pgAdmin.
                                                                                                  +1
                                                                                                  DESC [table name]
                                                                                                  SHOW CREATE TABLE [tabe name]


                                                                                                  В разделе Library есть снипеты Show table structure и Show CREATE TABLE statement. Даже название таблицы вас спросят :)

                                                                                                  А название таблицы спрашивает потому что снипет имеет вид «SHOW CREATE TABLE %Table name%», а bike это понимает и задает соответствующий вопрос. Никакого хардкода на какие-то определенные типы команд :)
                                                                                                    0
                                                                                                    А я тут, наоборот в своем велосипеде на эту тему стараюсь сделать поудобнее частые команды. У меня заточка под удобный поиск и редактирование базы. Там датагриды с инлайновым редактированием, что-то близкое к HeidiSQL.
                                                                                                      0
                                                                                                      Возможно добавлю инлайн редактирование, благо в этом фрейме есть к нему поддержка из коробки. В реальном проекте это выглядит так:


                                                                                                      Главное не перебощить с функционалом, а то вся идея сойдет на нет :)
                                                                                                        +1
                                                                                                        Ага, клиент увидит такое (имею в виду скрипт позволяющий редактировать базу) и откажется платить за само приложение — мол, зачем, если юзеры могут заносить данные и так :)
                                                                                                  –1
                                                                                                  в Ubuntu 12.04 Firefox 13 скролл тормозит неподетски
                                                                                                    +1
                                                                                                    Parse error: syntax error, unexpected T_FUNCTION in E:\Rooms\u99626\olt.ru\www\joomla\bike\breeze\Breeze.php on line 58

                                                                                                    Хотя скинул в директорию с joomla
                                                                                                      0
                                                                                                      Нужен PHP 5.3
                                                                                                        +1
                                                                                                        может поможет:

                                                                                                          if ( version_compare ( PHP_VERSION, '5.3.0', '<' ) ) {
                                                                                                            die('PHP 5.3+ required');
                                                                                                          }
                                                                                                        
                                                                                                          +1
                                                                                                          Можно конечно, но проверку хотелось бы в библиотеку вставить, а не в index.php. А значит скорее всего compile check сработает раньше. Подумаю. Спасибо.
                                                                                                      0
                                                                                                      Для интересующихся есть еще легковесный и вполне себе функциональный Adminer. Полезен там, где надо быстро и просто подключится.
                                                                                                        0
                                                                                                        Я вообще себе шелл залил. )) Удобно — всё в одном файле — и бэкапы, и файлменеджер, и SQL-запросы…
                                                                                                          0
                                                                                                          Web Shell by oRb называется. )
                                                                                                          0
                                                                                                          $ mysql # и несколько других утилит командной строки
                                                                                                          

                                                                                                          покрывает все нужды :)

                                                                                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                          Самое читаемое