Inhaltsverzeichnis

phpMyAdmin 4.7 unter CentOS 7.x mit Apache 2.4, PHP 7.2 und PHP-FPM installieren und einrichten

Bild: phpMyAdmin Logo

Zur komfortablen Administration unseres MariaDB-Datenbankserver unter CentOS 7.x greifen wir auf das PHP-Projekt phpMyAdmin zurück. Viele der Funktionen, die die WEB-GUI zur Verfügung stellt können ohne Detailkenntnisse zu den einzelnen SQL-Befehlen ausgeführt werden. So lassen sich z.B. sehr leicht und einfach Datensätze suchen, löschen und natürlich auch einfügen. Das Generieren und Löschen einzelner Datenbanken und Tabellen geht natürlich auch recht einfach und sicher von der Hand.

Ein weiterer Vorteil der WEB-GUI, die natürlich abhängig von der Konfiguration und den Zugriffsrechten, von überall her erreicht werden kann, ist der Umstand, dass von einer Stelle aus mehrere Datenbank-Systeme/-hosts administriert werden können.

Installation

PHP-Voraussetzungen

Für unseren komfortablen Weg der Administration unseres MariaDB-Servers muss natürlich ein funktionstüchtiger MariaDB-Server unter CentOS 7.x und entweder ein passender Apache-Webserver oder der Webserver NGiNX zur Verfügung stehen. Es werden werden von phpMyAdmin folgende PHP-Module benötigt:

Diese Pakete installieren wir, sofern diese nicht schon bei der Grundinstallation unseres Apache-Webservers erfolgte, mit Hilfe von YUM

 # yum install php72u php72u-cli php72u-common php72u-gd php72u-mbstring php72u-mcrypt php72u-mysqlnd php72u-pdo -y

phpMyAdmin

Das EPEL Repositories beinhaltet zwar ein RPM für phpMyAdmin, dies jedoch nur in einer relativ konservativen Version. Wir werden daher das Paket von der Homepage des Projekts direkt herunterladen und manuell installieren.

Zunächst wechseln wir in unser lokales Programm-Archiv-Verzeichnis.

 # cd /usr/local/src/packages/

Anschliessend holen wir uns das aktuelle Paket auf unseren Rechner.

 # wget https://files.phpmyadmin.net/phpMyAdmin/4.7.4/phpMyAdmin-4.7.4-all-languages.zip

Zu guter Letzt entpacken wir das Archiv an Ort und Stelle, so z.B. in das Verzeichnis /usr/share/.

 # unzip /usr/local/src/packages/phpMyAdmin-4.7.4-all-languages.zip -d /usr/share/

Für die weitere Konfiguration benennen wir nun noch das Verzeichnis um.

 # mv /usr/share/phpMyAdmin-4.7.4-all-languages/ /usr/share/phpMyAdmin/
 

Da wir den Alternativer FastCGI Process Manager einsetzen passen wir noch die Verzeichnis und Dateirechte entsprechend an.

 # chown -R php-fpm: /usr/share/phpMyAdmin/

Den Inhalt des Zielverzeichnis enthält nun:

/usr/share/phpMyAdmin/
├── ajax.php
├── browse_foreigners.php
├── ChangeLog
├── changelog.php
├── chk_rel.php
├── composer.json
├── composer.lock
├── config.sample.inc.php
├── CONTRIBUTING.md
├── db_central_columns.php
├── db_datadict.php
├── db_designer.php
├── db_events.php
├── db_export.php
├── db_import.php
├── db_operations.php
├── db_qbe.php
├── db_routines.php
├── db_search.php
├── db_sql_autocomplete.php
├── db_sql_format.php
├── db_sql.php
├── db_structure.php
├── db_tracking.php
├── db_triggers.php
├── DCO
├── doc
│   └── html
│       ├── bookmarks.html
│       ├── charts.html
│       ├── config.html
│       ├── copyright.html
│       ├── credits.html
│       ├── developers.html
│       ├── faq.html
│       ├── genindex.html
│       ├── glossary.html
│       ├── _images
│       │   ├── chart.png
│       │   ├── column_chart.png
│       │   ├── line_chart.png
│       │   ├── pie_chart.png
│       │   ├── pma-relations-links.png
│       │   ├── pma-relations-relation-link.png
│       │   ├── pma-relations-relation-name.png
│       │   ├── pma-relations-relation-view-link.png
│       │   ├── query_result_operations.png
│       │   ├── scatter_chart.png
│       │   ├── spline_chart.png
│       │   ├── timeline_chart.png
│       │   └── usergroups.png
│       ├── import_export.html
│       ├── index.html
│       ├── intro.html
│       ├── other.html
│       ├── privileges.html
│       ├── relations.html
│       ├── require.html
│       ├── search.html
│       ├── searchindex.js
│       ├── settings.html
│       ├── setup.html
│       ├── _sources
│       │   ├── bookmarks.txt
│       │   ├── charts.txt
│       │   ├── config.txt
│       │   ├── copyright.txt
│       │   ├── credits.txt
│       │   ├── developers.txt
│       │   ├── faq.txt
│       │   ├── glossary.txt
│       │   ├── import_export.txt
│       │   ├── index.txt
│       │   ├── intro.txt
│       │   ├── other.txt
│       │   ├── privileges.txt
│       │   ├── relations.txt
│       │   ├── require.txt
│       │   ├── settings.txt
│       │   ├── setup.txt
│       │   ├── transformations.txt
│       │   ├── user.txt
│       │   └── vendors.txt
│       ├── _static
│       │   ├── ajax-loader.gif
│       │   ├── basic.css
│       │   ├── classic.css
│       │   ├── comment-bright.png
│       │   ├── comment-close.png
│       │   ├── comment.png
│       │   ├── default.css
│       │   ├── doctools.js
│       │   ├── down.png
│       │   ├── down-pressed.png
│       │   ├── file.png
│       │   ├── jquery.js
│       │   ├── minus.png
│       │   ├── plus.png
│       │   ├── pygments.css
│       │   ├── searchtools.js
│       │   ├── sidebar.js
│       │   ├── underscore.js
│       │   ├── up.png
│       │   ├── up-pressed.png
│       │   └── websupport.js
│       ├── transformations.html
│       ├── user.html
│       └── vendors.html
├── error_report.php
├── examples
│   ├── config.manyhosts.inc.php
│   ├── openid.php
│   ├── signon.php
│   └── signon-script.php
├── export.php
├── favicon.ico
├── gis_data_editor.php
├── import.php
├── import_status.php
├── index.php
├── js
│   ├── ajax.js
│   ├── chart.js
│   ├── codemirror
│   │   ├── addon
│   │   │   ├── hint
│   │   │   │   ├── show-hint.css
│   │   │   │   ├── show-hint.js
│   │   │   │   └── sql-hint.js
│   │   │   ├── lint
│   │   │   │   ├── lint.css
│   │   │   │   ├── lint.js
│   │   │   │   └── sql-lint.js
│   │   │   └── runmode
│   │   │       └── runmode.js
│   │   ├── lib
│   │   │   ├── codemirror.css
│   │   │   └── codemirror.js
│   │   ├── LICENSE
│   │   └── mode
│   │       ├── javascript
│   │       │   └── javascript.js
│   │       ├── sql
│   │       │   └── sql.js
│   │       └── xml
│   │           └── xml.js
│   ├── common.js
│   ├── config.js
│   ├── console.js
│   ├── cross_framing_protection.js
│   ├── db_central_columns.js
│   ├── db_operations.js
│   ├── db_qbe.js
│   ├── db_search.js
│   ├── db_structure.js
│   ├── db_tracking.js
│   ├── doclinks.js
│   ├── error_report.js
│   ├── export.js
│   ├── functions.js
│   ├── get_image.js.php
│   ├── get_scripts.js.php
│   ├── gis_data_editor.js
│   ├── import.js
│   ├── indexes.js
│   ├── jqplot
│   │   ├── jquery.jqplot.js
│   │   └── plugins
│   │       ├── jqplot.barRenderer.js
│   │       ├── jqplot.byteFormatter.js
│   │       ├── jqplot.canvasAxisLabelRenderer.js
│   │       ├── jqplot.canvasTextRenderer.js
│   │       ├── jqplot.categoryAxisRenderer.js
│   │       ├── jqplot.cursor.js
│   │       ├── jqplot.dateAxisRenderer.js
│   │       ├── jqplot.highlighter.js
│   │       ├── jqplot.pieRenderer.js
│   │       └── jqplot.pointLabels.js
│   ├── jquery
│   │   ├── additional-methods.js
│   │   ├── jquery.ba-hashchange-1.3.js
│   │   ├── jquery.cookie.js
│   │   ├── jquery.debounce-1.0.5.js
│   │   ├── jquery.event.drag-2.2.js
│   │   ├── jquery.fullscreen.js
│   │   ├── jquery-migrate-3.0.0.js
│   │   ├── jquery.min.js
│   │   ├── jquery.mousewheel.js
│   │   ├── jquery.sortableTable.js
│   │   ├── jquery.svg.js
│   │   ├── jquery.tablesorter.js
│   │   ├── jquery-ui.min.js
│   │   ├── jquery.uitablefilter.js
│   │   ├── jquery-ui-timepicker-addon.js
│   │   ├── jquery.validate.js
│   │   ├── MIT-LICENSE.txt
│   │   └── src
│   │       ├── jquery
│   │       │   ├── ajax
│   │       │   │   ├── jsonp.js
│   │       │   │   ├── load.js
│   │       │   │   ├── parseXML.js
│   │       │   │   ├── script.js
│   │       │   │   ├── var
│   │       │   │   │   ├── location.js
│   │       │   │   │   ├── nonce.js
│   │       │   │   │   └── rquery.js
│   │       │   │   └── xhr.js
│   │       │   ├── ajax.js
│   │       │   ├── attributes
│   │       │   │   ├── attr.js
│   │       │   │   ├── classes.js
│   │       │   │   ├── prop.js
│   │       │   │   ├── support.js
│   │       │   │   └── val.js
│   │       │   ├── attributes.js
│   │       │   ├── callbacks.js
│   │       │   ├── core
│   │       │   │   ├── access.js
│   │       │   │   ├── DOMEval.js
│   │       │   │   ├── init.js
│   │       │   │   ├── parseHTML.js
│   │       │   │   ├── readyException.js
│   │       │   │   ├── ready.js
│   │       │   │   ├── ready-no-deferred.js
│   │       │   │   ├── stripAndCollapse.js
│   │       │   │   ├── support.js
│   │       │   │   └── var
│   │       │   │       └── rsingleTag.js
│   │       │   ├── core.js
│   │       │   ├── css
│   │       │   │   ├── addGetHookIf.js
│   │       │   │   ├── adjustCSS.js
│   │       │   │   ├── curCSS.js
│   │       │   │   ├── hiddenVisibleSelectors.js
│   │       │   │   ├── showHide.js
│   │       │   │   ├── support.js
│   │       │   │   └── var
│   │       │   │       ├── cssExpand.js
│   │       │   │       ├── getStyles.js
│   │       │   │       ├── isHiddenWithinTree.js
│   │       │   │       ├── rmargin.js
│   │       │   │       ├── rnumnonpx.js
│   │       │   │       └── swap.js
│   │       │   ├── css.js
│   │       │   ├── data
│   │       │   │   ├── Data.js
│   │       │   │   └── var
│   │       │   │       ├── acceptData.js
│   │       │   │       ├── dataPriv.js
│   │       │   │       └── dataUser.js
│   │       │   ├── data.js
│   │       │   ├── deferred
│   │       │   │   └── exceptionHook.js
│   │       │   ├── deferred.js
│   │       │   ├── deprecated.js
│   │       │   ├── dimensions.js
│   │       │   ├── effects
│   │       │   │   ├── animatedSelector.js
│   │       │   │   └── Tween.js
│   │       │   ├── effects.js
│   │       │   ├── event
│   │       │   │   ├── ajax.js
│   │       │   │   ├── alias.js
│   │       │   │   ├── focusin.js
│   │       │   │   ├── support.js
│   │       │   │   └── trigger.js
│   │       │   ├── event.js
│   │       │   ├── exports
│   │       │   │   ├── amd.js
│   │       │   │   └── global.js
│   │       │   ├── jquery.js
│   │       │   ├── manipulation
│   │       │   │   ├── buildFragment.js
│   │       │   │   ├── _evalUrl.js
│   │       │   │   ├── getAll.js
│   │       │   │   ├── setGlobalEval.js
│   │       │   │   ├── support.js
│   │       │   │   ├── var
│   │       │   │   │   ├── rcheckableType.js
│   │       │   │   │   ├── rscriptType.js
│   │       │   │   │   └── rtagName.js
│   │       │   │   └── wrapMap.js
│   │       │   ├── manipulation.js
│   │       │   ├── offset.js
│   │       │   ├── queue
│   │       │   │   └── delay.js
│   │       │   ├── queue.js
│   │       │   ├── selector.js
│   │       │   ├── selector-native.js
│   │       │   ├── selector-sizzle.js
│   │       │   ├── serialize.js
│   │       │   ├── traversing
│   │       │   │   ├── findFilter.js
│   │       │   │   └── var
│   │       │   │       ├── dir.js
│   │       │   │       ├── rneedsContext.js
│   │       │   │       └── siblings.js
│   │       │   ├── traversing.js
│   │       │   ├── var
│   │       │   │   ├── arr.js
│   │       │   │   ├── class2type.js
│   │       │   │   ├── concat.js
│   │       │   │   ├── documentElement.js
│   │       │   │   ├── document.js
│   │       │   │   ├── fnToString.js
│   │       │   │   ├── getProto.js
│   │       │   │   ├── hasOwn.js
│   │       │   │   ├── indexOf.js
│   │       │   │   ├── ObjectFunctionString.js
│   │       │   │   ├── pnum.js
│   │       │   │   ├── push.js
│   │       │   │   ├── rcssNum.js
│   │       │   │   ├── rnothtmlwhite.js
│   │       │   │   ├── slice.js
│   │       │   │   ├── support.js
│   │       │   │   └── toString.js
│   │       │   └── wrap.js
│   │       ├── jquery-ui
│   │       │   ├── core.js
│   │       │   ├── data.js
│   │       │   ├── disable-selection.js
│   │       │   ├── effect.js
│   │       │   ├── effects
│   │       │   │   ├── effect-blind.js
│   │       │   │   ├── effect-bounce.js
│   │       │   │   ├── effect-clip.js
│   │       │   │   ├── effect-drop.js
│   │       │   │   ├── effect-explode.js
│   │       │   │   ├── effect-fade.js
│   │       │   │   ├── effect-fold.js
│   │       │   │   ├── effect-highlight.js
│   │       │   │   ├── effect-puff.js
│   │       │   │   ├── effect-pulsate.js
│   │       │   │   ├── effect-scale.js
│   │       │   │   ├── effect-shake.js
│   │       │   │   ├── effect-size.js
│   │       │   │   ├── effect-slide.js
│   │       │   │   └── effect-transfer.js
│   │       │   ├── escape-selector.js
│   │       │   ├── focusable.js
│   │       │   ├── form.js
│   │       │   ├── form-reset-mixin.js
│   │       │   ├── i18n
│   │       │   │   ├── datepicker-af.js
│   │       │   │   ├── datepicker-ar-DZ.js
│   │       │   │   ├── datepicker-ar.js
│   │       │   │   ├── datepicker-az.js
│   │       │   │   ├── datepicker-be.js
│   │       │   │   ├── datepicker-bg.js
│   │       │   │   ├── datepicker-bs.js
│   │       │   │   ├── datepicker-ca.js
│   │       │   │   ├── datepicker-cs.js
│   │       │   │   ├── datepicker-cy-GB.js
│   │       │   │   ├── datepicker-da.js
│   │       │   │   ├── datepicker-de.js
│   │       │   │   ├── datepicker-el.js
│   │       │   │   ├── datepicker-en-AU.js
│   │       │   │   ├── datepicker-en-GB.js
│   │       │   │   ├── datepicker-en-NZ.js
│   │       │   │   ├── datepicker-eo.js
│   │       │   │   ├── datepicker-es.js
│   │       │   │   ├── datepicker-et.js
│   │       │   │   ├── datepicker-eu.js
│   │       │   │   ├── datepicker-fa.js
│   │       │   │   ├── datepicker-fi.js
│   │       │   │   ├── datepicker-fo.js
│   │       │   │   ├── datepicker-fr-CA.js
│   │       │   │   ├── datepicker-fr-CH.js
│   │       │   │   ├── datepicker-fr.js
│   │       │   │   ├── datepicker-gl.js
│   │       │   │   ├── datepicker-he.js
│   │       │   │   ├── datepicker-hi.js
│   │       │   │   ├── datepicker-hr.js
│   │       │   │   ├── datepicker-hu.js
│   │       │   │   ├── datepicker-hy.js
│   │       │   │   ├── datepicker-id.js
│   │       │   │   ├── datepicker-is.js
│   │       │   │   ├── datepicker-it-CH.js
│   │       │   │   ├── datepicker-it.js
│   │       │   │   ├── datepicker-ja.js
│   │       │   │   ├── datepicker-ka.js
│   │       │   │   ├── datepicker-kk.js
│   │       │   │   ├── datepicker-km.js
│   │       │   │   ├── datepicker-ko.js
│   │       │   │   ├── datepicker-ky.js
│   │       │   │   ├── datepicker-lb.js
│   │       │   │   ├── datepicker-lt.js
│   │       │   │   ├── datepicker-lv.js
│   │       │   │   ├── datepicker-mk.js
│   │       │   │   ├── datepicker-ml.js
│   │       │   │   ├── datepicker-ms.js
│   │       │   │   ├── datepicker-nb.js
│   │       │   │   ├── datepicker-nl-BE.js
│   │       │   │   ├── datepicker-nl.js
│   │       │   │   ├── datepicker-nn.js
│   │       │   │   ├── datepicker-no.js
│   │       │   │   ├── datepicker-pl.js
│   │       │   │   ├── datepicker-pt-BR.js
│   │       │   │   ├── datepicker-pt.js
│   │       │   │   ├── datepicker-rm.js
│   │       │   │   ├── datepicker-ro.js
│   │       │   │   ├── datepicker-ru.js
│   │       │   │   ├── datepicker-sk.js
│   │       │   │   ├── datepicker-sl.js
│   │       │   │   ├── datepicker-sq.js
│   │       │   │   ├── datepicker-sr.js
│   │       │   │   ├── datepicker-sr-SR.js
│   │       │   │   ├── datepicker-sv.js
│   │       │   │   ├── datepicker-ta.js
│   │       │   │   ├── datepicker-th.js
│   │       │   │   ├── datepicker-tj.js
│   │       │   │   ├── datepicker-tr.js
│   │       │   │   ├── datepicker-uk.js
│   │       │   │   ├── datepicker-vi.js
│   │       │   │   ├── datepicker-zh-CN.js
│   │       │   │   ├── datepicker-zh-HK.js
│   │       │   │   └── datepicker-zh-TW.js
│   │       │   ├── ie.js
│   │       │   ├── jquery-1-7.js
│   │       │   ├── keycode.js
│   │       │   ├── labels.js
│   │       │   ├── plugin.js
│   │       │   ├── position.js
│   │       │   ├── safe-active-element.js
│   │       │   ├── safe-blur.js
│   │       │   ├── scroll-parent.js
│   │       │   ├── tabbable.js
│   │       │   ├── unique-id.js
│   │       │   ├── version.js
│   │       │   ├── widget.js
│   │       │   └── widgets
│   │       │       ├── accordion.js
│   │       │       ├── autocomplete.js
│   │       │       ├── button.js
│   │       │       ├── checkboxradio.js
│   │       │       ├── controlgroup.js
│   │       │       ├── datepicker.js
│   │       │       ├── dialog.js
│   │       │       ├── draggable.js
│   │       │       ├── droppable.js
│   │       │       ├── menu.js
│   │       │       ├── mouse.js
│   │       │       ├── progressbar.js
│   │       │       ├── resizable.js
│   │       │       ├── selectable.js
│   │       │       ├── selectmenu.js
│   │       │       ├── slider.js
│   │       │       ├── sortable.js
│   │       │       ├── spinner.js
│   │       │       ├── tabs.js
│   │       │       └── tooltip.js
│   │       └── README
│   ├── keyhandler.js
│   ├── line_counts.php
│   ├── makegrid.js
│   ├── menu-resizer.js
│   ├── messages.php
│   ├── microhistory.js
│   ├── multi_column_sort.js
│   ├── navigation.js
│   ├── normalization.js
│   ├── openlayers
│   │   ├── img
│   │   │   ├── blank.gif
│   │   │   ├── cloud-popup-relative.png
│   │   │   ├── drag-rectangle-off.png
│   │   │   ├── drag-rectangle-on.png
│   │   │   ├── east-mini.png
│   │   │   ├── layer-switcher-maximize.png
│   │   │   ├── layer-switcher-minimize.png
│   │   │   ├── marker-blue.png
│   │   │   ├── marker-gold.png
│   │   │   ├── marker-green.png
│   │   │   ├── marker.png
│   │   │   ├── measuring-stick-off.png
│   │   │   ├── measuring-stick-on.png
│   │   │   ├── north-mini.png
│   │   │   ├── panning-hand-off.png
│   │   │   ├── panning-hand-on.png
│   │   │   ├── slider.png
│   │   │   ├── south-mini.png
│   │   │   ├── west-mini.png
│   │   │   ├── zoombar.png
│   │   │   ├── zoom-minus-mini.png
│   │   │   ├── zoom-plus-mini.png
│   │   │   └── zoom-world-mini.png
│   │   ├── OpenLayers.js
│   │   ├── src
│   │   │   ├── openlayers
│   │   │   │   └── lib
│   │   │   │       ├── deprecated.js
│   │   │   │       ├── Firebug
│   │   │   │       │   ├── errorIcon.png
│   │   │   │       │   ├── firebug.css
│   │   │   │       │   ├── firebug.html
│   │   │   │       │   ├── firebug.js
│   │   │   │       │   ├── firebugx.js
│   │   │   │       │   ├── infoIcon.png
│   │   │   │       │   ├── license.txt
│   │   │   │       │   ├── readme.txt
│   │   │   │       │   └── warningIcon.png
│   │   │   │       ├── OpenLayers
│   │   │   │       │   ├── Animation.js
│   │   │   │       │   ├── BaseTypes
│   │   │   │       │   │   ├── Bounds.js
│   │   │   │       │   │   ├── Class.js
│   │   │   │       │   │   ├── Date.js
│   │   │   │       │   │   ├── Element.js
│   │   │   │       │   │   ├── LonLat.js
│   │   │   │       │   │   ├── Pixel.js
│   │   │   │       │   │   └── Size.js
│   │   │   │       │   ├── BaseTypes.js
│   │   │   │       │   ├── Console.js
│   │   │   │       │   ├── Control
│   │   │   │       │   │   ├── ArgParser.js
│   │   │   │       │   │   ├── Attribution.js
│   │   │   │       │   │   ├── Button.js
│   │   │   │       │   │   ├── CacheRead.js
│   │   │   │       │   │   ├── CacheWrite.js
│   │   │   │       │   │   ├── DragFeature.js
│   │   │   │       │   │   ├── DragPan.js
│   │   │   │       │   │   ├── DrawFeature.js
│   │   │   │       │   │   ├── EditingToolbar.js
│   │   │   │       │   │   ├── Geolocate.js
│   │   │   │       │   │   ├── GetFeature.js
│   │   │   │       │   │   ├── Graticule.js
│   │   │   │       │   │   ├── KeyboardDefaults.js
│   │   │   │       │   │   ├── LayerSwitcher.js
│   │   │   │       │   │   ├── Measure.js
│   │   │   │       │   │   ├── ModifyFeature.js
│   │   │   │       │   │   ├── MousePosition.js
│   │   │   │       │   │   ├── NavigationHistory.js
│   │   │   │       │   │   ├── Navigation.js
│   │   │   │       │   │   ├── NavToolbar.js
│   │   │   │       │   │   ├── OverviewMap.js
│   │   │   │       │   │   ├── Panel.js
│   │   │   │       │   │   ├── Pan.js
│   │   │   │       │   │   ├── PanPanel.js
│   │   │   │       │   │   ├── PanZoomBar.js
│   │   │   │       │   │   ├── PanZoom.js
│   │   │   │       │   │   ├── Permalink.js
│   │   │   │       │   │   ├── PinchZoom.js
│   │   │   │       │   │   ├── Scale.js
│   │   │   │       │   │   ├── ScaleLine.js
│   │   │   │       │   │   ├── SelectFeature.js
│   │   │   │       │   │   ├── SLDSelect.js
│   │   │   │       │   │   ├── Snapping.js
│   │   │   │       │   │   ├── Split.js
│   │   │   │       │   │   ├── TouchNavigation.js
│   │   │   │       │   │   ├── TransformFeature.js
│   │   │   │       │   │   ├── UTFGrid.js
│   │   │   │       │   │   ├── WMSGetFeatureInfo.js
│   │   │   │       │   │   ├── WMTSGetFeatureInfo.js
│   │   │   │       │   │   ├── ZoomBox.js
│   │   │   │       │   │   ├── ZoomIn.js
│   │   │   │       │   │   ├── Zoom.js
│   │   │   │       │   │   ├── ZoomOut.js
│   │   │   │       │   │   ├── ZoomPanel.js
│   │   │   │       │   │   └── ZoomToMaxExtent.js
│   │   │   │       │   ├── Control.js
│   │   │   │       │   ├── Events
│   │   │   │       │   │   ├── buttonclick.js
│   │   │   │       │   │   └── featureclick.js
│   │   │   │       │   ├── Events.js
│   │   │   │       │   ├── Feature
│   │   │   │       │   │   └── Vector.js
│   │   │   │       │   ├── Feature.js
│   │   │   │       │   ├── Filter
│   │   │   │       │   │   ├── Comparison.js
│   │   │   │       │   │   ├── FeatureId.js
│   │   │   │       │   │   ├── Function.js
│   │   │   │       │   │   ├── Logical.js
│   │   │   │       │   │   └── Spatial.js
│   │   │   │       │   ├── Filter.js
│   │   │   │       │   ├── Format
│   │   │   │       │   │   ├── ArcXML
│   │   │   │       │   │   │   └── Features.js
│   │   │   │       │   │   ├── ArcXML.js
│   │   │   │       │   │   ├── Atom.js
│   │   │   │       │   │   ├── Context.js
│   │   │   │       │   │   ├── CQL.js
│   │   │   │       │   │   ├── CSWGetDomain
│   │   │   │       │   │   │   └── v2_0_2.js
│   │   │   │       │   │   ├── CSWGetDomain.js
│   │   │   │       │   │   ├── CSWGetRecords
│   │   │   │       │   │   │   └── v2_0_2.js
│   │   │   │       │   │   ├── CSWGetRecords.js
│   │   │   │       │   │   ├── EncodedPolyline.js
│   │   │   │       │   │   ├── Filter
│   │   │   │       │   │   │   ├── v1_0_0.js
│   │   │   │       │   │   │   ├── v1_1_0.js
│   │   │   │       │   │   │   └── v1.js
│   │   │   │       │   │   ├── Filter.js
│   │   │   │       │   │   ├── GeoJSON.js
│   │   │   │       │   │   ├── GeoRSS.js
│   │   │   │       │   │   ├── GML
│   │   │   │       │   │   │   ├── Base.js
│   │   │   │       │   │   │   ├── v2.js
│   │   │   │       │   │   │   └── v3.js
│   │   │   │       │   │   ├── GML.js
│   │   │   │       │   │   ├── GPX.js
│   │   │   │       │   │   ├── JSON.js
│   │   │   │       │   │   ├── KML.js
│   │   │   │       │   │   ├── OGCExceptionReport.js
│   │   │   │       │   │   ├── OSM.js
│   │   │   │       │   │   ├── OWSCommon
│   │   │   │       │   │   │   ├── v1_0_0.js
│   │   │   │       │   │   │   ├── v1_1_0.js
│   │   │   │       │   │   │   └── v1.js
│   │   │   │       │   │   ├── OWSCommon.js
│   │   │   │       │   │   ├── OWSContext
│   │   │   │       │   │   │   └── v0_3_1.js
│   │   │   │       │   │   ├── OWSContext.js
│   │   │   │       │   │   ├── QueryStringFilter.js
│   │   │   │       │   │   ├── SLD
│   │   │   │       │   │   │   ├── v1_0_0_GeoServer.js
│   │   │   │       │   │   │   ├── v1_0_0.js
│   │   │   │       │   │   │   └── v1.js
│   │   │   │       │   │   ├── SLD.js
│   │   │   │       │   │   ├── SOSCapabilities
│   │   │   │       │   │   │   └── v1_0_0.js
│   │   │   │       │   │   ├── SOSCapabilities.js
│   │   │   │       │   │   ├── SOSGetFeatureOfInterest.js
│   │   │   │       │   │   ├── SOSGetObservation.js
│   │   │   │       │   │   ├── Text.js
│   │   │   │       │   │   ├── WCSCapabilities
│   │   │   │       │   │   │   ├── v1_0_0.js
│   │   │   │       │   │   │   ├── v1_1_0.js
│   │   │   │       │   │   │   └── v1.js
│   │   │   │       │   │   ├── WCSCapabilities.js
│   │   │   │       │   │   ├── WCSGetCoverage.js
│   │   │   │       │   │   ├── WFSCapabilities
│   │   │   │       │   │   │   ├── v1_0_0.js
│   │   │   │       │   │   │   ├── v1_1_0.js
│   │   │   │       │   │   │   └── v1.js
│   │   │   │       │   │   ├── WFSCapabilities.js
│   │   │   │       │   │   ├── WFSDescribeFeatureType.js
│   │   │   │       │   │   ├── WFS.js
│   │   │   │       │   │   ├── WFST
│   │   │   │       │   │   │   ├── v1_0_0.js
│   │   │   │       │   │   │   ├── v1_1_0.js
│   │   │   │       │   │   │   └── v1.js
│   │   │   │       │   │   ├── WFST.js
│   │   │   │       │   │   ├── WKT.js
│   │   │   │       │   │   ├── WMC
│   │   │   │       │   │   │   ├── v1_0_0.js
│   │   │   │       │   │   │   ├── v1_1_0.js
│   │   │   │       │   │   │   └── v1.js
│   │   │   │       │   │   ├── WMC.js
│   │   │   │       │   │   ├── WMSCapabilities
│   │   │   │       │   │   │   ├── v1_1_0.js
│   │   │   │       │   │   │   ├── v1_1_1.js
│   │   │   │       │   │   │   ├── v1_1_1_WMSC.js
│   │   │   │       │   │   │   ├── v1_1.js
│   │   │   │       │   │   │   ├── v1_3_0.js
│   │   │   │       │   │   │   ├── v1_3.js
│   │   │   │       │   │   │   └── v1.js
│   │   │   │       │   │   ├── WMSCapabilities.js
│   │   │   │       │   │   ├── WMSDescribeLayer
│   │   │   │       │   │   │   └── v1_1.js
│   │   │   │       │   │   ├── WMSDescribeLayer.js
│   │   │   │       │   │   ├── WMSGetFeatureInfo.js
│   │   │   │       │   │   ├── WMTSCapabilities
│   │   │   │       │   │   │   └── v1_0_0.js
│   │   │   │       │   │   ├── WMTSCapabilities.js
│   │   │   │       │   │   ├── WPSCapabilities
│   │   │   │       │   │   │   └── v1_0_0.js
│   │   │   │       │   │   ├── WPSCapabilities.js
│   │   │   │       │   │   ├── WPSDescribeProcess.js
│   │   │   │       │   │   ├── WPSExecute.js
│   │   │   │       │   │   ├── XLS
│   │   │   │       │   │   │   ├── v1_1_0.js
│   │   │   │       │   │   │   └── v1.js
│   │   │   │       │   │   ├── XLS.js
│   │   │   │       │   │   ├── XML
│   │   │   │       │   │   │   └── VersionedOGC.js
│   │   │   │       │   │   └── XML.js
│   │   │   │       │   ├── Format.js
│   │   │   │       │   ├── Geometry
│   │   │   │       │   │   ├── Collection.js
│   │   │   │       │   │   ├── Curve.js
│   │   │   │       │   │   ├── LinearRing.js
│   │   │   │       │   │   ├── LineString.js
│   │   │   │       │   │   ├── MultiLineString.js
│   │   │   │       │   │   ├── MultiPoint.js
│   │   │   │       │   │   ├── MultiPolygon.js
│   │   │   │       │   │   ├── Point.js
│   │   │   │       │   │   └── Polygon.js
│   │   │   │       │   ├── Geometry.js
│   │   │   │       │   ├── Handler
│   │   │   │       │   │   ├── Box.js
│   │   │   │       │   │   ├── Click.js
│   │   │   │       │   │   ├── Drag.js
│   │   │   │       │   │   ├── Feature.js
│   │   │   │       │   │   ├── Hover.js
│   │   │   │       │   │   ├── Keyboard.js
│   │   │   │       │   │   ├── MouseWheel.js
│   │   │   │       │   │   ├── Path.js
│   │   │   │       │   │   ├── Pinch.js
│   │   │   │       │   │   ├── Point.js
│   │   │   │       │   │   ├── Polygon.js
│   │   │   │       │   │   └── RegularPolygon.js
│   │   │   │       │   ├── Handler.js
│   │   │   │       │   ├── Icon.js
│   │   │   │       │   ├── Kinetic.js
│   │   │   │       │   ├── Lang
│   │   │   │       │   │   ├── ar.js
│   │   │   │       │   │   ├── be-tarask.js
│   │   │   │       │   │   ├── bg.js
│   │   │   │       │   │   ├── br.js
│   │   │   │       │   │   ├── ca.js
│   │   │   │       │   │   ├── cs-CZ.js
│   │   │   │       │   │   ├── da-DK.js
│   │   │   │       │   │   ├── de.js
│   │   │   │       │   │   ├── el.js
│   │   │   │       │   │   ├── en-CA.js
│   │   │   │       │   │   ├── en.js
│   │   │   │       │   │   ├── es.js
│   │   │   │       │   │   ├── fi.js
│   │   │   │       │   │   ├── fr.js
│   │   │   │       │   │   ├── fur.js
│   │   │   │       │   │   ├── gl.js
│   │   │   │       │   │   ├── gsw.js
│   │   │   │       │   │   ├── hr.js
│   │   │   │       │   │   ├── hsb.js
│   │   │   │       │   │   ├── hu.js
│   │   │   │       │   │   ├── ia.js
│   │   │   │       │   │   ├── id.js
│   │   │   │       │   │   ├── io.js
│   │   │   │       │   │   ├── is.js
│   │   │   │       │   │   ├── it.js
│   │   │   │       │   │   ├── ja.js
│   │   │   │       │   │   ├── km.js
│   │   │   │       │   │   ├── ksh.js
│   │   │   │       │   │   ├── lt.js
│   │   │   │       │   │   ├── nb.js
│   │   │   │       │   │   ├── nds.js
│   │   │   │       │   │   ├── nl.js
│   │   │   │       │   │   ├── nn.js
│   │   │   │       │   │   ├── oc.js
│   │   │   │       │   │   ├── pl.js
│   │   │   │       │   │   ├── pt-BR.js
│   │   │   │       │   │   ├── pt.js
│   │   │   │       │   │   ├── ro.js
│   │   │   │       │   │   ├── ru.js
│   │   │   │       │   │   ├── sk.js
│   │   │   │       │   │   ├── sv-SE.js
│   │   │   │       │   │   ├── te.js
│   │   │   │       │   │   ├── vi.js
│   │   │   │       │   │   ├── zh-CN.js
│   │   │   │       │   │   └── zh-TW.js
│   │   │   │       │   ├── Lang.js
│   │   │   │       │   ├── Layer
│   │   │   │       │   │   ├── ArcGIS93Rest.js
│   │   │   │       │   │   ├── ArcGISCache.js
│   │   │   │       │   │   ├── ArcIMS.js
│   │   │   │       │   │   ├── Bing.js
│   │   │   │       │   │   ├── Boxes.js
│   │   │   │       │   │   ├── EventPane.js
│   │   │   │       │   │   ├── FixedZoomLevels.js
│   │   │   │       │   │   ├── GeoRSS.js
│   │   │   │       │   │   ├── Google
│   │   │   │       │   │   │   └── v3.js
│   │   │   │       │   │   ├── Google.js
│   │   │   │       │   │   ├── Grid.js
│   │   │   │       │   │   ├── HTTPRequest.js
│   │   │   │       │   │   ├── Image.js
│   │   │   │       │   │   ├── KaMapCache.js
│   │   │   │       │   │   ├── KaMap.js
│   │   │   │       │   │   ├── MapGuide.js
│   │   │   │       │   │   ├── MapServer.js
│   │   │   │       │   │   ├── Markers.js
│   │   │   │       │   │   ├── OSM.js
│   │   │   │       │   │   ├── PointGrid.js
│   │   │   │       │   │   ├── PointTrack.js
│   │   │   │       │   │   ├── SphericalMercator.js
│   │   │   │       │   │   ├── Text.js
│   │   │   │       │   │   ├── TileCache.js
│   │   │   │       │   │   ├── TMS.js
│   │   │   │       │   │   ├── UTFGrid.js
│   │   │   │       │   │   ├── Vector
│   │   │   │       │   │   │   └── RootContainer.js
│   │   │   │       │   │   ├── Vector.js
│   │   │   │       │   │   ├── WMS.js
│   │   │   │       │   │   ├── WMTS.js
│   │   │   │       │   │   ├── WorldWind.js
│   │   │   │       │   │   ├── XYZ.js
│   │   │   │       │   │   └── Zoomify.js
│   │   │   │       │   ├── Layer.js
│   │   │   │       │   ├── Map.js
│   │   │   │       │   ├── Marker
│   │   │   │       │   │   └── Box.js
│   │   │   │       │   ├── Marker.js
│   │   │   │       │   ├── Popup
│   │   │   │       │   │   ├── Anchored.js
│   │   │   │       │   │   ├── FramedCloud.js
│   │   │   │       │   │   └── Framed.js
│   │   │   │       │   ├── Popup.js
│   │   │   │       │   ├── Projection.js
│   │   │   │       │   ├── Protocol
│   │   │   │       │   │   ├── CSW
│   │   │   │       │   │   │   └── v2_0_2.js
│   │   │   │       │   │   ├── CSW.js
│   │   │   │       │   │   ├── HTTP.js
│   │   │   │       │   │   ├── Script.js
│   │   │   │       │   │   ├── SOS
│   │   │   │       │   │   │   └── v1_0_0.js
│   │   │   │       │   │   ├── SOS.js
│   │   │   │       │   │   ├── WFS
│   │   │   │       │   │   │   ├── v1_0_0.js
│   │   │   │       │   │   │   ├── v1_1_0.js
│   │   │   │       │   │   │   └── v1.js
│   │   │   │       │   │   └── WFS.js
│   │   │   │       │   ├── Protocol.js
│   │   │   │       │   ├── Renderer
│   │   │   │       │   │   ├── Canvas.js
│   │   │   │       │   │   ├── Elements.js
│   │   │   │       │   │   ├── SVG.js
│   │   │   │       │   │   └── VML.js
│   │   │   │       │   ├── Renderer.js
│   │   │   │       │   ├── Request
│   │   │   │       │   │   └── XMLHttpRequest.js
│   │   │   │       │   ├── Request.js
│   │   │   │       │   ├── Rule.js
│   │   │   │       │   ├── SingleFile.js
│   │   │   │       │   ├── Spherical.js
│   │   │   │       │   ├── Strategy
│   │   │   │       │   │   ├── BBOX.js
│   │   │   │       │   │   ├── Cluster.js
│   │   │   │       │   │   ├── Filter.js
│   │   │   │       │   │   ├── Fixed.js
│   │   │   │       │   │   ├── Paging.js
│   │   │   │       │   │   ├── Refresh.js
│   │   │   │       │   │   └── Save.js
│   │   │   │       │   ├── Strategy.js
│   │   │   │       │   ├── Style2.js
│   │   │   │       │   ├── Style.js
│   │   │   │       │   ├── StyleMap.js
│   │   │   │       │   ├── Symbolizer
│   │   │   │       │   │   ├── Line.js
│   │   │   │       │   │   ├── Point.js
│   │   │   │       │   │   ├── Polygon.js
│   │   │   │       │   │   ├── Raster.js
│   │   │   │       │   │   └── Text.js
│   │   │   │       │   ├── Symbolizer.js
│   │   │   │       │   ├── Tile
│   │   │   │       │   │   ├── Image
│   │   │   │       │   │   │   └── IFrame.js
│   │   │   │       │   │   ├── Image.js
│   │   │   │       │   │   └── UTFGrid.js
│   │   │   │       │   ├── Tile.js
│   │   │   │       │   ├── TileManager.js
│   │   │   │       │   ├── Tween.js
│   │   │   │       │   ├── Util
│   │   │   │       │   │   └── vendorPrefix.js
│   │   │   │       │   ├── Util.js
│   │   │   │       │   ├── WPSClient.js
│   │   │   │       │   └── WPSProcess.js
│   │   │   │       ├── OpenLayers.js
│   │   │   │       └── Rico
│   │   │   │           ├── Color.js
│   │   │   │           ├── Corner.js
│   │   │   │           └── license.js
│   │   │   └── readme.md
│   │   └── theme
│   │       └── default
│   │           ├── google.css
│   │           ├── google.tidy.css
│   │           ├── ie6-style.css
│   │           ├── ie6-style.tidy.css
│   │           ├── img
│   │           │   ├── add_point_off.png
│   │           │   ├── add_point_on.png
│   │           │   ├── blank.gif
│   │           │   ├── close.gif
│   │           │   ├── drag-rectangle-off.png
│   │           │   ├── drag-rectangle-on.png
│   │           │   ├── draw_line_off.png
│   │           │   ├── draw_line_on.png
│   │           │   ├── draw_point_off.png
│   │           │   ├── draw_point_on.png
│   │           │   ├── draw_polygon_off.png
│   │           │   ├── draw_polygon_on.png
│   │           │   ├── editing_tool_bar.png
│   │           │   ├── move_feature_off.png
│   │           │   ├── move_feature_on.png
│   │           │   ├── navigation_history.png
│   │           │   ├── overview_replacement.gif
│   │           │   ├── panning-hand-off.png
│   │           │   ├── panning-hand-on.png
│   │           │   ├── pan_off.png
│   │           │   ├── pan_on.png
│   │           │   ├── pan-panel-NOALPHA.png
│   │           │   ├── pan-panel.png
│   │           │   ├── remove_point_off.png
│   │           │   ├── remove_point_on.png
│   │           │   ├── ruler.png
│   │           │   ├── save_features_off.png
│   │           │   ├── save_features_on.png
│   │           │   ├── view_next_off.png
│   │           │   ├── view_next_on.png
│   │           │   ├── view_previous_off.png
│   │           │   ├── view_previous_on.png
│   │           │   ├── zoom-panel-NOALPHA.png
│   │           │   └── zoom-panel.png
│   │           ├── style.css
│   │           ├── style.mobile.css
│   │           ├── style.mobile.tidy.css
│   │           └── style.tidy.css
│   ├── page_settings.js
│   ├── pmd
│   │   ├── designer_db.js
│   │   ├── designer_objects.js
│   │   ├── designer_page.js
│   │   ├── history.js
│   │   ├── init.js
│   │   └── move.js
│   ├── replication.js
│   ├── rte.js
│   ├── server_databases.js
│   ├── server_plugins.js
│   ├── server_privileges.js
│   ├── server_status_advisor.js
│   ├── server_status_monitor.js
│   ├── server_status_processes.js
│   ├── server_status_queries.js
│   ├── server_status_sorter.js
│   ├── server_status_variables.js
│   ├── server_user_groups.js
│   ├── server_variables.js
│   ├── shortcuts_handler.js
│   ├── sprintf.js
│   ├── sql.js
│   ├── tbl_change.js
│   ├── tbl_chart.js
│   ├── tbl_find_replace.js
│   ├── tbl_gis_visualization.js
│   ├── tbl_operations.js
│   ├── tbl_relation.js
│   ├── tbl_select.js
│   ├── tbl_structure.js
│   ├── tbl_tracking.js
│   ├── tbl_zoom_plot_jqplot.js
│   ├── tracekit
│   │   └── tracekit.js
│   ├── transformations
│   │   ├── image_upload.js
│   │   ├── json_editor.js
│   │   ├── json.js
│   │   ├── sql_editor.js
│   │   ├── xml_editor.js
│   │   └── xml.js
│   ├── whitelist.php
│   └── zxcvbn.js
├── libraries
│   ├── advisor.lib.php
│   ├── Advisor.php
│   ├── advisory_rules.txt
│   ├── Bookmark.php
│   ├── browse_foreigners.lib.php
│   ├── central_columns.lib.php
│   ├── certs
│   │   ├── 12d55845.0
│   │   ├── 2e5ac55d.0
│   │   ├── 4042bcee.0
│   │   ├── 6187b673.0
│   │   ├── cacert.pem
│   │   └── README.rst
│   ├── Charsets.php
│   ├── check_user_privileges.lib.php
│   ├── common.inc.php
│   ├── config
│   │   ├── ConfigFile.php
│   │   ├── config_functions.lib.php
│   │   ├── FormDisplay.php
│   │   ├── FormDisplay.tpl.php
│   │   ├── Form.php
│   │   ├── messages.inc.php
│   │   ├── page_settings.forms.php
│   │   ├── PageSettings.php
│   │   ├── ServerConfigChecks.php
│   │   ├── setup.forms.php
│   │   ├── user_preferences.forms.php
│   │   └── Validator.php
│   ├── config.default.php
│   ├── Config.php
│   ├── config.values.php
│   ├── Console.php
│   ├── controllers
│   │   ├── Controller.php
│   │   ├── database
│   │   │   └── DatabaseStructureController.php
│   │   ├── DatabaseController.php
│   │   ├── server
│   │   │   ├── ServerBinlogController.php
│   │   │   ├── ServerCollationsController.php
│   │   │   ├── ServerDatabasesController.php
│   │   │   ├── ServerEnginesController.php
│   │   │   ├── ServerPluginsController.php
│   │   │   └── ServerVariablesController.php
│   │   ├── table
│   │   │   ├── TableChartController.php
│   │   │   ├── TableGisVisualizationController.php
│   │   │   ├── TableIndexesController.php
│   │   │   ├── TableRelationController.php
│   │   │   ├── TableSearchController.php
│   │   │   └── TableStructureController.php
│   │   └── TableController.php
│   ├── core.lib.php
│   ├── create_addfield.lib.php
│   ├── database_interface.inc.php
│   ├── DatabaseInterface.php
│   ├── db_common.inc.php
│   ├── db_designer.lib.php
│   ├── dbi
│   │   ├── DBIDummy.php
│   │   ├── DBIExtension.lib.php
│   │   ├── DBIExtension.php
│   │   ├── DBIMysqli.lib.php
│   │   ├── DBIMysqli.php
│   │   └── DBIMysql.php
│   ├── DbList.php
│   ├── DbQbe.php
│   ├── DbSearch.php
│   ├── db_table_exists.inc.php
│   ├── di
│   │   ├── AliasItem.php
│   │   ├── Container.php
│   │   ├── FactoryItem.php
│   │   ├── Item.php
│   │   ├── ReflectorItem.php
│   │   ├── ServiceItem.php
│   │   └── ValueItem.php
│   ├── display_change_password.lib.php
│   ├── display_create_table.lib.php
│   ├── display_export.lib.php
│   ├── display_git_revision.lib.php
│   ├── display_import_ajax.lib.php
│   ├── display_import.lib.php
│   ├── DisplayResults.php
│   ├── Encoding.php
│   ├── engines
│   │   ├── Bdb.php
│   │   ├── Berkeleydb.php
│   │   ├── Binlog.php
│   │   ├── Innobase.php
│   │   ├── Innodb.php
│   │   ├── Memory.php
│   │   ├── Merge.php
│   │   ├── Mrg_Myisam.php
│   │   ├── Myisam.php
│   │   ├── Ndbcluster.php
│   │   ├── Pbxt.php
│   │   └── Performance_Schema.php
│   ├── ErrorHandler.php
│   ├── error.inc.php
│   ├── Error.php
│   ├── error_report.lib.php
│   ├── export.lib.php
│   ├── file_listing.lib.php
│   ├── File.php
│   ├── Font.php
│   ├── Footer.php
│   ├── gis
│   │   ├── GISFactory.php
│   │   ├── GISGeometrycollection.php
│   │   ├── GISGeometry.php
│   │   ├── GISLinestring.php
│   │   ├── GISMultilinestring.php
│   │   ├── GISMultipoint.php
│   │   ├── GISMultipolygon.php
│   │   ├── GISPoint.php
│   │   ├── GISPolygon.php
│   │   └── GISVisualization.php
│   ├── Header.php
│   ├── import.lib.php
│   ├── IndexColumn.php
│   ├── index.lib.php
│   ├── Index.php
│   ├── information_schema_relations.lib.php
│   ├── insert_edit.lib.php
│   ├── ip_allow_deny.lib.php
│   ├── LanguageManager.php
│   ├── Language.php
│   ├── language_stats.inc.php
│   ├── Linter.php
│   ├── ListAbstract.php
│   ├── ListDatabase.php
│   ├── Logging.php
│   ├── Menu.php
│   ├── Message.php
│   ├── mime.lib.php
│   ├── mult_submits.inc.php
│   ├── mult_submits.lib.php
│   ├── mysql_relations.lib.php
│   ├── navigation
│   │   ├── NavigationHeader.php
│   │   ├── Navigation.php
│   │   ├── NavigationTree.php
│   │   ├── NodeFactory.php
│   │   └── nodes
│   │       ├── NodeColumnContainer.php
│   │       ├── NodeColumn.php
│   │       ├── NodeDatabaseChildContainer.php
│   │       ├── NodeDatabaseChild.php
│   │       ├── NodeDatabaseContainer.php
│   │       ├── NodeDatabase.php
│   │       ├── NodeEventContainer.php
│   │       ├── NodeEvent.php
│   │       ├── NodeFunctionContainer.php
│   │       ├── NodeFunction.php
│   │       ├── NodeIndexContainer.php
│   │       ├── NodeIndex.php
│   │       ├── Node.php
│   │       ├── NodeProcedureContainer.php
│   │       ├── NodeProcedure.php
│   │       ├── NodeTableContainer.php
│   │       ├── NodeTable.php
│   │       ├── NodeTriggerContainer.php
│   │       ├── NodeTrigger.php
│   │       ├── NodeViewContainer.php
│   │       └── NodeView.php
│   ├── normalization.lib.php
│   ├── OpenDocument.php
│   ├── operations.lib.php
│   ├── OutputBuffering.php
│   ├── parse_analyze.lib.php
│   ├── Partition.php
│   ├── PDF.php
│   ├── plugin_interface.lib.php
│   ├── plugins
│   │   ├── auth
│   │   │   ├── AuthenticationConfig.php
│   │   │   ├── AuthenticationCookie.php
│   │   │   ├── AuthenticationHttp.php
│   │   │   └── AuthenticationSignon.php
│   │   ├── AuthenticationPlugin.php
│   │   ├── export
│   │   │   ├── ExportCodegen.php
│   │   │   ├── ExportCsv.php
│   │   │   ├── ExportExcel.php
│   │   │   ├── ExportHtmlword.php
│   │   │   ├── ExportJson.php
│   │   │   ├── ExportLatex.php
│   │   │   ├── ExportMediawiki.php
│   │   │   ├── ExportOds.php
│   │   │   ├── ExportOdt.php
│   │   │   ├── ExportPdf.php
│   │   │   ├── ExportPhparray.php
│   │   │   ├── ExportSql.php
│   │   │   ├── ExportTexytext.php
│   │   │   ├── ExportXml.php
│   │   │   ├── ExportYaml.php
│   │   │   ├── PMA_ExportPdf.php
│   │   │   ├── README
│   │   │   └── TableProperty.php
│   │   ├── ExportPlugin.php
│   │   ├── import
│   │   │   ├── AbstractImportCsv.php
│   │   │   ├── ImportCsv.php
│   │   │   ├── ImportLdi.php
│   │   │   ├── ImportMediawiki.php
│   │   │   ├── ImportOds.php
│   │   │   ├── ImportShp.php
│   │   │   ├── ImportSql.php
│   │   │   ├── ImportXml.php
│   │   │   ├── README
│   │   │   ├── ShapeFileImport.php
│   │   │   └── upload
│   │   │       ├── UploadApc.php
│   │   │       ├── UploadNoplugin.php
│   │   │       ├── UploadProgress.php
│   │   │       └── UploadSession.php
│   │   ├── ImportPlugin.php
│   │   ├── IOTransformationsPlugin.php
│   │   ├── schema
│   │   │   ├── dia
│   │   │   │   ├── Dia.php
│   │   │   │   ├── DiaRelationSchema.php
│   │   │   │   ├── RelationStatsDia.php
│   │   │   │   └── TableStatsDia.php
│   │   │   ├── eps
│   │   │   │   ├── Eps.php
│   │   │   │   ├── EpsRelationSchema.php
│   │   │   │   ├── RelationStatsEps.php
│   │   │   │   └── TableStatsEps.php
│   │   │   ├── ExportRelationSchema.php
│   │   │   ├── pdf
│   │   │   │   ├── Pdf.php
│   │   │   │   ├── PdfRelationSchema.php
│   │   │   │   ├── RelationStatsPdf.php
│   │   │   │   └── TableStatsPdf.php
│   │   │   ├── RelationStats.php
│   │   │   ├── SchemaDia.php
│   │   │   ├── SchemaEps.php
│   │   │   ├── SchemaPdf.php
│   │   │   ├── SchemaSvg.php
│   │   │   ├── svg
│   │   │   │   ├── RelationStatsSvg.php
│   │   │   │   ├── Svg.php
│   │   │   │   ├── SvgRelationSchema.php
│   │   │   │   └── TableStatsSvg.php
│   │   │   └── TableStats.php
│   │   ├── SchemaPlugin.php
│   │   ├── transformations
│   │   │   ├── abs
│   │   │   │   ├── Bool2TextTransformationsPlugin.php
│   │   │   │   ├── CodeMirrorEditorTransformationPlugin.php
│   │   │   │   ├── DateFormatTransformationsPlugin.php
│   │   │   │   ├── DownloadTransformationsPlugin.php
│   │   │   │   ├── ExternalTransformationsPlugin.php
│   │   │   │   ├── FormattedTransformationsPlugin.php
│   │   │   │   ├── HexTransformationsPlugin.php
│   │   │   │   ├── ImageLinkTransformationsPlugin.php
│   │   │   │   ├── ImageUploadTransformationsPlugin.php
│   │   │   │   ├── InlineTransformationsPlugin.php
│   │   │   │   ├── LongToIPv4TransformationsPlugin.php
│   │   │   │   ├── PreApPendTransformationsPlugin.php
│   │   │   │   ├── RegexValidationTransformationsPlugin.php
│   │   │   │   ├── SQLTransformationsPlugin.php
│   │   │   │   ├── SubstringTransformationsPlugin.php
│   │   │   │   ├── TextFileUploadTransformationsPlugin.php
│   │   │   │   ├── TextImageLinkTransformationsPlugin.php
│   │   │   │   └── TextLinkTransformationsPlugin.php
│   │   │   ├── input
│   │   │   │   ├── Image_JPEG_Upload.php
│   │   │   │   ├── Text_Plain_FileUpload.php
│   │   │   │   ├── Text_Plain_Iptobinary.php
│   │   │   │   ├── Text_Plain_JsonEditor.php
│   │   │   │   ├── Text_Plain_RegexValidation.php
│   │   │   │   ├── Text_Plain_SqlEditor.php
│   │   │   │   └── Text_Plain_XmlEditor.php
│   │   │   ├── output
│   │   │   │   ├── Application_Octetstream_Download.php
│   │   │   │   ├── Application_Octetstream_Hex.php
│   │   │   │   ├── Image_JPEG_Inline.php
│   │   │   │   ├── Image_JPEG_Link.php
│   │   │   │   ├── Image_PNG_Inline.php
│   │   │   │   ├── Text_Octetstream_Sql.php
│   │   │   │   ├── Text_Plain_Binarytoip.php
│   │   │   │   ├── Text_Plain_Bool2Text.php
│   │   │   │   ├── Text_Plain_Dateformat.php
│   │   │   │   ├── Text_Plain_External.php
│   │   │   │   ├── Text_Plain_Formatted.php
│   │   │   │   ├── Text_Plain_Imagelink.php
│   │   │   │   ├── Text_Plain_Json.php
│   │   │   │   ├── Text_Plain_Sql.php
│   │   │   │   └── Text_Plain_Xml.php
│   │   │   ├── README
│   │   │   ├── TEMPLATE
│   │   │   ├── TEMPLATE_ABSTRACT
│   │   │   ├── Text_Plain_Link.php
│   │   │   ├── Text_Plain_Longtoipv4.php
│   │   │   ├── Text_Plain_PreApPend.php
│   │   │   └── Text_Plain_Substring.php
│   │   ├── TransformationsInterface.php
│   │   ├── TransformationsPlugin.php
│   │   └── UploadInterface.php
│   ├── pmd_common.php
│   ├── properties
│   │   ├── options
│   │   │   ├── groups
│   │   │   │   ├── OptionsPropertyMainGroup.php
│   │   │   │   ├── OptionsPropertyRootGroup.php
│   │   │   │   └── OptionsPropertySubgroup.php
│   │   │   ├── items
│   │   │   │   ├── BoolPropertyItem.php
│   │   │   │   ├── DocPropertyItem.php
│   │   │   │   ├── HiddenPropertyItem.php
│   │   │   │   ├── MessageOnlyPropertyItem.php
│   │   │   │   ├── NumberPropertyItem.php
│   │   │   │   ├── RadioPropertyItem.php
│   │   │   │   ├── SelectPropertyItem.php
│   │   │   │   └── TextPropertyItem.php
│   │   │   ├── OptionsPropertyGroup.php
│   │   │   ├── OptionsPropertyItem.php
│   │   │   └── OptionsPropertyOneItem.php
│   │   ├── plugins
│   │   │   ├── ExportPluginProperties.php
│   │   │   ├── ImportPluginProperties.php
│   │   │   ├── PluginPropertyItem.php
│   │   │   └── SchemaPluginProperties.php
│   │   └── PropertyItem.php
│   ├── RecentFavoriteTable.php
│   ├── relation_cleanup.lib.php
│   ├── relation.lib.php
│   ├── replication_gui.lib.php
│   ├── replication.inc.php
│   ├── Response.php
│   ├── rte
│   │   ├── rte_events.lib.php
│   │   ├── rte_export.lib.php
│   │   ├── rte_footer.lib.php
│   │   ├── rte_general.lib.php
│   │   ├── rte_list.lib.php
│   │   ├── rte_main.inc.php
│   │   ├── rte_routines.lib.php
│   │   ├── rte_triggers.lib.php
│   │   └── rte_words.lib.php
│   ├── Sanitize.php
│   ├── SavedSearches.php
│   ├── Scripts.php
│   ├── select_server.lib.php
│   ├── server_common.inc.php
│   ├── server_common.lib.php
│   ├── server_privileges.lib.php
│   ├── server_status_advisor.lib.php
│   ├── ServerStatusData.php
│   ├── server_status.lib.php
│   ├── server_status_monitor.lib.php
│   ├── server_status_processes.lib.php
│   ├── server_status_queries.lib.php
│   ├── server_status_variables.lib.php
│   ├── server_user_groups.lib.php
│   ├── server_users.lib.php
│   ├── session.inc.php
│   ├── session.lib.php
│   ├── special_schema_links.lib.php
│   ├── sql.lib.php
│   ├── sql_query_form.lib.php
│   ├── StorageEngine.php
│   ├── string.lib.php
│   ├── stringMb.lib.php
│   ├── stringNative.lib.php
│   ├── SubPartition.php
│   ├── sysinfo.lib.php
│   ├── SysInfoLinux.php
│   ├── SysInfo.php
│   ├── SysInfoSunOS.php
│   ├── SysInfoWINNT.php
│   ├── SystemDatabase.php
│   ├── Table.php
│   ├── tbl_columns_definition_form.inc.php
│   ├── tbl_common.inc.php
│   ├── tbl_info.inc.php
│   ├── tbl_partition_definition.inc.php
│   ├── Template.php
│   ├── ThemeManager.php
│   ├── Theme.php
│   ├── Tracker.php
│   ├── tracking.lib.php
│   ├── transformations.lib.php
│   ├── TypesMySQL.php
│   ├── Types.php
│   ├── URL.php
│   ├── user_preferences.inc.php
│   ├── user_preferences.lib.php
│   ├── util.lib.php
│   ├── Util.php
│   ├── vendor_config.php
│   ├── VersionInformation.php
│   ├── zip_extension.lib.php
│   └── ZipFile.php
├── LICENSE
├── license.php
├── lint.php
├── locale
│   ├── ar
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── az
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── be
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── bg
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── bn
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── ca
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── cs
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── da
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── de
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── el
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── en_GB
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── es
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── et
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── fi
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── fr
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── gl
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── hu
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── hy
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── ia
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── id
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── it
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── ja
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── ko
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── lt
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── nb
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── nl
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── pl
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── pt
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── pt_BR
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── ro
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── ru
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── si
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── sk
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── sl
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── sq
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── sr@latin
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── sv
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── tr
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── uk
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── vi
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   ├── zh_CN
│   │   └── LC_MESSAGES
│   │       └── phpmyadmin.mo
│   └── zh_TW
│       └── LC_MESSAGES
│           └── phpmyadmin.mo
├── logout.php
├── navigation.php
├── normalization.php
├── phpinfo.php
├── phpmyadmin.css.php
├── prefs_forms.php
├── prefs_manage.php
├── print.css
├── README
├── RELEASE-DATE-4.7.4
├── robots.txt
├── schema_export.php
├── server_binlog.php
├── server_collations.php
├── server_databases.php
├── server_engines.php
├── server_export.php
├── server_import.php
├── server_plugins.php
├── server_privileges.php
├── server_replication.php
├── server_sql.php
├── server_status_advisor.php
├── server_status_monitor.php
├── server_status.php
├── server_status_processes.php
├── server_status_queries.php
├── server_status_variables.php
├── server_user_groups.php
├── server_variables.php
├── setup
│   ├── ajax.js
│   ├── config.php
│   ├── frames
│   │   ├── config.inc.php
│   │   ├── form.inc.php
│   │   ├── index.inc.php
│   │   ├── menu.inc.php
│   │   └── servers.inc.php
│   ├── index.php
│   ├── lib
│   │   ├── common.inc.php
│   │   ├── ConfigGenerator.php
│   │   ├── form_processing.lib.php
│   │   └── index.lib.php
│   ├── scripts.js
│   ├── styles.css
│   └── validate.php
├── show_config_errors.php
├── sql
│   ├── create_tables.sql
│   ├── upgrade_column_info_4_3_0+.sql
│   ├── upgrade_tables_4_7_0+.sql
│   └── upgrade_tables_mysql_4_1_2+.sql
├── sql.php
├── tbl_addfield.php
├── tbl_change.php
├── tbl_chart.php
├── tbl_create.php
├── tbl_export.php
├── tbl_find_replace.php
├── tbl_get_field.php
├── tbl_gis_visualization.php
├── tbl_import.php
├── tbl_indexes.php
├── tbl_operations.php
├── tbl_recent_favorite.php
├── tbl_relation.php
├── tbl_replace.php
├── tbl_row_action.php
├── tbl_select.php
├── tbl_sql.php
├── tbl_structure.php
├── tbl_tracking.php
├── tbl_triggers.php
├── tbl_zoom_select.php
├── templates
│   ├── checkbox.phtml
│   ├── columns_definitions
│   │   ├── column_adjust_privileges.phtml
│   │   ├── column_attribute.phtml
│   │   ├── column_attributes.phtml
│   │   ├── column_auto_increment.phtml
│   │   ├── column_comment.phtml
│   │   ├── column_default.phtml
│   │   ├── column_definitions_form.phtml
│   │   ├── column_extra.phtml
│   │   ├── column_indexes.phtml
│   │   ├── column_length.phtml
│   │   ├── column_name.phtml
│   │   ├── column_null.phtml
│   │   ├── column_type.phtml
│   │   ├── column_virtuality.phtml
│   │   ├── mime_type.phtml
│   │   ├── move_column.phtml
│   │   ├── partitions.phtml
│   │   ├── table_fields_definitions.phtml
│   │   ├── transformation_option.phtml
│   │   └── transformation.phtml
│   ├── components
│   │   └── error_message.phtml
│   ├── console
│   │   ├── bookmark_content.phtml
│   │   ├── display.phtml
│   │   ├── query_action.phtml
│   │   └── toolbar.phtml
│   ├── database
│   │   ├── create_table.phtml
│   │   ├── designer
│   │   │   ├── aggregate_query_panel.phtml
│   │   │   ├── canvas.phtml
│   │   │   ├── database_tables.phtml
│   │   │   ├── delete_relation_panel.phtml
│   │   │   ├── edit_delete_pages.phtml
│   │   │   ├── having_query_panel.phtml
│   │   │   ├── js_fields.phtml
│   │   │   ├── new_relation_panel.phtml
│   │   │   ├── options_panel.phtml
│   │   │   ├── page_save_as.phtml
│   │   │   ├── page_selector.phtml
│   │   │   ├── query_details.phtml
│   │   │   ├── rename_to_panel.phtml
│   │   │   ├── schema_export.phtml
│   │   │   ├── side_menu.phtml
│   │   │   ├── table_list.phtml
│   │   │   └── where_query_panel.phtml
│   │   └── structure
│   │       ├── body_for_table_summary.phtml
│   │       ├── browse_table_label.phtml
│   │       ├── browse_table.phtml
│   │       ├── check_all_tables.phtml
│   │       ├── empty_table.phtml
│   │       ├── favorite_anchor.phtml
│   │       ├── print_view_data_dictionary_link.phtml
│   │       ├── search_table.phtml
│   │       ├── show_create.phtml
│   │       ├── show_create_row.phtml
│   │       ├── sortable_header.phtml
│   │       ├── structure_table_row.phtml
│   │       ├── table_header.phtml
│   │       └── tracking_icon.phtml
│   ├── div_for_slider_effect.phtml
│   ├── error
│   │   └── report_form.phtml
│   ├── export
│   │   ├── alias_add.phtml
│   │   └── alias_item.phtml
│   ├── filter.phtml
│   ├── header_location.phtml
│   ├── javascript
│   │   └── display.phtml
│   ├── list
│   │   ├── item.phtml
│   │   └── unordered.phtml
│   ├── navigation
│   │   └── logo.phtml
│   ├── prefs_autoload.phtml
│   ├── preview_sql.phtml
│   ├── privileges
│   │   ├── add_privileges_database.phtml
│   │   ├── add_privileges_routine.phtml
│   │   ├── add_privileges_table.phtml
│   │   ├── add_user_fieldset.phtml
│   │   ├── choose_user_group.phtml
│   │   ├── column_privileges.phtml
│   │   ├── delete_user_fieldset.phtml
│   │   ├── edit_routine_privileges.phtml
│   │   ├── global_priv_table.phtml
│   │   ├── global_priv_tbl_item.phtml
│   │   ├── initials_row.phtml
│   │   ├── privileges_summary.phtml
│   │   ├── privileges_summary_row.phtml
│   │   ├── require_options_item.phtml
│   │   ├── require_options.phtml
│   │   ├── resource_limit_item.phtml
│   │   └── resource_limits.phtml
│   ├── secondary_tabs.phtml
│   ├── select_all.phtml
│   ├── select_lang.phtml
│   ├── server
│   │   ├── binlog
│   │   │   ├── log_row.phtml
│   │   │   └── log_selector.phtml
│   │   ├── collations
│   │   │   └── charsets.phtml
│   │   ├── databases
│   │   │   ├── create.phtml
│   │   │   ├── table_footer.phtml
│   │   │   ├── table_header.phtml
│   │   │   └── table_row.phtml
│   │   ├── engines
│   │   │   ├── engine.phtml
│   │   │   └── engines.phtml
│   │   ├── plugins
│   │   │   ├── section_links.phtml
│   │   │   └── section.phtml
│   │   └── variables
│   │       ├── link_template.phtml
│   │       ├── session_variable_row.phtml
│   │       ├── variable_row.phtml
│   │       └── variable_table_head.phtml
│   ├── startAndNumberOfRowsPanel.phtml
│   ├── table
│   │   ├── chart
│   │   │   └── tbl_chart.phtml
│   │   ├── gis_visualization
│   │   │   └── gis_visualization.phtml
│   │   ├── index_form.phtml
│   │   ├── relation
│   │   │   ├── common_form.phtml
│   │   │   ├── dropdown_generate.phtml
│   │   │   ├── foreign_key_row.phtml
│   │   │   ├── internal_relational_row.phtml
│   │   │   └── relational_dropdown.phtml
│   │   ├── search
│   │   │   ├── column_comparison_operators.phtml
│   │   │   ├── fields_table.phtml
│   │   │   ├── form_tag.phtml
│   │   │   ├── geom_func.phtml
│   │   │   ├── input_box.phtml
│   │   │   ├── options.phtml
│   │   │   ├── options_zoom.phtml
│   │   │   ├── replace_preview.phtml
│   │   │   ├── rows_normal.phtml
│   │   │   ├── rows_zoom.phtml
│   │   │   ├── search_and_replace.phtml
│   │   │   ├── selection_form.phtml
│   │   │   ├── table_header.phtml
│   │   │   └── zoom_result_form.phtml
│   │   ├── secondary_tabs.phtml
│   │   └── structure
│   │       ├── action_row_in_structure_table.phtml
│   │       ├── actions_in_table_structure.phtml
│   │       ├── add_column.phtml
│   │       ├── check_all_table_column.phtml
│   │       ├── display_partitions.phtml
│   │       ├── display_structure.phtml
│   │       ├── display_table_stats.phtml
│   │       ├── move_columns_dialog.phtml
│   │       ├── optional_action_links.phtml
│   │       ├── partition_definition_form.phtml
│   │       ├── row_stats_table.phtml
│   │       ├── table_structure_header.phtml
│   │       └── table_structure_row.phtml
│   ├── test
│   │   ├── add_data.phtml
│   │   ├── echo.phtml
│   │   ├── set_helper.phtml
│   │   ├── static.phtml
│   │   └── trim.phtml
│   └── toggle_button.phtml
├── themes
│   ├── dot.gif
│   ├── original
│   │   ├── css
│   │   │   ├── common.css.php
│   │   │   ├── navigation.css.php
│   │   │   └── printview.css
│   │   ├── img
│   │   │   ├── ajax_clock_small.gif
│   │   │   ├── arrow_ltr.png
│   │   │   ├── arrow_rtl.png
│   │   │   ├── b_bookmark.png
│   │   │   ├── b_browse.png
│   │   │   ├── b_calendar.png
│   │   │   ├── b_chart.png
│   │   │   ├── b_close.png
│   │   │   ├── b_column_add.png
│   │   │   ├── b_comment.png
│   │   │   ├── bd_browse.png
│   │   │   ├── b_dbstatistics.png
│   │   │   ├── bd_deltbl.png
│   │   │   ├── bd_drop.png
│   │   │   ├── bd_edit.png
│   │   │   ├── b_deltbl.png
│   │   │   ├── bd_empty.png
│   │   │   ├── bd_export.png
│   │   │   ├── bd_ftext.png
│   │   │   ├── bd_index.png
│   │   │   ├── bd_insrow.png
│   │   │   ├── bd_nextpage.png
│   │   │   ├── b_docs.png
│   │   │   ├── bd_primary.png
│   │   │   ├── b_drop.png
│   │   │   ├── bd_routine_add.png
│   │   │   ├── bd_sbrowse.png
│   │   │   ├── bd_select.png
│   │   │   ├── bd_spatial.png
│   │   │   ├── bd_unique.png
│   │   │   ├── b_edit.png
│   │   │   ├── b_empty.png
│   │   │   ├── b_engine.png
│   │   │   ├── b_event_add.png
│   │   │   ├── b_events.png
│   │   │   ├── b_export.png
│   │   │   ├── b_favorite.png
│   │   │   ├── b_find_replace.png
│   │   │   ├── b_ftext.png
│   │   │   ├── b_globe.gif
│   │   │   ├── b_group.png
│   │   │   ├── b_help.png
│   │   │   ├── b_home.png
│   │   │   ├── b_import.png
│   │   │   ├── b_index_add.png
│   │   │   ├── b_index.png
│   │   │   ├── b_info.png
│   │   │   ├── b_inline_edit.png
│   │   │   ├── b_insrow.png
│   │   │   ├── b_key.png
│   │   │   ├── b_minus.png
│   │   │   ├── b_more.png
│   │   │   ├── b_move.png
│   │   │   ├── b_newdb.png
│   │   │   ├── b_newtbl.png
│   │   │   ├── b_nextpage.png
│   │   │   ├── b_no_favorite.png
│   │   │   ├── b_plugin.png
│   │   │   ├── b_plus.png
│   │   │   ├── b_primary.png
│   │   │   ├── b_print.png
│   │   │   ├── b_props.png
│   │   │   ├── b_relations.png
│   │   │   ├── b_report.png
│   │   │   ├── b_routine_add.png
│   │   │   ├── b_routines.png
│   │   │   ├── b_saveimage.png
│   │   │   ├── b_save.png
│   │   │   ├── b_sbrowse.png
│   │   │   ├── b_search.png
│   │   │   ├── b_select.png
│   │   │   ├── b_snewtbl.png
│   │   │   ├── b_spatial.png
│   │   │   ├── b_sqlhelp.png
│   │   │   ├── b_sql.png
│   │   │   ├── b_table_add.png
│   │   │   ├── b_tblanalyse.png
│   │   │   ├── b_tblexport.png
│   │   │   ├── b_tblimport.png
│   │   │   ├── b_tblops.png
│   │   │   ├── b_tbloptimize.png
│   │   │   ├── b_tipp.png
│   │   │   ├── b_trigger_add.png
│   │   │   ├── b_triggers.png
│   │   │   ├── b_undo.png
│   │   │   ├── b_unique.png
│   │   │   ├── b_usradd.png
│   │   │   ├── b_usrcheck.png
│   │   │   ├── b_usrdrop.png
│   │   │   ├── b_usredit.png
│   │   │   ├── b_usrlist.png
│   │   │   ├── b_versions.png
│   │   │   ├── b_view_add.png
│   │   │   ├── b_view.png
│   │   │   ├── b_views.png
│   │   │   ├── centralColumns_add.png
│   │   │   ├── centralColumns_delete.png
│   │   │   ├── centralColumns.png
│   │   │   ├── cleardot.gif
│   │   │   ├── col_drop.png
│   │   │   ├── col_pointer.png
│   │   │   ├── col_pointer_ver.png
│   │   │   ├── console.png
│   │   │   ├── east-mini.png
│   │   │   ├── error.ico
│   │   │   ├── eye_grey.png
│   │   │   ├── eye.png
│   │   │   ├── hide.png
│   │   │   ├── lightbulb_off.png
│   │   │   ├── lightbulb.png
│   │   │   ├── logo_left.png
│   │   │   ├── logo_right.png
│   │   │   ├── more.png
│   │   │   ├── new_data_hovered.png
│   │   │   ├── new_data.png
│   │   │   ├── new_data_selected_hovered.png
│   │   │   ├── new_data_selected.png
│   │   │   ├── new_struct_hovered.png
│   │   │   ├── new_struct.png
│   │   │   ├── new_struct_selected_hovered.png
│   │   │   ├── new_struct_selected.png
│   │   │   ├── normalize.png
│   │   │   ├── north-mini.png
│   │   │   ├── pause.png
│   │   │   ├── play.png
│   │   │   ├── s_asci.png
│   │   │   ├── s_asc.png
│   │   │   ├── s_attention.png
│   │   │   ├── s_cancel.png
│   │   │   ├── s_cog.png
│   │   │   ├── s_collapseall.png
│   │   │   ├── s_db.png
│   │   │   ├── s_desc.png
│   │   │   ├── s_error2.png
│   │   │   ├── s_error.png
│   │   │   ├── s_fulltext.png
│   │   │   ├── s_host.png
│   │   │   ├── show.png
│   │   │   ├── s_info.png
│   │   │   ├── s_lang.png
│   │   │   ├── s_link.png
│   │   │   ├── s_lock.png
│   │   │   ├── s_loggoff.png
│   │   │   ├── s_notice.png
│   │   │   ├── s_okay.png
│   │   │   ├── south-mini.png
│   │   │   ├── spacer.png
│   │   │   ├── s_partialtext.png
│   │   │   ├── s_passwd.png
│   │   │   ├── sprites.png
│   │   │   ├── s_really.png
│   │   │   ├── s_reload.png
│   │   │   ├── s_replication.png
│   │   │   ├── s_rights.png
│   │   │   ├── s_sortable.png
│   │   │   ├── s_status.png
│   │   │   ├── s_success.png
│   │   │   ├── s_sync.png
│   │   │   ├── s_tbl.png
│   │   │   ├── s_theme.png
│   │   │   ├── s_top.png
│   │   │   ├── s_unlink.png
│   │   │   ├── s_vars.png
│   │   │   ├── s_views.png
│   │   │   ├── toggle-ltr.png
│   │   │   ├── toggle-rtl.png
│   │   │   ├── vertical_line.png
│   │   │   ├── west-mini.png
│   │   │   ├── window-new.png
│   │   │   ├── zoom-minus-mini.png
│   │   │   ├── zoom-plus-mini.png
│   │   │   └── zoom-world-mini.png
│   │   ├── info.inc.php
│   │   ├── jquery
│   │   │   ├── images
│   │   │   │   ├── ui-bg_glass_55_fbf9ee_1x400.png
│   │   │   │   ├── ui-bg_glass_65_ffffff_1x400.png
│   │   │   │   ├── ui-bg_glass_75_dadada_1x400.png
│   │   │   │   ├── ui-bg_glass_75_e6e6e6_1x400.png
│   │   │   │   ├── ui-bg_glass_95_fef1ec_1x400.png
│   │   │   │   ├── ui-bg_highlight-soft_75_cccccc_1x100.png
│   │   │   │   ├── ui-icons_222222_256x240.png
│   │   │   │   ├── ui-icons_2e83ff_256x240.png
│   │   │   │   ├── ui-icons_454545_256x240.png
│   │   │   │   ├── ui-icons_888888_256x240.png
│   │   │   │   └── ui-icons_cd0a0a_256x240.png
│   │   │   └── jquery-ui.css
│   │   ├── layout.inc.php
│   │   ├── screen.png
│   │   └── sprites.lib.php
│   ├── pmahomme
│   │   ├── css
│   │   │   ├── codemirror.css.php
│   │   │   ├── common.css.php
│   │   │   ├── enum_editor.css.php
│   │   │   ├── gis.css.php
│   │   │   ├── jqplot.css.php
│   │   │   ├── navigation.css.php
│   │   │   ├── pmd.css.php
│   │   │   ├── printview.css
│   │   │   ├── resizable-menu.css.php
│   │   │   └── rte.css.php
│   │   ├── img
│   │   │   ├── ajax_clock_small.gif
│   │   │   ├── arrow_ltr.png
│   │   │   ├── arrow_rtl.png
│   │   │   ├── asc_order.png
│   │   │   ├── b_bookmark.png
│   │   │   ├── b_browse.png
│   │   │   ├── b_calendar.png
│   │   │   ├── b_chart.png
│   │   │   ├── b_close.png
│   │   │   ├── b_column_add.png
│   │   │   ├── b_comment.png
│   │   │   ├── bd_browse.png
│   │   │   ├── b_dbstatistics.png
│   │   │   ├── bd_deltbl.png
│   │   │   ├── bd_drop.png
│   │   │   ├── bd_edit.png
│   │   │   ├── b_deltbl.png
│   │   │   ├── bd_empty.png
│   │   │   ├── bd_export.png
│   │   │   ├── bd_firstpage.png
│   │   │   ├── bd_ftext.png
│   │   │   ├── bd_index.png
│   │   │   ├── bd_insrow.png
│   │   │   ├── bd_lastpage.png
│   │   │   ├── bd_nextpage.png
│   │   │   ├── b_docs.png
│   │   │   ├── b_docsql.png
│   │   │   ├── bd_prevpage.png
│   │   │   ├── bd_primary.png
│   │   │   ├── b_drop.png
│   │   │   ├── bd_routine_add.png
│   │   │   ├── bd_sbrowse.png
│   │   │   ├── bd_select.png
│   │   │   ├── bd_spatial.png
│   │   │   ├── bd_unique.png
│   │   │   ├── b_edit.png
│   │   │   ├── b_empty.png
│   │   │   ├── b_engine.png
│   │   │   ├── b_event_add.png
│   │   │   ├── b_events.png
│   │   │   ├── b_export.png
│   │   │   ├── b_favorite.png
│   │   │   ├── b_find_replace.png
│   │   │   ├── b_firstpage.png
│   │   │   ├── b_ftext.png
│   │   │   ├── b_globe.gif
│   │   │   ├── b_group.png
│   │   │   ├── b_help.png
│   │   │   ├── b_home.png
│   │   │   ├── b_import.png
│   │   │   ├── b_index_add.png
│   │   │   ├── b_index.png
│   │   │   ├── b_info.png
│   │   │   ├── b_inline_edit.png
│   │   │   ├── b_insrow.png
│   │   │   ├── b_key.png
│   │   │   ├── b_lastpage.png
│   │   │   ├── b_minus.png
│   │   │   ├── b_more.png
│   │   │   ├── b_move.png
│   │   │   ├── b_newdb.png
│   │   │   ├── b_newtbl.png
│   │   │   ├── b_nextpage.png
│   │   │   ├── b_no_favorite.png
│   │   │   ├── b_pdfdoc.png
│   │   │   ├── b_plugin.png
│   │   │   ├── b_plus.png
│   │   │   ├── b_prevpage.png
│   │   │   ├── b_primary.png
│   │   │   ├── b_print.png
│   │   │   ├── b_props.png
│   │   │   ├── b_relations.png
│   │   │   ├── b_report.png
│   │   │   ├── b_routine_add.png
│   │   │   ├── b_routines.png
│   │   │   ├── b_saveimage.png
│   │   │   ├── b_save.png
│   │   │   ├── b_sbrowse.png
│   │   │   ├── b_sdb.png
│   │   │   ├── b_search.png
│   │   │   ├── b_select.png
│   │   │   ├── b_snewtbl.png
│   │   │   ├── b_spatial.png
│   │   │   ├── b_sqldoc.png
│   │   │   ├── b_sqlhelp.png
│   │   │   ├── b_sql.png
│   │   │   ├── b_table_add.png
│   │   │   ├── b_tblanalyse.png
│   │   │   ├── b_tblexport.png
│   │   │   ├── b_tblimport.png
│   │   │   ├── b_tblops.png
│   │   │   ├── b_tbloptimize.png
│   │   │   ├── b_tipp.png
│   │   │   ├── b_trigger_add.png
│   │   │   ├── b_triggers.png
│   │   │   ├── b_undo.png
│   │   │   ├── b_unique.png
│   │   │   ├── b_usradd.png
│   │   │   ├── b_usrcheck.png
│   │   │   ├── b_usrdrop.png
│   │   │   ├── b_usredit.png
│   │   │   ├── b_usrlist.png
│   │   │   ├── b_versions.png
│   │   │   ├── b_view_add.png
│   │   │   ├── b_view.png
│   │   │   ├── b_views.png
│   │   │   ├── centralColumns_add.png
│   │   │   ├── centralColumns_delete.png
│   │   │   ├── centralColumns.png
│   │   │   ├── col_drop.png
│   │   │   ├── col_pointer.png
│   │   │   ├── col_pointer_ver.png
│   │   │   ├── console.png
│   │   │   ├── database.png
│   │   │   ├── east-mini.png
│   │   │   ├── error.ico
│   │   │   ├── eye_grey.png
│   │   │   ├── eye.png
│   │   │   ├── hide.png
│   │   │   ├── item.png
│   │   │   ├── left_nav_bg.png
│   │   │   ├── lightbulb_off.png
│   │   │   ├── lightbulb.png
│   │   │   ├── logo_left.png
│   │   │   ├── logo_right.png
│   │   │   ├── more.png
│   │   │   ├── new_data_hovered.png
│   │   │   ├── new_data.png
│   │   │   ├── new_data_selected_hovered.png
│   │   │   ├── new_data_selected.png
│   │   │   ├── new_struct_hovered.png
│   │   │   ├── new_struct.png
│   │   │   ├── new_struct_selected_hovered.png
│   │   │   ├── new_struct_selected.png
│   │   │   ├── normalize.png
│   │   │   ├── north-mini.png
│   │   │   ├── pause.png
│   │   │   ├── php_sym.png
│   │   │   ├── play.png
│   │   │   ├── pma_logo2.png
│   │   │   ├── pmd
│   │   │   │   ├── 1.png
│   │   │   │   ├── 2leftarrow_m.png
│   │   │   │   ├── 2leftarrow.png
│   │   │   │   ├── 2.png
│   │   │   │   ├── 2rightarrow_m.png
│   │   │   │   ├── 2rightarrow.png
│   │   │   │   ├── 3.png
│   │   │   │   ├── 4.png
│   │   │   │   ├── 5.png
│   │   │   │   ├── 6.png
│   │   │   │   ├── 7.png
│   │   │   │   ├── 8.png
│   │   │   │   ├── anchor.png
│   │   │   │   ├── and_icon.png
│   │   │   │   ├── ang_direct.png
│   │   │   │   ├── bord.png
│   │   │   │   ├── bottom.png
│   │   │   │   ├── def.png
│   │   │   │   ├── display_field.png
│   │   │   │   ├── downarrow1.png
│   │   │   │   ├── downarrow2_m.png
│   │   │   │   ├── downarrow2.png
│   │   │   │   ├── exec.png
│   │   │   │   ├── exec_small.png
│   │   │   │   ├── exitFullscreen.png
│   │   │   │   ├── export.png
│   │   │   │   ├── favicon.ico
│   │   │   │   ├── FieldKey_small.png
│   │   │   │   ├── Field_small_char.png
│   │   │   │   ├── Field_small_date.png
│   │   │   │   ├── Field_small_int.png
│   │   │   │   ├── Field_small.png
│   │   │   │   ├── grid.png
│   │   │   │   ├── Header_Linked.png
│   │   │   │   ├── Header.png
│   │   │   │   ├── help.png
│   │   │   │   ├── help_relation.png
│   │   │   │   ├── left_panel_butt.png
│   │   │   │   ├── left_panel_tab.png
│   │   │   │   ├── minus.png
│   │   │   │   ├── or_icon.png
│   │   │   │   ├── page_add.png
│   │   │   │   ├── page_delete.png
│   │   │   │   ├── page_edit.png
│   │   │   │   ├── pdf.png
│   │   │   │   ├── plus.png
│   │   │   │   ├── query_builder.png
│   │   │   │   ├── relation.png
│   │   │   │   ├── reload.png
│   │   │   │   ├── resize.png
│   │   │   │   ├── resizeright.png
│   │   │   │   ├── rightarrow1.png
│   │   │   │   ├── rightarrow2.png
│   │   │   │   ├── save_as.png
│   │   │   │   ├── save.png
│   │   │   │   ├── small_tab.png
│   │   │   │   ├── table.png
│   │   │   │   ├── toggle_lines.png
│   │   │   │   ├── top_panel.png
│   │   │   │   ├── uparrow2_m.png
│   │   │   │   └── viewInFullscreen.png
│   │   │   ├── s_asci.png
│   │   │   ├── s_asc.png
│   │   │   ├── s_attention.png
│   │   │   ├── s_cancel2.png
│   │   │   ├── s_cancel.png
│   │   │   ├── s_cog.png
│   │   │   ├── s_collapseall.png
│   │   │   ├── s_db.png
│   │   │   ├── s_desc.png
│   │   │   ├── select_bg.png
│   │   │   ├── s_error2.png
│   │   │   ├── s_error.png
│   │   │   ├── s_fulltext.png
│   │   │   ├── s_host.png
│   │   │   ├── show.png
│   │   │   ├── s_info.png
│   │   │   ├── s_lang.png
│   │   │   ├── s_link.png
│   │   │   ├── s_lock.png
│   │   │   ├── s_loggoff.png
│   │   │   ├── s_notice.png
│   │   │   ├── s_okay.png
│   │   │   ├── south-mini.png
│   │   │   ├── spacer.png
│   │   │   ├── s_partialtext.png
│   │   │   ├── s_passwd.png
│   │   │   ├── sprites.png
│   │   │   ├── s_process.png
│   │   │   ├── s_really.png
│   │   │   ├── s_reload.png
│   │   │   ├── s_replication.png
│   │   │   ├── s_rights.png
│   │   │   ├── s_sortable.png
│   │   │   ├── s_status.png
│   │   │   ├── s_success.png
│   │   │   ├── s_sync.png
│   │   │   ├── s_tbl.png
│   │   │   ├── s_theme.png
│   │   │   ├── s_top.png
│   │   │   ├── s_unlink.png
│   │   │   ├── s_vars.png
│   │   │   ├── s_views.png
│   │   │   ├── toggle-ltr.png
│   │   │   ├── toggle-rtl.png
│   │   │   ├── vertical_line.png
│   │   │   ├── west-mini.png
│   │   │   ├── window-new.png
│   │   │   ├── zoom-minus-mini.png
│   │   │   ├── zoom-plus-mini.png
│   │   │   └── zoom-world-mini.png
│   │   ├── info.inc.php
│   │   ├── jquery
│   │   │   ├── images
│   │   │   │   ├── ui-bg_glass_55_fbf9ee_1x400.png
│   │   │   │   ├── ui-bg_glass_65_ffffff_1x400.png
│   │   │   │   ├── ui-bg_glass_75_dadada_1x400.png
│   │   │   │   ├── ui-bg_glass_75_e6e6e6_1x400.png
│   │   │   │   ├── ui-bg_glass_95_fef1ec_1x400.png
│   │   │   │   ├── ui-bg_highlight-soft_75_cccccc_1x100.png
│   │   │   │   ├── ui-icons_222222_256x240.png
│   │   │   │   ├── ui-icons_2e83ff_256x240.png
│   │   │   │   ├── ui-icons_454545_256x240.png
│   │   │   │   ├── ui-icons_888888_256x240.png
│   │   │   │   └── ui-icons_cd0a0a_256x240.png
│   │   │   └── jquery-ui.css
│   │   ├── layout.inc.php
│   │   ├── screen.png
│   │   └── sprites.lib.php
│   └── svg_gradient.php
├── themes.php
├── transformation_overview.php
├── transformation_wrapper.php
├── url.php
├── user_password.php
├── vendor
│   ├── autoload.php
│   ├── bin
│   │   ├── highlight-query -> ../phpmyadmin/sql-parser/bin/highlight-query
│   │   └── lint-query -> ../phpmyadmin/sql-parser/bin/lint-query
│   ├── composer
│   │   ├── autoload_classmap.php
│   │   ├── autoload_files.php
│   │   ├── autoload_namespaces.php
│   │   ├── autoload_psr4.php
│   │   ├── autoload_real.php
│   │   ├── autoload_static.php
│   │   ├── ClassLoader.php
│   │   ├── installed.json
│   │   └── LICENSE
│   ├── google
│   │   └── recaptcha
│   │       ├── composer.json
│   │       ├── CONTRIBUTING.md
│   │       ├── LICENSE
│   │       ├── phpunit.xml.dist
│   │       ├── README.md
│   │       └── src
│   │           ├── autoload.php
│   │           └── ReCaptcha
│   │               ├── ReCaptcha.php
│   │               ├── RequestMethod
│   │               │   ├── Curl.php
│   │               │   ├── CurlPost.php
│   │               │   ├── Post.php
│   │               │   ├── Socket.php
│   │               │   └── SocketPost.php
│   │               ├── RequestMethod.php
│   │               ├── RequestParameters.php
│   │               └── Response.php
│   ├── phpmyadmin
│   │   ├── motranslator
│   │   │   ├── CHANGES.md
│   │   │   ├── codecov.yml
│   │   │   ├── composer.json
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── LICENSE
│   │   │   ├── PERFORMANCE.md
│   │   │   ├── phpunit.xml
│   │   │   ├── README.md
│   │   │   └── src
│   │   │       ├── functions.php
│   │   │       ├── Loader.php
│   │   │       ├── ReaderException.php
│   │   │       ├── StringReader.php
│   │   │       └── Translator.php
│   │   ├── shapefile
│   │   │   ├── CHANGELOG.md
│   │   │   ├── codecov.yml
│   │   │   ├── composer.json
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── LICENSE
│   │   │   ├── phpunit.xml
│   │   │   ├── README.md
│   │   │   └── src
│   │   │       ├── ShapeFile.php
│   │   │       ├── ShapeRecord.php
│   │   │       └── Util.php
│   │   └── sql-parser
│   │       ├── bin
│   │       │   ├── highlight-query
│   │       │   ├── lint-query
│   │       │   └── tokenize-query
│   │       ├── CHANGELOG.md
│   │       ├── codecov.yml
│   │       ├── composer.json
│   │       ├── CONTRIBUTING.md
│   │       ├── LICENSE.txt
│   │       ├── locale
│   │       │   ├── af
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ar
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ast
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── az
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── be
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── be@latin
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── bg
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── bn
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── br
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── brx
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── bs
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ca
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ckb
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── cs
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── cy
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── da
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── de
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── el
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── en_GB
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── eo
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── es
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── et
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── eu
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── fa
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── fi
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── fr
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── fy
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── gl
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── gu
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── he
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── hi
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── hr
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── hu
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── hy
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ia
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── id
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── it
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ja
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ka
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── kk
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── km
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── kn
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ko
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ksh
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ky
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── li
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── lt
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── lv
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── mk
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ml
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── mn
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ms
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── nb
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ne
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── nl
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── pa
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── pl
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── pt
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── pt_BR
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ro
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ru
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── si
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── sk
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── sl
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── sq
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── sqlparser.pot
│   │       │   ├── sr
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── sr@latin
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── sv
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ta
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── te
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── th
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── tk
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── tr
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── tt
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ug
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── uk
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── ur
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── uz
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── uz@latin
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── vi
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── vls
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   ├── zh_CN
│   │       │   │   └── LC_MESSAGES
│   │       │   │       └── sqlparser.mo
│   │       │   └── zh_TW
│   │       │       └── LC_MESSAGES
│   │       │           └── sqlparser.mo
│   │       ├── phpunit.xml
│   │       ├── README.md
│   │       └── src
│   │           ├── Component.php
│   │           ├── Components
│   │           │   ├── AlterOperation.php
│   │           │   ├── Array2d.php
│   │           │   ├── ArrayObj.php
│   │           │   ├── CaseExpression.php
│   │           │   ├── Condition.php
│   │           │   ├── CreateDefinition.php
│   │           │   ├── DataType.php
│   │           │   ├── ExpressionArray.php
│   │           │   ├── Expression.php
│   │           │   ├── FunctionCall.php
│   │           │   ├── GroupKeyword.php
│   │           │   ├── IntoKeyword.php
│   │           │   ├── JoinKeyword.php
│   │           │   ├── Key.php
│   │           │   ├── Limit.php
│   │           │   ├── OptionsArray.php
│   │           │   ├── OrderKeyword.php
│   │           │   ├── ParameterDefinition.php
│   │           │   ├── PartitionDefinition.php
│   │           │   ├── Reference.php
│   │           │   ├── RenameOperation.php
│   │           │   ├── SetOperation.php
│   │           │   └── UnionKeyword.php
│   │           ├── Context.php
│   │           ├── Contexts
│   │           │   ├── ContextMySql50000.php
│   │           │   ├── ContextMySql50100.php
│   │           │   ├── ContextMySql50500.php
│   │           │   ├── ContextMySql50600.php
│   │           │   └── ContextMySql50700.php
│   │           ├── Core.php
│   │           ├── Exceptions
│   │           │   ├── LexerException.php
│   │           │   ├── LoaderException.php
│   │           │   └── ParserException.php
│   │           ├── Lexer.php
│   │           ├── Parser.php
│   │           ├── Statement.php
│   │           ├── Statements
│   │           │   ├── AlterStatement.php
│   │           │   ├── AnalyzeStatement.php
│   │           │   ├── BackupStatement.php
│   │           │   ├── CallStatement.php
│   │           │   ├── CheckStatement.php
│   │           │   ├── ChecksumStatement.php
│   │           │   ├── CreateStatement.php
│   │           │   ├── DeleteStatement.php
│   │           │   ├── DropStatement.php
│   │           │   ├── ExplainStatement.php
│   │           │   ├── InsertStatement.php
│   │           │   ├── LoadStatement.php
│   │           │   ├── MaintenanceStatement.php
│   │           │   ├── NotImplementedStatement.php
│   │           │   ├── OptimizeStatement.php
│   │           │   ├── RenameStatement.php
│   │           │   ├── RepairStatement.php
│   │           │   ├── ReplaceStatement.php
│   │           │   ├── RestoreStatement.php
│   │           │   ├── SelectStatement.php
│   │           │   ├── SetStatement.php
│   │           │   ├── ShowStatement.php
│   │           │   ├── TransactionStatement.php
│   │           │   ├── TruncateStatement.php
│   │           │   └── UpdateStatement.php
│   │           ├── Token.php
│   │           ├── TokensList.php
│   │           ├── Translator.php
│   │           ├── UtfString.php
│   │           └── Utils
│   │               ├── BufferedQuery.php
│   │               ├── CLI.php
│   │               ├── Error.php
│   │               ├── Formatter.php
│   │               ├── Misc.php
│   │               ├── Query.php
│   │               ├── Routine.php
│   │               ├── Table.php
│   │               └── Tokens.php
│   ├── phpseclib
│   │   └── phpseclib
│   │       ├── AUTHORS
│   │       ├── composer.json
│   │       ├── composer.lock
│   │       ├── LICENSE
│   │       ├── phpseclib
│   │       │   ├── bootstrap.php
│   │       │   ├── Crypt
│   │       │   │   ├── AES.php
│   │       │   │   ├── Base.php
│   │       │   │   ├── Random.php
│   │       │   │   └── Rijndael.php
│   │       │   └── openssl.cnf
│   │       └── README.md
│   ├── psr
│   │   ├── cache
│   │   │   ├── CHANGELOG.md
│   │   │   ├── composer.json
│   │   │   ├── LICENSE.txt
│   │   │   ├── README.md
│   │   │   └── src
│   │   │       ├── CacheException.php
│   │   │       ├── CacheItemInterface.php
│   │   │       ├── CacheItemPoolInterface.php
│   │   │       └── InvalidArgumentException.php
│   │   ├── log
│   │   │   ├── composer.json
│   │   │   ├── LICENSE
│   │   │   ├── Psr
│   │   │   │   └── Log
│   │   │   │       ├── AbstractLogger.php
│   │   │   │       ├── InvalidArgumentException.php
│   │   │   │       ├── LoggerAwareInterface.php
│   │   │   │       ├── LoggerAwareTrait.php
│   │   │   │       ├── LoggerInterface.php
│   │   │   │       ├── LoggerTrait.php
│   │   │   │       ├── LogLevel.php
│   │   │   │       ├── NullLogger.php
│   │   │   │       └── Test
│   │   │   │           └── LoggerInterfaceTest.php
│   │   │   └── README.md
│   │   └── simple-cache
│   │       ├── composer.json
│   │       ├── LICENSE.md
│   │       ├── README.md
│   │       └── src
│   │           ├── CacheException.php
│   │           ├── CacheInterface.php
│   │           └── InvalidArgumentException.php
│   ├── symfony
│   │   ├── cache
│   │   │   ├── Adapter
│   │   │   │   ├── AbstractAdapter.php
│   │   │   │   ├── AdapterInterface.php
│   │   │   │   ├── ApcuAdapter.php
│   │   │   │   ├── ArrayAdapter.php
│   │   │   │   ├── ChainAdapter.php
│   │   │   │   ├── DoctrineAdapter.php
│   │   │   │   ├── FilesystemAdapter.php
│   │   │   │   ├── MemcachedAdapter.php
│   │   │   │   ├── NullAdapter.php
│   │   │   │   ├── PdoAdapter.php
│   │   │   │   ├── PhpArrayAdapter.php
│   │   │   │   ├── PhpFilesAdapter.php
│   │   │   │   ├── ProxyAdapter.php
│   │   │   │   ├── RedisAdapter.php
│   │   │   │   ├── SimpleCacheAdapter.php
│   │   │   │   ├── TagAwareAdapterInterface.php
│   │   │   │   ├── TagAwareAdapter.php
│   │   │   │   ├── TraceableAdapter.php
│   │   │   │   └── TraceableTagAwareAdapter.php
│   │   │   ├── CacheItem.php
│   │   │   ├── CHANGELOG.md
│   │   │   ├── composer.json
│   │   │   ├── DataCollector
│   │   │   │   └── CacheDataCollector.php
│   │   │   ├── DoctrineProvider.php
│   │   │   ├── Exception
│   │   │   │   ├── CacheException.php
│   │   │   │   └── InvalidArgumentException.php
│   │   │   ├── LICENSE
│   │   │   ├── phpunit.xml.dist
│   │   │   ├── README.md
│   │   │   ├── Simple
│   │   │   │   ├── AbstractCache.php
│   │   │   │   ├── ApcuCache.php
│   │   │   │   ├── ArrayCache.php
│   │   │   │   ├── ChainCache.php
│   │   │   │   ├── DoctrineCache.php
│   │   │   │   ├── FilesystemCache.php
│   │   │   │   ├── MemcachedCache.php
│   │   │   │   ├── NullCache.php
│   │   │   │   ├── PdoCache.php
│   │   │   │   ├── PhpArrayCache.php
│   │   │   │   ├── PhpFilesCache.php
│   │   │   │   ├── Psr6Cache.php
│   │   │   │   ├── RedisCache.php
│   │   │   │   └── TraceableCache.php
│   │   │   └── Traits
│   │   │       ├── AbstractTrait.php
│   │   │       ├── ApcuTrait.php
│   │   │       ├── ArrayTrait.php
│   │   │       ├── DoctrineTrait.php
│   │   │       ├── FilesystemCommonTrait.php
│   │   │       ├── FilesystemTrait.php
│   │   │       ├── MemcachedTrait.php
│   │   │       ├── PdoTrait.php
│   │   │       ├── PhpArrayTrait.php
│   │   │       ├── PhpFilesTrait.php
│   │   │       └── RedisTrait.php
│   │   └── expression-language
│   │       ├── CHANGELOG.md
│   │       ├── Compiler.php
│   │       ├── composer.json
│   │       ├── ExpressionFunction.php
│   │       ├── ExpressionFunctionProviderInterface.php
│   │       ├── ExpressionLanguage.php
│   │       ├── Expression.php
│   │       ├── Lexer.php
│   │       ├── LICENSE
│   │       ├── Node
│   │       │   ├── ArgumentsNode.php
│   │       │   ├── ArrayNode.php
│   │       │   ├── BinaryNode.php
│   │       │   ├── ConditionalNode.php
│   │       │   ├── ConstantNode.php
│   │       │   ├── FunctionNode.php
│   │       │   ├── GetAttrNode.php
│   │       │   ├── NameNode.php
│   │       │   ├── Node.php
│   │       │   └── UnaryNode.php
│   │       ├── ParsedExpression.php
│   │       ├── ParserCache
│   │       │   ├── ArrayParserCache.php
│   │       │   ├── ParserCacheAdapter.php
│   │       │   └── ParserCacheInterface.php
│   │       ├── Parser.php
│   │       ├── phpunit.xml.dist
│   │       ├── README.md
│   │       ├── SerializedParsedExpression.php
│   │       ├── SyntaxError.php
│   │       ├── Token.php
│   │       └── TokenStream.php
│   └── tecnickcom
│       └── tcpdf
│           ├── CHANGELOG.TXT
│           ├── composer.json
│           ├── config
│           │   └── tcpdf_config.php
│           ├── fonts
│           │   ├── dejavu-fonts-ttf-2.34
│           │   │   ├── AUTHORS
│           │   │   ├── BUGS
│           │   │   ├── langcover.txt
│           │   │   ├── LICENSE
│           │   │   ├── NEWS
│           │   │   ├── README
│           │   │   ├── status.txt
│           │   │   └── unicover.txt
│           │   ├── dejavusansb.ctg.z
│           │   ├── dejavusansb.php
│           │   ├── dejavusansb.z
│           │   ├── dejavusans.ctg.z
│           │   ├── dejavusans.php
│           │   ├── dejavusans.z
│           │   └── helvetica.php
│           ├── include
│           │   ├── barcodes
│           │   │   ├── datamatrix.php
│           │   │   ├── pdf417.php
│           │   │   └── qrcode.php
│           │   ├── tcpdf_colors.php
│           │   ├── tcpdf_filters.php
│           │   ├── tcpdf_font_data.php
│           │   ├── tcpdf_fonts.php
│           │   ├── tcpdf_images.php
│           │   └── tcpdf_static.php
│           ├── LICENSE.TXT
│           ├── README.md
│           ├── tcpdf_autoconfig.php
│           ├── tcpdf_barcodes_1d.php
│           ├── tcpdf_barcodes_2d.php
│           ├── tcpdf_import.php
│           ├── tcpdf_parser.php
│           └── tcpdf.php
├── version_check.php
├── view_create.php
└── view_operations.php

482 directories, 2336 files

grundlegende Konfiguration

Apache vHOST

Im ersten Konfigurationsbeispiel richten wir uns einen vHOST für unseren Apache-Webserver ein. Hier legen wir uns nachfolgende Konfigurationsdatei an und passen dieser entsprechend unserer Umgebung nach an.

 # vim /etc/httpd/conf.d/phpMyAdmin.conf
/etc/httpd/conf.d/phpMyAdmin.conf
#
# Django : 2017-10-06
#          vHost phpmyadmin
#
 
# Variablen der Hostvariablen
Define vhost phpmyadmin
Define errors_log logs/${vhost}_error.log
Define access_log logs/${vhost}_access.log
Define ssl_log logs/${vhost}_ssl_request.log
 
<VirtualHost *:80>
    ServerAdmin webmaster@nausch.org
    ServerName ${vhost}.nausch.org
 
    # HTTP auf HTTPS umleiten
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
 
    # Welche Logdateien sollen beschrieben werden
    SetEnvIf Remote_Addr "10\.0\.0\.117" dontlog
    ErrorLog  ${errors_log}
    CustomLog ${access_log} combined env=!dontlog
</VirtualHost>
<VirtualHost *:443>
    ServerAdmin webmaster@nausch.org
    ServerName ${vhost}.nausch.org
    ServerPath /
 
    # Wer soll Zugriff auf die Webseite(n) bekommen?
    <Location />
        Options +FollowSymLinks +Multiviews -Indexes
        AllowOverride None
        AuthType Basic
        AuthName "Fuer den Zugriff auf den Webserver bitte Anmeldedaten eingeben!"
        AuthBasicProvider ldap
        AuthLDAPUrl ldaps://openldap.dmz.nausch.org:636/ou=People,dc=nausch,dc=org?uid
        AuthLDAPBindDN cn=Technischeruser,dc=nausch,dc=org
        AuthLDAPBindPassword "e1n531f!D4xIi57n38103034u!"
        AuthLDAPBindAuthoritative on
        Require ldap-user pma-admin
    </Location>
 
    # Welcher Inhalt soll angezeigt bzw. auf welchen Server sollen die HTTP-Requests weitergeleitet werden?
    DocumentRoot   "/usr/share/phpMyAdmin/"
    DirectoryIndex index.php
 
    <Directory /usr/share/phpMyAdmin/>
        Options none
        AllowOverride Limit
        Require all granted
    </Directory>
 
    <LocationMatch "/(config.inc.php|configs|scripts|smarty|tests|users|VIRTUAL_VACATION)/">
        Require all denied
    </LocationMatch>
 
    # Nutzung des PHP-FPM Interpreters
    <FilesMatch \.php$>
        SetHandler "proxy:fcgi://127.0.0.1:9001"
        #SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
 
    # Welche Logdateien sollen beschrieben werden
    SetEnvIf Remote_Addr "10\.0\.0\.117" dontlog
    ErrorLog  ${errors_log}
    CustomLog ${access_log} combined env=!dontlog
    CustomLog ${ssl_log} "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 
    # Absicherung der Übertragung mit Hilfe von TLS
    # Django : 2015-10-04 - TLS-Verschlüsselung mit Hilfe von mod_ssl
    SSLEngine on
    # Definition der anzubietenden Protokolle
    SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    # Definition der Cipher
    SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384
    # Schlüsseldatei, mit der der CSR erstellt wurde
    SSLCertificateKeyFile /etc/pki/tls/private/wildcard_2017.nausch.org.serverkey.pem
    # Zertifikatsdatei, die von der CA signiert wurde
    SSLCertificateFile /etc/pki/tls/certs/wildcard_2017.nausch.org.certificate_161118.pem
    # Zertifikatsdatei des bzw. der Intermediate-Zertifikate(s)
    SSLCertificateChainFile /etc/pki/tls/certs/AlphaSSL_Intermediate.certificate.pem
    # Änderung der Cipherorder der Clients verneinen 
    SSLHonorCipherOrder on
    # TLS 1.0 Kompremmierung deaktivieren (CRIME attacks)
    SSLCompression off
    # Online Certificate Status Protocol stapling zum Prüfen des Gültigkeitsstatus des Serverzertifikats.
    SSLUseStapling on
    SSLStaplingResponderTimeout 5
    SSLStaplingReturnResponderErrors off
 
    # HTTP Strict Transport Security (HSTS), bei dem der Server dem Client im HTTP-Header mitteilt,
    # dass dieser nur noch verschlüsselt mit dem Server kommunizieren soll.
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
 
    # This header enables the Cross-site scripting (XSS) filter built into most recent web browsers.
    # It's usually enabled by default anyway, so the role of this header is to re-enable the filter for
    # this particular website if it was disabled by the user.
    # https://www.owasp.org/index.php/List_of_useful_HTTP_headers
    #Header set X-XSS-Protection "1; mode=block"
    Header always set X-Xss-Protection "1; mode=block"
 
    # when serving user-supplied content, include a X-Content-Type-Options: nosniff header along with the Content-Type: header,
    # to disable content-type sniffing on some browsers.
    # https://www.owasp.org/index.php/List_of_useful_HTTP_headers
    # currently suppoorted in IE > 8 http://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx
    # http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx
    # 'soon' on Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=471020
    # Sofern die Datei auch den entsprechenden MIME-Typ "text/css" entspricht, soll der Browser 
    # CSS-Dateien nur als CSS interprätieren.
    Header always set X-Content-Type-Options nosniff
 
    # config to don't allow the browser to render the page inside an frame or iframe
    # and avoid clickjacking http://en.wikipedia.org/wiki/Clickjacking
    # if you need to allow [i]frames, you can use SAMEORIGIN or even set an uri with ALLOW-FROM uri
    # https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options
    ###header set X-Frame-Options SAMEORIGIN
    header always set X-Frame-Options DENY
 
    # hide server header (apache and php version)
    Header always unset Server
 
    # Only allow JavaScript from the same domain to be run.
    # don't allow inline JavaScript to run.
    Header always set X-Content-Security-Policy "allow 'self';"
    #Header always set Content-Security-Policy "default-src 'self'; report-uri https://nausch.report-uri.io/r/default/csp/enforce"
 
    # Add Secure and HTTP only attributes to cookies
    Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
 
    # prevent Clickjacking Attack
    #Header always append X-Frame-Options SAMEORIGIN
    Header always set X-Frame-Options "SAMEORIGIN"
 
    # hkpk-stuff
    Header always set Public-Key-Pins "pin-sha256=\"nMiOpb6vUnjCoWCkPkDaxieG4ND8SNWzFTsQf2ZfruLno0=\"; pin-sha256=\"INhxSQ38nCS6ijaAAyo4xBabej9xeL3Xaak+GGiM2fo=\"; max-age=2592000; report-uri=\"https://nausch.report-uri.io/r/default/hpkp/enforce\""
</VirtualHost>

Haben wir die Konfigurationsdatei vervollständigt, prüfen wir diese noch auf syntaktische Fehler.

 # apachectl -t
 Syntax OK

Ein reload unseres Apache Webserver reicht nun aus, um den neuen vHOST verfügbar zu haben.

 # systemctl reload httpd.service

Datenbankkonfiguration / User

In der Regel werden wir auf unserem Datenbank- keinen Webserver installiert haben, sondern hierzu zwei eigenständige Server verwenden. Im Kapitel Installation absichern hatten wir bei der Installation unseres MariaDB-Servers unter anderem den Remotezugang für den Datenbankuser root unterbunden.

Wir werden uns daher einen eigenen Datenbanknutzer anlegen, der die entsprechenden Rechte besitzt. Hierzu sind folgende Schritte notwendig:

  1. Anmelden auf dem Datenbankserver
  2. Neuen Benutzer anlegen
  3. Benutzerprivilegien setzen und zuweisen
  4. Rechte des Nutzers in der Datenbank neu laden
  5. Beenden der Verbindung zum Datenbankserver
  1. Anmelden auf dem Datenbankserver
    Wir melden uns also als berechtigter Datenbankuser an der MariaDB an.
     # mysql -h localhost -u root -p
    Enter password: 
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 42
    Server version: 5.5.56-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    MariaDB>
  2. neuen Benutzer anlegen
    Mit folgendem Befehl legen wir uns einen neuen Nutzer an:
    MariaDB> CREATE USER 'databaseuser'@'vml000107.dmz.nausch.org' IDENTIFIED BY 'databasepassword';
    Query OK, 0 rows affected (0.00 sec)

    sowie

    MariaDB> CREATE USER 'databaseuser'@'10.0.0.107' IDENTIFIED BY 'databasepassword';
    Query OK, 0 rows affected (0.00 sec)
  3. Benutzerprivilegien setzen und zuweisen
    Anschließend setzen wir die Benutzerrechte unseres gerade angelegten Datenbanknutzers.
    MariaDB> GRANT ALL PRIVILEGES ON * . * TO 'databaseuser'@'vml000107.dmz.nausch.org' IDENTIFIED BY 'databasepassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
    Query OK, 0 rows affected (0.00 sec)

    und

    MariaDB> GRANT ALL PRIVILEGES ON * . * TO 'databaseuser'@'10.0.0.107' IDENTIFIED BY 'databasepassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
    Query OK, 0 rows affected (0.00 sec)
  4. Rechte des Nutzers in der Datenbank neu laden
    Im letzten Schritt laden wir nun die Rechte unseres neuen Datenbankusers.
    MariaDB> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.00 sec)
  5. Datenbankverbindung beenden
    Unsere Konfiguration unseres neuen Datenbanknutzers ist hiermit beendet und wir können die Verbindung zur Datenbank wieder schließen.
    MariaDB> exit
    Bye

Zugriff testen

Zum Schluss überprüfen wir, ob der zuvor angelegt User/Zugang auch vom Webserver aus funktioniert.

 # mysql -h mariadb.dmz.nausch.org -u databaseuser -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 1269396
Server version: 5.5.56 Source distribution

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

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

MariaDB [(none)]>
 MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cacti              |
| dmarc              |
| fhem               |
| horde              |
| mail               |
| mysql              |
| opendmarc          |
| postfix            |
| roundcubemail      |
| webstats           |
| wviewDB            |
+--------------------+
12 rows in set (0.00 sec)

MariaDB [(none)]>

Da der Test positiv ausgefallen ist, können wie uns wieder von unserem Datenbankserver abmelden.

 MariaDB [(none)]> quit
 Bye

PMADB

Mit Hilfe der PMADB1), einer internen Datenbanktabelle auf unserem Datenbankserver, können weitere Funktionen für phpMyAdmin zur Verfügung gestellt werden.

Folgende Zusatzfunktionen können Dank dieser Datenbanktabelle bei Bedarf genutzt werden:

Für weitere detaillierte Informationen zu den Funktionen nutzt man am besten die Dokumente und Informationen auf der Wikiseite von phpMyAdmin.

Damit die oben aufgezeigten Zusatzfunktionen genutzt werden können, benötigen wir einen speziellen Nutzer, der vom Webserver aus auf die benötigte Tabelle zugreifen kann. Wir werden also die drei nötigen Schritte nacheinander vornehmen:

Datenbanknutzer anlegen

Im ersten Schritt legen wir uns unseren controluser an:

  1. Anmelden auf dem Datenbankserver
  2. Neuen Benutzer anlegen
  3. Beenden der Verbindung zum Datenbankserver

Haben wir mehr als einen Datenbank-Server, wen wir mit Hilfe unserer phpMyAdmin-Installation administrieren möchten, legen wir diesen Control-User auf allen MySQL/MariaDB-Servern entsprechend an.

  1. Anmelden auf dem Datenbankserver
    Wir melden uns also als berechtigter Datenbankuser an der MariaDB an.
     # mysql -h localhost -u root -p
    Enter password: 
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 42
    Server version: 5.5.40-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    MariaDB>
  2. neuen Benutzer anlegen
    Mit folgendem Befehl legen wir uns einen neuen Nutzer an:
    MariaDB> CREATE USER 'controluser'@'vml000107.dmz.nausch.org' IDENTIFIED BY 'controlpassword';
    Query OK, 0 rows affected (0.00 sec)

    sowie

    MariaDB> CREATE USER 'controluser'@'10.0.0.107' IDENTIFIED BY 'controlpassword';
    Query OK, 0 rows affected (0.00 sec)
  3. Datenbankverbindung beenden
    Unsere Konfiguration unseres neuen Datenbanknutzers ist hiermit beendet und wir können die Verbindung zur Datenbank wieder schließen.
    MariaDB> exit
    Bye

Datenbank(tabellen) erstellen

Zum Erstellen der benötigten Tabelle greifen wir auf die Datei /usr/share/phpMyAdmin/examples/create_tables.sql zurück. Diese Musterdatei kopieren wir uns zunächst in das Verzeichnis /root/.

 # cp /usr/share/phpMyAdmin/sql/create_tables.sql /root/create_pmadb_tables.sql


Vor dem Start des Scriptes, muss dieses unbedingt noch den lokalen Gegebenheiten nach angepasst werden!

Anschließend passen wir den Inhalt unseren lokalen Gegebenheiten an.

 # vim /root/create_pmadb_tables.sql

Hier fügen wir beim Abschnitt – Privileges folgende Zeilen ein:

- --------------------------------------------------------
 
--
-- Privileges
--
-- (activate this statement if necessary)
-- GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO
--    'pma'@localhost;
 
-- Grant privileges to phpMyAdmin controluser.
GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO 'controluser'@'10.0.0.107';
GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO 'controluser'@'vml000107.dmz.nausch.org';
 
-- Reload privileges.
FLUSH PRIVILEGES;
 
-- --------------------------------------------------------

Somit ergibt sich folgende komplette Datei.

/root/create_pmadb_tables.sql
-- --------------------------------------------------------
-- SQL Commands to set up the pmadb as described in the documentation.
--
-- This file is meant for use with MySQL 5 and above!
--
-- This script expects the user pma to already be existing. If we would put a
-- line here to create him too many users might just use this script and end
-- up with having the same password for the controluser.
--
-- This user "pma" must be defined in config.inc.php (controluser/controlpass)
--
-- Please don't forget to set up the tablenames in config.inc.php
--
 
-- --------------------------------------------------------
 
--
-- Database : `phpmyadmin`
--
CREATE DATABASE IF NOT EXISTS `phpmyadmin`
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
USE phpmyadmin;
 
-- --------------------------------------------------------
 
--
-- Privileges
--
-- (activate this statement if necessary)
-- GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO
--    'pma'@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO 'controluser'@'10.0.0.107';
GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO 'controluser'@'vml000107.dmz.nausch.org';
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__bookmark`
--
 
CREATE TABLE IF NOT EXISTS `pma__bookmark` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `dbase` VARCHAR(255) NOT NULL DEFAULT '',
  `user` VARCHAR(255) NOT NULL DEFAULT '',
  `label` VARCHAR(255) COLLATE utf8_general_ci NOT NULL DEFAULT '',
  `query` text NOT NULL,
  PRIMARY KEY  (`id`)
)
  COMMENT='Bookmarks'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__column_info`
--
 
CREATE TABLE IF NOT EXISTS `pma__column_info` (
  `id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  `db_name` VARCHAR(64) NOT NULL DEFAULT '',
  `table_name` VARCHAR(64) NOT NULL DEFAULT '',
  `column_name` VARCHAR(64) NOT NULL DEFAULT '',
  `comment` VARCHAR(255) COLLATE utf8_general_ci NOT NULL DEFAULT '',
  `mimetype` VARCHAR(255) COLLATE utf8_general_ci NOT NULL DEFAULT '',
  `transformation` VARCHAR(255) NOT NULL DEFAULT '',
  `transformation_options` VARCHAR(255) NOT NULL DEFAULT '',
  `input_transformation` VARCHAR(255) NOT NULL DEFAULT '',
  `input_transformation_options` VARCHAR(255) NOT NULL DEFAULT '',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`)
)
  COMMENT='Column information for phpMyAdmin'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__history`
--
 
CREATE TABLE IF NOT EXISTS `pma__history` (
  `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(64) NOT NULL DEFAULT '',
  `db` VARCHAR(64) NOT NULL DEFAULT '',
  `table` VARCHAR(64) NOT NULL DEFAULT '',
  `timevalue` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `sqlquery` text NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `username` (`username`,`db`,`table`,`timevalue`)
)
  COMMENT='SQL history for phpMyAdmin'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__pdf_pages`
--
 
CREATE TABLE IF NOT EXISTS `pma__pdf_pages` (
  `db_name` VARCHAR(64) NOT NULL DEFAULT '',
  `page_nr` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `page_descr` VARCHAR(50) COLLATE utf8_general_ci NOT NULL DEFAULT '',
  PRIMARY KEY  (`page_nr`),
  KEY `db_name` (`db_name`)
)
  COMMENT='PDF relation pages for phpMyAdmin'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__recent`
--
 
CREATE TABLE IF NOT EXISTS `pma__recent` (
  `username` VARCHAR(64) NOT NULL,
  `tables` text NOT NULL,
  PRIMARY KEY (`username`)
)
  COMMENT='Recently accessed tables'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__favorite`
--
 
CREATE TABLE IF NOT EXISTS `pma__favorite` (
  `username` VARCHAR(64) NOT NULL,
  `tables` text NOT NULL,
  PRIMARY KEY (`username`)
)
  COMMENT='Favorite tables'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__table_uiprefs`
--
 
CREATE TABLE IF NOT EXISTS `pma__table_uiprefs` (
  `username` VARCHAR(64) NOT NULL,
  `db_name` VARCHAR(64) NOT NULL,
  `table_name` VARCHAR(64) NOT NULL,
  `prefs` text NOT NULL,
  `last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`username`,`db_name`,`table_name`)
)
  COMMENT='Tables'' UI preferences'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__relation`
--
 
CREATE TABLE IF NOT EXISTS `pma__relation` (
  `master_db` VARCHAR(64) NOT NULL DEFAULT '',
  `master_table` VARCHAR(64) NOT NULL DEFAULT '',
  `master_field` VARCHAR(64) NOT NULL DEFAULT '',
  `foreign_db` VARCHAR(64) NOT NULL DEFAULT '',
  `foreign_table` VARCHAR(64) NOT NULL DEFAULT '',
  `foreign_field` VARCHAR(64) NOT NULL DEFAULT '',
  PRIMARY KEY  (`master_db`,`master_table`,`master_field`),
  KEY `foreign_field` (`foreign_db`,`foreign_table`)
)
  COMMENT='Relation table'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__table_coords`
--
 
CREATE TABLE IF NOT EXISTS `pma__table_coords` (
  `db_name` VARCHAR(64) NOT NULL DEFAULT '',
  `table_name` VARCHAR(64) NOT NULL DEFAULT '',
  `pdf_page_number` INT(11) NOT NULL DEFAULT '0',
  `x` FLOAT UNSIGNED NOT NULL DEFAULT '0',
  `y` FLOAT UNSIGNED NOT NULL DEFAULT '0',
  PRIMARY KEY  (`db_name`,`table_name`,`pdf_page_number`)
)
  COMMENT='Table coordinates for phpMyAdmin PDF output'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__table_info`
--
 
CREATE TABLE IF NOT EXISTS `pma__table_info` (
  `db_name` VARCHAR(64) NOT NULL DEFAULT '',
  `table_name` VARCHAR(64) NOT NULL DEFAULT '',
  `display_field` VARCHAR(64) NOT NULL DEFAULT '',
  PRIMARY KEY  (`db_name`,`table_name`)
)
  COMMENT='Table information for phpMyAdmin'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__tracking`
--
 
CREATE TABLE IF NOT EXISTS `pma__tracking` (
  `db_name` VARCHAR(64) NOT NULL,
  `table_name` VARCHAR(64) NOT NULL,
  `version` INT(10) UNSIGNED NOT NULL,
  `date_created` datetime NOT NULL,
  `date_updated` datetime NOT NULL,
  `schema_snapshot` text NOT NULL,
  `schema_sql` text,
  `data_sql` longtext,
  `tracking` SET('UPDATE','REPLACE','INSERT','DELETE','TRUNCATE','CREATE DATABASE','ALTER DATABASE','DROP DATABASE','CREATE TABLE','ALTER TABLE','RENAME TABLE','DROP TABLE','CREATE INDEX','DROP INDEX','CREATE VIEW','ALTER VIEW','DROP VIEW') DEFAULT NULL,
  `tracking_active` INT(1) UNSIGNED NOT NULL DEFAULT '1',
  PRIMARY KEY  (`db_name`,`table_name`,`version`)
)
  COMMENT='Database changes tracking for phpMyAdmin'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__userconfig`
--
 
CREATE TABLE IF NOT EXISTS `pma__userconfig` (
  `username` VARCHAR(64) NOT NULL,
  `timevalue` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `config_data` text NOT NULL,
  PRIMARY KEY  (`username`)
)
  COMMENT='User preferences storage for phpMyAdmin'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__users`
--
 
CREATE TABLE IF NOT EXISTS `pma__users` (
  `username` VARCHAR(64) NOT NULL,
  `usergroup` VARCHAR(64) NOT NULL,
  PRIMARY KEY (`username`,`usergroup`)
)
  COMMENT='Users and their assignments to user groups'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__usergroups`
--
 
CREATE TABLE IF NOT EXISTS `pma__usergroups` (
  `usergroup` VARCHAR(64) NOT NULL,
  `tab` VARCHAR(64) NOT NULL,
  `allowed` enum('Y','N') NOT NULL DEFAULT 'N',
  PRIMARY KEY (`usergroup`,`tab`,`allowed`)
)
  COMMENT='User groups with configured menu items'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__navigationhiding`
--
 
CREATE TABLE IF NOT EXISTS `pma__navigationhiding` (
  `username` VARCHAR(64) NOT NULL,
  `item_name` VARCHAR(64) NOT NULL,
  `item_type` VARCHAR(64) NOT NULL,
  `db_name` VARCHAR(64) NOT NULL,
  `table_name` VARCHAR(64) NOT NULL,
  PRIMARY KEY (`username`,`item_name`,`item_type`,`db_name`,`table_name`)
)
  COMMENT='Hidden items of navigation tree'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__savedsearches`
--
 
CREATE TABLE IF NOT EXISTS `pma__savedsearches` (
  `id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(64) NOT NULL DEFAULT '',
  `db_name` VARCHAR(64) NOT NULL DEFAULT '',
  `search_name` VARCHAR(64) NOT NULL DEFAULT '',
  `search_data` text NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `u_savedsearches_username_dbname` (`username`,`db_name`,`search_name`)
)
  COMMENT='Saved searches'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__central_columns`
--
 
CREATE TABLE IF NOT EXISTS `pma__central_columns` (
  `db_name` VARCHAR(64) NOT NULL,
  `col_name` VARCHAR(64) NOT NULL,
  `col_type` VARCHAR(64) NOT NULL,
  `col_length` text,
  `col_collation` VARCHAR(64) NOT NULL,
  `col_isNull` BOOLEAN NOT NULL,
  `col_extra` VARCHAR(255) DEFAULT '',
  `col_default` text,
  PRIMARY KEY (`db_name`,`col_name`)
)
  COMMENT='Central list of columns'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__designer_settings`
--
 
CREATE TABLE IF NOT EXISTS `pma__designer_settings` (
  `username` VARCHAR(64) NOT NULL,
  `settings_data` text NOT NULL,
  PRIMARY KEY (`username`)
)
  COMMENT='Settings related to Designer'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `pma__export_templates`
--
 
CREATE TABLE IF NOT EXISTS `pma__export_templates` (
  `id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(64) NOT NULL,
  `export_type` VARCHAR(10) NOT NULL,
  `template_name` VARCHAR(64) NOT NULL,
  `template_data` text NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `u_user_type_template` (`username`,`export_type`,`template_name`)
)
  COMMENT='Saved export templates'
  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

Unser angepasstes Script laden wir dann auf unserem Datenbankhost mit nachfolgendem Befehl.

 # mysql -h 127.0.0.1 -u root -p < /root/create_pmadb_tables.sql
 Enter password:

Haben wir mehr als einen Datenbank-Server, wen wir mit Hilfe unserer phpMyAdmin-Installation administrieren möchten, laden wir unser vorbereitetes Script in alle MySQL/MariaDB-Server hoch.

Zugriff testen

Zum Schluß überprüfen wir, ob der zuvor angelegt User/Zugang auch vom Webserver aus funktioniert.

 # mysql -h mariadb.dmz.nausch.org -D phpmyadmin -u controluser -p
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 444660
Server version: 5.5.56-MariaDB MariaDB Server

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

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

MariaDB [phpmyadmin]> show tables;
+------------------------+
| Tables_in_phpmyadmin   |
+------------------------+
| pma__bookmark          |
| pma__central_columns   |
| pma__column_info       |
| pma__designer_settings |
| pma__export_templates  |
| pma__favorite          |
| pma__history           |
| pma__navigationhiding  |
| pma__pdf_pages         |
| pma__recent            |
| pma__relation          |
| pma__savedsearches     |
| pma__table_coords      |
| pma__table_info        |
| pma__table_uiprefs     |
| pma__tracking          |
| pma__userconfig        |
| pma__usergroups        |
| pma__users             |
+------------------------+
19 rows in set (0.00 sec)

MariaDB [phpmyadmin]>

Da der Test positiv ausgefallen ist, können wie uns wieder von unserem Datenbankserver abmelden.

 MariaDB [phpmyadmin]> exit
 Bye

Anwendungskonfiguration

manueller Weg

Der schnellste und auch einfachste Weg phpMyAdmin zu konfigurieren, ist das manuelle Editieren der Konfigurationsdatei; dazu benutzt man seinen Editor der Wahl. Hilfreiche Informationen zu den möglichen Konfigurationsoptionen findet man dazu in der Onlinedokumentation im Verzeichnis doc/html/, also erreichbar über http://phpmyadmin.nausch.org/doc/html/index.html

 $ firefox http://phpmyadmin.nausch.org/doc/html/index.html

Weitere Informationen zum Aufbau und Inhalt findet man auch in der aktuell(st)en Dokumentation von phpMyAdmin.

Die Konfigurationsdatei liegt im Hauptverzeichnis von phpMyAdmin, in unserem Fall also /usr/share/phpMyAdmin. Dort liegt eine Vorlagedatei /usr/share/phpMyAdmin/config.sample.inc.php. Diese Datei kopieren wir nun zur weiteren manuellen Bearbeitung erst einmal.

 # cp -a /usr/share/phpMyAdmin/config.sample.inc.php /usr/share/phpMyAdmin/config.inc.php

Zum Bearbeiten der Konfigurationsdatei nutzen wir z.B. vim.

 # vim /usr/share/phpMyAdmin/config.inc.php
/usr/share/phpMyAdmin/config.inc.php
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * phpMyAdmin sample configuration, you can use it as base for
 * manual configuration. For easier setup you can use setup/
 *
 * All directives are explained in documentation in the doc/ folder
 * or at <https://docs.phpmyadmin.net/>.
 *
 * @package PhpMyAdmin
 */
 
/**
 * This is needed for cookie based authentication to encrypt password in
 * cookie. Needs to be 32 chars long.
 */
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
 
/**
 * Servers configuration
 */
$i = 0;
 
/**
 * First server
 */
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
 
/**
 * phpMyAdmin configuration storage settings.
 */
 
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';
 
/* Storage database and tables */
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
// $cfg['Servers'][$i]['history'] = 'pma__history';
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
// $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
// $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
 
/**
 * End of servers configuration
 */
 
/**
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
 
/**
 * Whether to display icons or text or both icons and text in table row
 * action segment. Value can be either of 'icons', 'text' or 'both'.
 * default = 'both'
 */
//$cfg['RowActionType'] = 'icons';
 
/**
 * Defines whether a user should be displayed a "show all (records)"
 * button in browse mode or not.
 * default = false
 */
//$cfg['ShowAll'] = true;
 
/**
 * Number of rows displayed when browsing a result set. If the result
 * set contains more rows, "Previous" and "Next".
 * Possible values: 25, 50, 100, 250, 500
 * default = 25
 */
//$cfg['MaxRows'] = 50;
 
/**
 * Disallow editing of binary fields
 * valid values are:
 *   false    allow editing
 *   'blob'   allow editing except for BLOB fields
 *   'noblob' disallow editing except for BLOB fields
 *   'all'    disallow editing
 * default = 'blob'
 */
//$cfg['ProtectBinary'] = false;
 
/**
 * Default language to use, if not browser-defined or user-defined
 * (you find all languages in the locale folder)
 * uncomment the desired line:
 * default = 'en'
 */
//$cfg['DefaultLang'] = 'en';
//$cfg['DefaultLang'] = 'de';
 
/**
 * How many columns should be used for table display of a database?
 * (a value larger than 1 results in some information being hidden)
 * default = 1
 */
//$cfg['PropertiesNumColumns'] = 2;
 
/**
 * Set to true if you want DB-based query history.If false, this utilizes
 * JS-routines to display query history (lost by window close)
 *
 * This requires configuration storage enabled, see above.
 * default = false
 */
//$cfg['QueryHistoryDB'] = true;
 
/**
 * When using DB-based query history, how many entries should be kept?
 * default = 25
 */
//$cfg['QueryHistoryMax'] = 100;
 
/**
 * Whether or not to query the user before sending the error report to
 * the phpMyAdmin team when a JavaScript error occurs
 *
 * Available options
 * ('ask' | 'always' | 'never')
 * default = 'ask'
 */
//$cfg['SendErrorReports'] = 'always';
 
/**
 * You can find more configuration options in the documentation
 * in the doc/ folder or at <https://docs.phpmyadmin.net/>.
 */

Die komfortablere Variante ist sicherlich der Weg über die Webanwendung selbst. Die Konfigurationsseite von phpMyAdmin ist Dank unserer vHOST-Konfiguration an unserem Apache-Webserver,unter folgender URL erreichbar: http://phpmyadmin.nausch.org/setup/

 $ firefox http://phpmyadmin.nausch.org/setup/

Bild: Bildschirmhardcopy phpMyAdmin Setup

Als erstes definieren wir unseren Datenbank-Server. Hierzu klicken wir auf die Schaltfläche [ Neuer Server ].

Bild: Bildschirmhardcopy phpMyAdmin Setup

Haben wir die entsprechenden Daten eingegeben, klicken wir auf die grün markierte Schaltfläche [ Übernehmen ].

Bild: Bildschirmhardcopy phpMyAdmin Setup

Beim Reiter Serverkonfiguration können wir festlegen, wie wir auf den Server zugreifen und welche Datenbank(tabellen) angezeigt werden sollen. Den Haken beim Punkt Erlaube root login entfernen wir!

Bild: Bildschirmhardcopy phpMyAdmin Setup

Die Einstellungen zum Konfigurationsspeicher PMADB legen wir auf dem Reiter Konfigurationsspeicher fest. Dort tragen wir folgende (entsprechende individuelle) Werte ein.

Datenbankname                                                                 phpmyadmin
pmadb Host                                                                    [             ]
Kontroll-Port                                                                 [             ]
pmadb Benutzer                                                                controluser
pmadb Benutzer Passwort                                                       controlpassword
Lesezeichen Tabelle                                                           pma__bookmark
Relation Tabelle                                                              pma__relation
Tabelle für Benutzereinstellungen                                             pma__userconfig
Benutzer-Tabelle                                                              pma__users
Benutzergruppen-Tabelle                                                       pma__usergroups
Tabelle für ausgeblendete Navigations-Elemente                                pma__navigationhiding
Tabelle für Anzeigespalten                                                    pma__table_info
Spalten Informationen Tabelle                                                 pma__column_info
SQL Abfragehistorien Tabelle                                                  pma__history
Kürzlich verwendete Tabellen                                                  pma__recent
Tabelle für Oberflächeneinstellungen                                          pma__table_uiprefs
Tabelle mit Verfolgung der SQL-Abfragen                                       pma__tracking
Designer- und PDF Schema: Tabellenkoordinaten                                 pma__table_coords
PDF-Schema: Seiten-Tabelle                                                    pma__pdf_pages
Beispielabfragentabelle                                                       pma__savedsearches
Central columns tabele                                                        pma__central_columns
Maximale Anzahl der zu speichernden Tabelleneinstellungen                     100

Bild: Bildschirmhardcopy phpMyAdmin Setup

Auf dem Reiter Grundeinstellungen setzen wir den Haken beim Punkt Benutze SSL.

Bild: Bildschirmhardcopy phpMyAdmin Setup

Wie haben den Konfigurationspunkte Übersicht erfolgreich fertiggestellt. Nun Wählen wir den nächsten Konfigurationskapitel Funktionen am linken Bildschirmrand an. Auf dem Reiter Import/Export legen wir die beiden Verzeichnisse zum Upload Verzeichnis und Speicher Verzeichnis fest.

Bild: Bildschirmhardcopy phpMyAdmin Setup

Upload Verzeichnis                                                            /var/lib/phpMyAdmin/upload
Speicher Verzeichnis                                                          /var/lib/phpMyAdmin/save

Auf den Reiter Sicherheit setzen wir den Haken beim Punkt SSL-Verbindung erzwingen.

Bild: Bildschirmhardcopy phpMyAdmin Setup

Beim Konfigurationskapitel SQL-Abfragen setzen wir den beim Punkt Abfragelog speichern.

Bild: Bildschirmhardcopy phpMyAdmin Setup

Auf den Reitern des Konfigurationskapitel Navigationspanel übernehmen wir die Defaultwerte.

Reiter Navigationspanel:

Bild: Bildschirmhardcopy phpMyAdmin Setup

Reiter Server:

Bild: Bildschirmhardcopy phpMyAdmin Setup

Reiter Datenbanken:

Bild: Bildschirmhardcopy phpMyAdmin Setup

Reiter Tabellen:

Bild: Bildschirmhardcopy phpMyAdmin Setup

Wie auch schon beim Kapitel Navigationspanel übernehmen wir beim Kapitel Hauptpanel die Defaultwerte.

Bild: Bildschirmhardcopy phpMyAdmin Setup

Zum Speichern der Konfigurationswerte klicken wir im Konfigurationskapitel Übersicht auf die schaltfläche [ Speichern ] am unteren linke ende des Fensters.

Bild: Bildschirmhardcopy phpMyAdmin Setup

Wollen wir die Konfigurationsdatei gesondert sichern, klicken wir auf die Schaltfläche [ Download ]. Bei Bedarf können wir uns die erstellte und gespeicherte Konfigurationsdaten auch anzeigen lassen; hierzu klicken wir auf die Schaltfläche [ Anzeigen ].

Bild: Bildschirmhardcopy phpMyAdmin Setup

Die mit der Web-GUI erstellte Konfigurationsdatei legen wir im Verzeichnis /usr/share/phpMyAdmin/ ab.

 # vim /usr/share/phpMyAdmin/config.inc.php
/usr/share/phpMyAdmin/config.inc.php
<?php
<?php
/*
 * Generated configuration file
 * Generated by: phpMyAdmin 4.7.4 setup script
 * Date: Fri, 06 Oct 2017 14:02:06 +0000
 */
 
/* Servers configuration */
$i = 0;
 
/* Server: mariadb.dmz.nausch.org [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'mariadb.dmz.nausch.org';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowRoot'] = false;
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['controluser'] = 'controluser';
$cfg['Servers'][$i]['controlpass'] = 'controlpassword';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
$cfg['Servers'][$i]['ssl'] = false;
 
/* End of servers configuration */
 
$cfg['blowfish_secret'] = 'bXFjY/D4GAfy1RsAfQ4NVGZ9xGNTovM2Zn)OJQfyo';
$cfg['UploadDir'] = '/usr/share/phpMyAdmin/upload/';
$cfg['SaveDir'] = '/usr/share/phpMyAdmin/save/';
$cfg['ProxyUser'] = 'databaseuser';
$cfg['ProxyPass'] = 'databasepassword';
$cfg['QueryHistoryDB'] = true;
$cfg['DefaultLang'] = 'de';
$cfg['ServerDefault'] = 1;
?>

abschließende Konfiguration

Für die Import / Export Funktion benötigen wir noch die RPM-Pakete recode und php-recode; diese installieren wir nun unter Zuhilfenahme von yum.

 # yum install recode php70u-recode -y

Programmstart/-aufruf

Nun können wir die Applikation phpMyAdmin mit dem Browser unserer Wahl starten.

 $ firefox http://phpmyadmin.nausch.org/setup/

Bild: Bildschirmhardcopy phpMyAdmin Login Seite

Nach erfolgter Anmeldung befinden wir uns im Hauptadministrationsfenster von phpMyAdmin.

Bild: Bildschirmhardcopy phpMyAdmin Seite

Programm-Upgrade

Da wir uns bei der Installation für den direkten Weg über die Quellen gewählt hatten, müssen wir uns natürlich selbst um entsprechende Upgrades bemühen.

Download

Zunächst wechseln wir in unser lokales Programm-Archiv-Verzeichnis.

 # cd /usr/local/src/packages/

Anschliessend holen wir uns das aktuelle Paket (ZIP-Archiv und dessen zugehörige sha512 Prüfsumme) von der Projektwebseite auf unseren Server.

 # wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-4.8.4-all-languages.zip
 # wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-4.8.4-all-languages.zip.sha256

Vom heruntergeladenen Archiv phpMyAdmin-5.0.4-all-languages.zip generieren wir einen eigenen Hash-Wert und legen diesen in einer lokalen Datei ab.

 # sha256sum phpMyAdmin-5.0.4-all-languages.zip > phpMyAdmin-5.0.4-all-languages.zip.sha256.local

Nun können wir die beiden Hash-Werte vergleichen und somit prüfen, ob dem Archiv soweit vertraut werden kann.

 # diff phpMyAdmin-5.0.4-all-languages.zip.sha256.local phpMyAdmin-5.0.4-all-languages.zip.sha256

Sind beide Werte identisch, erfolgt keine Ausgabe - wir können also mit der Installation und Konfiguration fortschreiten.

Entpacken

Nun entpacken wir das heruntergeladene ZIP-Archiv an Ort und Stelle, in unserem Konfigurationsbeispiel also in das Verzeichnis /usr/share/.

 # unzip /usr/local/src/packages/phpMyAdmin-5.0.4-all-languages.zip -d /usr/share/

Zielverzeichnis (umbenennen)

In der offiziellen Dokumentation finden wir einen wichtigen Hinweis zur Upgradeprozedur:

Warnung

Never extract the new version over an existing installation of phpMyAdmin, always first remove the old files keeping just the configuration.

Auf diese Art bleibt kein alter, nicht länger funktionierender Code im Verzeichnis, der zu schweren Sicherheitslücken oder Fehlern führen kann.

Wir werden also demnach erst einmal eine Sicherung unserer bestehenden Installation vornehmen, bevor wir uns eingehender mit der zuvor entpackten aktuellste Version beschäftigen.

 # mv /usr/share/phpMyAdmin /usr/share/phpMyAdmin.backup

Anschließend benennen wir das aktuellste Programverzeichnis um.

 # mv /usr/share/phpMyAdmin-5.0.4-all-languages/ /usr/share/phpMyAdmin/

Da wir den Alternativer FastCGI Process Manager einsetzen passen wir noch die Verzeichnis und Dateirechte entsprechend an.

 # chown -R php-fpm: /usr/share/phpMyAdmin/

Konfiguration zurücksichern

Wie in der originalen Upgradedokumentation vermerkt, sichern wir nun die Konfiguration unserer bestehenden Installation zurück. Hierzu kopieren wir die Konfigurationsdatei config.inc.php Aus dem Backup-Verzeichnis zurück in das aktuellste Verzeichnis.

 # cp -a /usr/share/phpMyAdmin.backup/config.inc.php /usr/share/phpMyAdmin/

Links

1)
PHPMyAdminDataBase