Простая замена 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.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 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
                                Плюсую, сам давно пользуюсь и очень доволен. И сразу ссылку чтобы не гуглить:
                              +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
                                                                                              Всё равно автоматически переписать всё и всюду нельзя — там будут хаки для юза в простом и в пакованном режиме
                                                                                  • UFO just landed and posted this here
                                                                                      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 # и несколько других утилит командной строки
                                                                                                        

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

                                                                                                        Only users with full accounts can post comments. Log in, please.