diff --git a/.idea/libraries/Dart_Packages.xml b/.idea/libraries/Dart_Packages.xml
index f8237c9..04e2ec7 100644
--- a/.idea/libraries/Dart_Packages.xml
+++ b/.idea/libraries/Dart_Packages.xml
@@ -5,686 +5,686 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/libraries/Dart_SDK.xml b/.idea/libraries/Dart_SDK.xml
index cb79f3d..3dbed52 100644
--- a/.idea/libraries/Dart_SDK.xml
+++ b/.idea/libraries/Dart_SDK.xml
@@ -1,25 +1,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Sources/php_script/script/phpMyAdmin/config.sample.inc.php b/Sources/php_script/script/phpMyAdmin/config.sample.inc.php
new file mode 100644
index 0000000..34b6a9d
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/config.sample.inc.php
@@ -0,0 +1,160 @@
+.
+ */
+
+declare(strict_types=1);
+
+/**
+ * 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';
+
+/**
+ * 'URLQueryEncryption' defines whether phpMyAdmin will encrypt sensitive data from the URL query string.
+ * 'URLQueryEncryptionSecretKey' is a 32 bytes long secret key used to encrypt/decrypt the URL query string.
+ */
+//$cfg['URLQueryEncryption'] = true;
+//$cfg['URLQueryEncryptionSecretKey'] = '';
+
+/**
+ * You can find more configuration options in the documentation
+ * in the doc/ folder or at .
+ */
diff --git a/Sources/php_script/script/phpMyAdmin/dafldev/.idea/dafldev.iml b/Sources/php_script/script/phpMyAdmin/dafldev/.idea/dafldev.iml
new file mode 100644
index 0000000..c956989
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/dafldev/.idea/dafldev.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/php_script/script/phpMyAdmin/dafldev/config.php b/Sources/php_script/script/phpMyAdmin/dafldev/config.php
new file mode 100644
index 0000000..63484ca
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/dafldev/config.php
@@ -0,0 +1,14 @@
+getMessage();
+ echo $error;
+}
diff --git a/Sources/php_script/script/phpMyAdmin/dafldev/distance.php b/Sources/php_script/script/phpMyAdmin/dafldev/distance.php
new file mode 100644
index 0000000..a2155b0
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/dafldev/distance.php
@@ -0,0 +1,61 @@
+prepare($query);
+$stm->execute();
+$row = $stm->fetchAll(PDO::FETCH_ASSOC);
+$lat1=0;
+$lng1=0;
+$listUser=[];
+Foreach ($row as $col) {
+ if (strcmp($col['id'], $id) == 0) {
+ $lat1 = $col['latitude'];
+ $lng1 = $col['longitude'];
+ }
+}
+if ($lat1==0 && $lng1==0){
+ print(json_encode("ERROR No user found in the database"));
+ exit(1);
+}
+
+Foreach ($row as $col) {
+ if (strcmp($col['id'],$id)!=0) {
+ $lat2 = $col['latitude'];
+ $lng2 = $col['longitude'];
+ $userID = $col['id'];
+ $idMusic = $col['idMusic'];
+ $dist = (new distance)->meters($lat1, $lng1, $lat2, $lng2);
+ if ($dist <= 100) {
+ $listUser[] = ['user' => $userID, 'music' => $idMusic]; }
+ }
+}
+
+print(json_encode($listUser));
+
+
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_images/line_chart.png b/Sources/php_script/script/phpMyAdmin/doc/html/_images/line_chart.png
new file mode 100644
index 0000000..4f32fdb
Binary files /dev/null and b/Sources/php_script/script/phpMyAdmin/doc/html/_images/line_chart.png differ
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_images/query_result_operations.png b/Sources/php_script/script/phpMyAdmin/doc/html/_images/query_result_operations.png
new file mode 100644
index 0000000..c789e53
Binary files /dev/null and b/Sources/php_script/script/phpMyAdmin/doc/html/_images/query_result_operations.png differ
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_images/scatter_chart.png b/Sources/php_script/script/phpMyAdmin/doc/html/_images/scatter_chart.png
new file mode 100644
index 0000000..cbe5338
Binary files /dev/null and b/Sources/php_script/script/phpMyAdmin/doc/html/_images/scatter_chart.png differ
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_sources/faq.rst.txt b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/faq.rst.txt
new file mode 100644
index 0000000..866a920
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/faq.rst.txt
@@ -0,0 +1,2251 @@
+.. _faq:
+
+FAQ - Frequently Asked Questions
+================================
+
+Please have a look at our `Link section
+`_ on the official
+phpMyAdmin homepage for in-depth coverage of phpMyAdmin's features and
+or interface.
+
+.. _faqserver:
+
+Server
+++++++
+
+.. _faq1_1:
+
+1.1 My server is crashing each time a specific action is required or phpMyAdmin sends a blank page or a page full of cryptic characters to my browser, what can I do?
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+Try to set the :config:option:`$cfg['OBGzip']` directive to ``false`` in your
+:file:`config.inc.php` file and the ``zlib.output_compression`` directive to
+``Off`` in your php configuration file.
+
+.. _faq1_2:
+
+1.2 My Apache server crashes when using phpMyAdmin.
+---------------------------------------------------
+
+You should first try the latest versions of Apache (and possibly MySQL). If
+your server keeps crashing, please ask for help in the various Apache support
+groups.
+
+.. seealso:: :ref:`faq1_1`
+
+.. _faq1_3:
+
+1.3 (withdrawn).
+----------------
+
+.. _faq1_4:
+
+1.4 Using phpMyAdmin on IIS, I'm displayed the error message: "The specified CGI application misbehaved by not returning a complete set of HTTP headers ...".
+-------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+You just forgot to read the *install.txt* file from the PHP
+distribution. Have a look at the last message in this `PHP bug report #12061
+`_ from the official PHP bug
+database.
+
+.. _faq1_5:
+
+1.5 Using phpMyAdmin on IIS, I'm facing crashes and/or many error messages with the HTTP.
+-----------------------------------------------------------------------------------------
+
+This is a known problem with the PHP :term:`ISAPI` filter: it's not so stable.
+Please use instead the cookie authentication mode.
+
+.. _faq1_6:
+
+1.6 I can't use phpMyAdmin on PWS: nothing is displayed!
+--------------------------------------------------------
+
+This seems to be a PWS bug. Filippo Simoncini found a workaround (at
+this time there is no better fix): remove or comment the ``DOCTYPE``
+declarations (2 lines) from the scripts :file:`libraries/classes/Header.php`
+and :file:`index.php`.
+
+.. _faq1_7:
+
+1.7 How can I gzip a dump or a CSV export? It does not seem to work.
+--------------------------------------------------------------------
+
+This feature is based on the ``gzencode()``
+PHP function to be more independent of the platform (Unix/Windows,
+Safe Mode or not, and so on). So, you must have Zlib support
+(``--with-zlib``).
+
+.. _faq1_8:
+
+1.8 I cannot insert a text file in a table, and I get an error about safe mode being in effect.
+-----------------------------------------------------------------------------------------------
+
+Your uploaded file is saved by PHP in the "upload dir", as defined in
+:file:`php.ini` by the variable ``upload_tmp_dir`` (usually the system
+default is */tmp*). We recommend the following setup for Apache
+servers running in safe mode, to enable uploads of files while being
+reasonably secure:
+
+* create a separate directory for uploads: :command:`mkdir /tmp/php`
+* give ownership to the Apache server's user.group: :command:`chown
+ apache.apache /tmp/php`
+* give proper permission: :command:`chmod 600 /tmp/php`
+* put ``upload_tmp_dir = /tmp/php`` in :file:`php.ini`
+* restart Apache
+
+.. _faq1_9:
+
+1.9 (withdrawn).
+----------------
+
+.. _faq1_10:
+
+1.10 I'm having troubles when uploading files with phpMyAdmin running on a secure server. My browser is Internet Explorer and I'm using the Apache server.
+----------------------------------------------------------------------------------------------------------------------------------------------------------
+
+As suggested by "Rob M" in the phpWizard forum, add this line to your
+*httpd.conf*:
+
+.. code-block:: apache
+
+ SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
+
+It seems to clear up many problems between Internet Explorer and SSL.
+
+.. _faq1_11:
+
+1.11 I get an 'open\_basedir restriction' while uploading a file from the import tab.
+-------------------------------------------------------------------------------------
+
+Since version 2.2.4, phpMyAdmin supports servers with open\_basedir
+restrictions. However you need to create temporary directory and configure it
+as :config:option:`$cfg['TempDir']`. The uploaded files will be moved there,
+and after execution of your :term:`SQL` commands, removed.
+
+.. _faq1_12:
+
+1.12 I have lost my MySQL root password, what can I do?
+-------------------------------------------------------
+
+phpMyAdmin does authenticate against MySQL server you're using, so to recover
+from phpMyAdmin password loss, you need to recover at MySQL level.
+
+The MySQL manual explains how to `reset the permissions
+`_.
+
+If you are using MySQL server installed by your hosting provider, please
+contact their support to recover the password for you.
+
+.. _faq1_13:
+
+1.13 (withdrawn).
+-----------------
+
+.. _faq1_14:
+
+1.14 (withdrawn).
+-----------------
+
+.. _faq1_15:
+
+1.15 I have problems with *mysql.user* column names.
+----------------------------------------------------
+
+In previous MySQL versions, the ``User`` and ``Password`` columns were
+named ``user`` and ``password``. Please modify your column names to
+align with current standards.
+
+.. _faq1_16:
+
+1.16 I cannot upload big dump files (memory, HTTP or timeout problems).
+-----------------------------------------------------------------------
+
+Starting with version 2.7.0, the import engine has been re–written and
+these problems should not occur. If possible, upgrade your phpMyAdmin
+to the latest version to take advantage of the new import features.
+
+The first things to check (or ask your host provider to check) are the values
+of ``max_execution_time``, ``upload_max_filesize``, ``memory_limit`` and
+``post_max_size`` in the :file:`php.ini` configuration file. All of these
+settings limit the maximum size of data that can be submitted and handled by
+PHP. Please note that ``post_max_size`` needs to be larger than
+``upload_max_filesize``. There exist several workarounds if your upload is too
+big or your hosting provider is unwilling to change the settings:
+
+* Look at the :config:option:`$cfg['UploadDir']` feature. This allows one to upload a file to the server
+ via scp, FTP, or your favorite file transfer method. PhpMyAdmin is
+ then able to import the files from the temporary directory. More
+ information is available in the :ref:`config` of this document.
+* Using a utility (such as `BigDump
+ `_) to split the files before
+ uploading. We cannot support this or any third party applications, but
+ are aware of users having success with it.
+* If you have shell (command line) access, use MySQL to import the files
+ directly. You can do this by issuing the "source" command from within
+ MySQL:
+
+ .. code-block:: mysql
+
+ source filename.sql;
+
+.. _faq1_17:
+
+1.17 Which Database versions does phpMyAdmin support?
+-----------------------------------------------------
+
+For `MySQL `_, versions 5.5 and newer are supported.
+For older MySQL versions, our `Downloads `_ page offers older phpMyAdmin versions
+(which may have become unsupported).
+
+For `MariaDB `_, versions 5.5 and newer are supported.
+
+.. _faq1_17a:
+
+1.17a I cannot connect to the MySQL server. It always returns the error message, "Client does not support authentication protocol requested by server; consider upgrading MySQL client"
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+You tried to access MySQL with an old MySQL client library. The
+version of your MySQL client library can be checked in your phpinfo()
+output. In general, it should have at least the same minor version as
+your server - as mentioned in :ref:`faq1_17`. This problem is
+generally caused by using MySQL version 4.1 or newer. MySQL changed
+the authentication hash and your PHP is trying to use the old method.
+The proper solution is to use the `mysqli extension
+`_ with the proper client library to match
+your MySQL installation. More
+information (and several workarounds) are located in the `MySQL
+Documentation `_.
+
+.. _faq1_18:
+
+1.18 (withdrawn).
+-----------------
+
+.. _faq1_19:
+
+1.19 I can't run the "display relations" feature because the script seems not to know the font face I'm using!
+--------------------------------------------------------------------------------------------------------------
+
+The :term:`TCPDF` library we're using for this feature requires some special
+files to use font faces. Please refers to the `TCPDF manual
+`_ to build these files.
+
+.. _faqmysql:
+
+1.20 I receive an error about missing mysqli and mysql extensions.
+------------------------------------------------------------------
+
+To connect to a MySQL server, PHP needs a set of MySQL functions
+called "MySQL extension". This extension may be part of the PHP
+distribution (compiled-in), otherwise it needs to be loaded
+dynamically. Its name is probably *mysqli.so* or *php\_mysqli.dll*.
+phpMyAdmin tried to load the extension but failed. Usually, the
+problem is solved by installing a software package called "PHP-MySQL"
+or something similar.
+
+There was two interfaces PHP provided as MySQL extensions - ``mysql``
+and ``mysqli``. The ``mysql`` interface was removed in PHP 7.0.
+
+This problem can be also caused by wrong paths in the :file:`php.ini` or using
+wrong :file:`php.ini`.
+
+Make sure that the extension files do exist in the folder which the
+``extension_dir`` points to and that the corresponding lines in your
+:file:`php.ini` are not commented out (you can use ``phpinfo()`` to check
+current setup):
+
+.. code-block:: ini
+
+ [PHP]
+
+ ; Directory in which the loadable extensions (modules) reside.
+ extension_dir = "C:/Apache2/modules/php/ext"
+
+The :file:`php.ini` can be loaded from several locations (especially on
+Windows), so please check you're updating the correct one. If using Apache, you
+can tell it to use specific path for this file using ``PHPIniDir`` directive:
+
+.. code-block:: apache
+
+ LoadModule php7_module "C:/php7/php7apache2_4.dll"
+
+ PHPIniDir "C:/php7"
+
+ AddType text/html .php
+ AddHandler application/x-httpd-php .php
+
+
+
+In some rare cases this problem can be also caused by other extensions loaded
+in PHP which prevent MySQL extensions to be loaded. If anything else fails, you
+can try commenting out extensions for other databases from :file:`php.ini`.
+
+.. _faq1_21:
+
+1.21 I am running the CGI version of PHP under Unix, and I cannot log in using cookie auth.
+-------------------------------------------------------------------------------------------
+
+In :file:`php.ini`, set ``mysql.max_links`` higher than 1.
+
+.. _faq1_22:
+
+1.22 I don't see the "Location of text file" field, so I cannot upload.
+-----------------------------------------------------------------------
+
+This is most likely because in :file:`php.ini`, your ``file_uploads``
+parameter is not set to "on".
+
+.. _faq1_23:
+
+1.23 I'm running MySQL on a Win32 machine. Each time I create a new table the table and column names are changed to lowercase!
+------------------------------------------------------------------------------------------------------------------------------
+
+This happens because the MySQL directive ``lower_case_table_names``
+defaults to 1 (``ON``) in the Win32 version of MySQL. You can change
+this behavior by simply changing the directive to 0 (``OFF``): Just
+edit your ``my.ini`` file that should be located in your Windows
+directory and add the following line to the group [mysqld]:
+
+.. code-block:: ini
+
+ set-variable = lower_case_table_names=0
+
+.. note::
+
+ Forcing this variable to 0 with --lower-case-table-names=0 on a
+ case-insensitive filesystem and access MyISAM tablenames using different
+ lettercases, index corruption may result.
+
+Next, save the file and restart the MySQL service. You can always
+check the value of this directive using the query
+
+.. code-block:: mysql
+
+ SHOW VARIABLES LIKE 'lower_case_table_names';
+
+.. seealso:: `Identifier Case Sensitivity in the MySQL Reference Manual `_
+
+.. _faq1_24:
+
+1.24 (withdrawn).
+-----------------
+
+.. _faq1_25:
+
+1.25 I am running Apache with mod\_gzip-1.3.26.1a on Windows XP, and I get problems, such as undefined variables when I run a SQL query.
+----------------------------------------------------------------------------------------------------------------------------------------
+
+A tip from Jose Fandos: put a comment on the following two lines in
+httpd.conf, like this:
+
+.. code-block:: apache
+
+ # mod_gzip_item_include file \.php$
+ # mod_gzip_item_include mime "application/x-httpd-php.*"
+
+as this version of mod\_gzip on Apache (Windows) has problems handling
+PHP scripts. Of course you have to restart Apache.
+
+.. _faq1_26:
+
+1.26 I just installed phpMyAdmin in my document root of IIS but I get the error "No input file specified" when trying to run phpMyAdmin.
+----------------------------------------------------------------------------------------------------------------------------------------
+
+This is a permission problem. Right-click on the phpmyadmin folder and
+choose properties. Under the tab Security, click on "Add" and select
+the user "IUSR\_machine" from the list. Now set their permissions and it
+should work.
+
+.. _faq1_27:
+
+1.27 I get empty page when I want to view huge page (eg. db\_structure.php with plenty of tables).
+--------------------------------------------------------------------------------------------------
+
+This was caused by a `PHP bug `_ that occur when
+GZIP output buffering is enabled. If you turn off it (by
+:config:option:`$cfg['OBGzip']` in :file:`config.inc.php`), it should work.
+This bug will has been fixed in PHP 5.0.0.
+
+.. _faq1_28:
+
+1.28 My MySQL server sometimes refuses queries and returns the message 'Errorcode: 13'. What does this mean?
+------------------------------------------------------------------------------------------------------------
+
+This can happen due to a MySQL bug when having database / table names
+with upper case characters although ``lower_case_table_names`` is
+set to 1. To fix this, turn off this directive, convert all database
+and table names to lower case and turn it on again. Alternatively,
+there's a bug-fix available starting with MySQL 3.23.56 /
+4.0.11-gamma.
+
+.. _faq1_29:
+
+1.29 When I create a table or modify a column, I get an error and the columns are duplicated.
+---------------------------------------------------------------------------------------------
+
+It is possible to configure Apache in such a way that PHP has problems
+interpreting .php files.
+
+The problems occur when two different (and conflicting) set of
+directives are used:
+
+.. code-block:: apache
+
+ SetOutputFilter PHP
+ SetInputFilter PHP
+
+and
+
+.. code-block:: apache
+
+ AddType application/x-httpd-php .php
+
+In the case we saw, one set of directives was in
+``/etc/httpd/conf/httpd.conf``, while the other set was in
+``/etc/httpd/conf/addon-modules/php.conf``. The recommended way is
+with ``AddType``, so just comment out the first set of lines and
+restart Apache:
+
+.. code-block:: apache
+
+ #SetOutputFilter PHP
+ #SetInputFilter PHP
+
+.. _faq1_30:
+
+1.30 I get the error "navigation.php: Missing hash".
+----------------------------------------------------
+
+This problem is known to happen when the server is running Turck
+MMCache but upgrading MMCache to version 2.3.21 solves the problem.
+
+.. _faq1_31:
+
+1.31 Which PHP versions does phpMyAdmin support?
+------------------------------------------------
+
+Since release 4.5, phpMyAdmin supports only PHP 5.5 and newer. Since release
+4.1 phpMyAdmin supports only PHP 5.3 and newer. For PHP 5.2 you can use 4.0.x
+releases.
+
+PHP 7 is supported since phpMyAdmin 4.6, PHP 7.1 is supported since 4.6.5,
+PHP 7.2 is supported since 4.7.4.
+
+HHVM is supported up to phpMyAdmin 4.8.
+
+Since release 5.0, phpMyAdmin supports only PHP 7.1 and newer.
+Since release 5.2, phpMyAdmin supports only PHP 7.2 and newer.
+
+.. _faq1_32:
+
+1.32 Can I use HTTP authentication with IIS?
+--------------------------------------------
+
+Yes. This procedure was tested with phpMyAdmin 2.6.1, PHP 4.3.9 in
+:term:`ISAPI` mode under :term:`IIS` 5.1.
+
+#. In your :file:`php.ini` file, set ``cgi.rfc2616_headers = 0``
+#. In ``Web Site Properties -> File/Directory Security -> Anonymous
+ Access`` dialog box, check the ``Anonymous access`` checkbox and
+ uncheck any other checkboxes (i.e. uncheck ``Basic authentication``,
+ ``Integrated Windows authentication``, and ``Digest`` if it's
+ enabled.) Click ``OK``.
+#. In ``Custom Errors``, select the range of ``401;1`` through ``401;5``
+ and click the ``Set to Default`` button.
+
+.. seealso:: :rfc:`2616`
+
+.. _faq1_33:
+
+1.33 (withdrawn).
+-----------------
+
+.. _faq1_34:
+
+1.34 Can I directly access a database or table pages?
+-----------------------------------------------------
+
+Yes. Out of the box, you can use a :term:`URL` like
+``http://server/phpMyAdmin/index.php?server=X&db=database&table=table&target=script``.
+For ``server`` you can use the server number
+which refers to the numeric host index (from ``$i``) in
+:file:`config.inc.php`. The table and script parts are optional.
+
+If you want a URL like
+``http://server/phpMyAdmin/database[/table][/script]``, you need to do some additional configuration. The following
+lines apply only for the `Apache `_ web server.
+First, make sure that you have enabled some features within the Apache global
+configuration. You need ``Options SymLinksIfOwnerMatch`` and ``AllowOverride
+FileInfo`` enabled for directory where phpMyAdmin is installed and you
+need mod\_rewrite to be enabled. Then you just need to create the
+following :term:`.htaccess` file in root folder of phpMyAdmin installation (don't
+forget to change directory name inside of it):
+
+.. code-block:: apache
+
+ RewriteEngine On
+ RewriteBase /path_to_phpMyAdmin
+ RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&table=$2&target=$3 [R]
+ RewriteRule ^([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&target=$2 [R]
+ RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ index.php?db=$1&table=$2 [R]
+ RewriteRule ^([a-zA-Z0-9_]+)$ index.php?db=$1 [R]
+
+.. seealso:: :ref:`faq4_8`
+
+.. versionchanged:: 5.1.0
+
+ Support for using the ``target`` parameter was removed in phpMyAdmin 5.1.0.
+ Use the ``route`` parameter instead.
+
+.. _faq1_35:
+
+1.35 Can I use HTTP authentication with Apache CGI?
+---------------------------------------------------
+
+Yes. However you need to pass authentication variable to :term:`CGI` using
+following rewrite rule:
+
+.. code-block:: apache
+
+ RewriteEngine On
+ RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
+
+.. _faq1_36:
+
+1.36 I get an error "500 Internal Server Error".
+------------------------------------------------
+
+There can be many explanations to this and a look at your server's
+error log file might give a clue.
+
+.. _faq1_37:
+
+1.37 I run phpMyAdmin on cluster of different machines and password encryption in cookie auth doesn't work.
+-----------------------------------------------------------------------------------------------------------
+
+If your cluster consist of different architectures, PHP code used for
+encryption/decryption won't work correctly. This is caused by use of
+pack/unpack functions in code. Only solution is to use openssl
+extension which works fine in this case.
+
+.. _faq1_38:
+
+1.38 Can I use phpMyAdmin on a server on which Suhosin is enabled?
+------------------------------------------------------------------
+
+Yes but the default configuration values of Suhosin are known to cause
+problems with some operations, for example editing a table with many
+columns and no :term:`primary key` or with textual :term:`primary key`.
+
+Suhosin configuration might lead to malfunction in some cases and it
+can not be fully avoided as phpMyAdmin is kind of application which
+needs to transfer big amounts of columns in single HTTP request, what
+is something what Suhosin tries to prevent. Generally all
+``suhosin.request.*``, ``suhosin.post.*`` and ``suhosin.get.*``
+directives can have negative effect on phpMyAdmin usability. You can
+always find in your error logs which limit did cause dropping of
+variable, so you can diagnose the problem and adjust matching
+configuration variable.
+
+The default values for most Suhosin configuration options will work in
+most scenarios, however you might want to adjust at least following
+parameters:
+
+* `suhosin.request.max\_vars `_ should
+ be increased (eg. 2048)
+* `suhosin.post.max\_vars `_ should be
+ increased (eg. 2048)
+* `suhosin.request.max\_array\_index\_length `_
+ should be increased (eg. 256)
+* `suhosin.post.max\_array\_index\_length `_
+ should be increased (eg. 256)
+* `suhosin.request.max\_totalname\_length `_
+ should be increased (eg. 8192)
+* `suhosin.post.max\_totalname\_length `_ should be
+ increased (eg. 8192)
+* `suhosin.get.max\_value\_length `_
+ should be increased (eg. 1024)
+* `suhosin.sql.bailout\_on\_error `_
+ needs to be disabled (the default)
+* `suhosin.log.\* `_ should not
+ include :term:`SQL`, otherwise you get big
+ slowdown
+* `suhosin.sql.union `_ must be disabled (which is the default).
+* `suhosin.sql.multiselect `_ must be disabled (which is the default).
+* `suhosin.sql.comment `_ must be disabled (which is the default).
+
+To further improve security, we also recommend these modifications:
+
+* `suhosin.executor.include.max\_traversal `_ should be
+ enabled as a mitigation against local file inclusion attacks. We suggest
+ setting this to 2 as ``../`` is used with the ReCaptcha library.
+* `suhosin.cookie.encrypt `_ should be enabled.
+* `suhosin.executor.disable_emodifier `_ should be enabled.
+
+You can also disable the warning using the :config:option:`$cfg['SuhosinDisableWarning']`.
+
+.. _faq1_39:
+
+1.39 When I try to connect via https, I can log in, but then my connection is redirected back to http. What can cause this behavior?
+------------------------------------------------------------------------------------------------------------------------------------
+
+This is caused by the fact that PHP scripts have no knowledge that the site is
+using https. Depending on used webserver, you should configure it to let PHP
+know about URL and scheme used to access it.
+
+For example in Apache ensure that you have enabled ``SSLOptions`` and
+``StdEnvVars`` in the configuration.
+
+.. seealso::
+
+.. _faq1_40:
+
+1.40 When accessing phpMyAdmin via an Apache reverse proxy, cookie login does not work.
+---------------------------------------------------------------------------------------
+
+To be able to use cookie auth Apache must know that it has to rewrite
+the set-cookie headers. Example from the Apache 2.2 documentation:
+
+.. code-block:: apache
+
+ ProxyPass /mirror/foo/ http://backend.example.com/
+ ProxyPassReverse /mirror/foo/ http://backend.example.com/
+ ProxyPassReverseCookieDomain backend.example.com public.example.com
+ ProxyPassReverseCookiePath / /mirror/foo/
+
+Note: if the backend url looks like ``http://server/~user/phpmyadmin``, the
+tilde (~) must be url encoded as %7E in the ProxyPassReverse\* lines.
+This is not specific to phpmyadmin, it's just the behavior of Apache.
+
+.. code-block:: apache
+
+ ProxyPass /mirror/foo/ http://backend.example.com/~user/phpmyadmin
+ ProxyPassReverse /mirror/foo/ http://backend.example.com/%7Euser/phpmyadmin
+ ProxyPassReverseCookiePath /%7Euser/phpmyadmin /mirror/foo
+
+.. seealso:: , :config:option:`$cfg['PmaAbsoluteUri']`
+
+.. _faq1_41:
+
+1.41 When I view a database and ask to see its privileges, I get an error about an unknown column.
+--------------------------------------------------------------------------------------------------
+
+The MySQL server's privilege tables are not up to date, you need to
+run the :command:`mysql_upgrade` command on the server.
+
+.. _faq1_42:
+
+1.42 How can I prevent robots from accessing phpMyAdmin?
+--------------------------------------------------------
+
+You can add various rules to :term:`.htaccess` to filter access based on user agent
+field. This is quite easy to circumvent, but could prevent at least
+some robots accessing your installation.
+
+.. code-block:: apache
+
+ RewriteEngine on
+
+ # Allow only GET and POST verbs
+ RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ [NC,OR]
+
+ # Ban Typical Vulnerability Scanners and others
+ # Kick out Script Kiddies
+ RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
+ RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|wkito|pikto|scan|acunetix).* [NC,OR]
+ RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
+
+ # Ban Search Engines, Crawlers to your administrative panel
+ # No reasons to access from bots
+ # Ultimately Better than the useless robots.txt
+ # Did google respect robots.txt?
+ # Try google: intitle:phpMyAdmin intext:"Welcome to phpMyAdmin *.*.*" intext:"Log in" -wiki -forum -forums -questions intext:"Cookies must be enabled"
+ RewriteCond %{HTTP_USER_AGENT} ^.*(AdsBot-Google|ia_archiver|Scooter|Ask.Jeeves|Baiduspider|Exabot|FAST.Enterprise.Crawler|FAST-WebCrawler|www\.neomo\.de|Gigabot|Mediapartners-Google|Google.Desktop|Feedfetcher-Google|Googlebot|heise-IT-Markt-Crawler|heritrix|ibm.com\cs/crawler|ICCrawler|ichiro|MJ12bot|MetagerBot|msnbot-NewsBlogs|msnbot|msnbot-media|NG-Search|lucene.apache.org|NutchCVS|OmniExplorer_Bot|online.link.validator|psbot0|Seekbot|Sensis.Web.Crawler|SEO.search.Crawler|Seoma.\[SEO.Crawler\]|SEOsearch|Snappy|www.urltrends.com|www.tkl.iis.u-tokyo.ac.jp/~crawler|SynooBot|crawleradmin.t-info@telekom.de|TurnitinBot|voyager|W3.SiteSearch.Crawler|W3C-checklink|W3C_Validator|www.WISEnutbot.com|yacybot|Yahoo-MMCrawler|Yahoo\!.DE.Slurp|Yahoo\!.Slurp|YahooSeeker).* [NC]
+ RewriteRule .* - [F]
+
+.. _faq1_43:
+
+1.43 Why can't I display the structure of my table containing hundreds of columns?
+----------------------------------------------------------------------------------
+
+Because your PHP's ``memory_limit`` is too low; adjust it in :file:`php.ini`.
+
+.. _faq1:44:
+
+1.44 How can I reduce the installed size of phpMyAdmin on disk?
+---------------------------------------------------------------
+
+Some users have requested to be able to reduce the size of the phpMyAdmin installation.
+This is not recommended and could lead to confusion over missing features, but can be done.
+A list of files and corresponding functionality which degrade gracefully when removed include:
+
+* :file:`./vendor/tecnickcom/tcpdf` folder (exporting to PDF)
+* :file:`./locale/` folder, or unused subfolders (interface translations)
+* Any unused themes in :file:`./themes/`
+* :file:`./js/vendor/jquery/src/` (included for licensing reasons)
+* :file:`./js/line_counts.php` (removed in phpMyAdmin 4.8)
+* :file:`./doc/` (documentation)
+* :file:`./setup/` (setup script)
+* :file:`./examples/`
+* :file:`./sql/` (SQL scripts to configure advanced functionality)
+* :file:`./js/vendor/openlayers/` (GIS visualization)
+
+.. _faq1_45:
+
+1.45 I get an error message about unknown authentication method caching_sha2_password when trying to log in
+-----------------------------------------------------------------------------------------------------------
+
+When logging in using MySQL version 8 or newer, you may encounter an error message like this:
+
+ mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
+
+ mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client
+
+This error is because of a version compatibility problem between PHP and MySQL. The MySQL project introduced a new authentication
+method (our tests show this began with version 8.0.11) however PHP did not include the ability to use that authentication method.
+PHP reports that this was fixed in PHP version 7.4.
+
+Users experiencing this are encouraged to upgrade their PHP installation, however a workaround exists. Your MySQL user account
+can be set to use the older authentication with a command such as
+
+.. code-block:: mysql
+
+ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
+
+.. seealso:: , ,
+
+.. _faqconfig:
+
+Configuration
++++++++++++++
+
+.. _faq2_1:
+
+2.1 The error message "Warning: Cannot add header information - headers already sent by ..." is displayed, what's the problem?
+------------------------------------------------------------------------------------------------------------------------------
+
+Edit your :file:`config.inc.php` file and ensure there is nothing (I.E. no
+blank lines, no spaces, no characters...) neither before the ```` tag at the end.
+
+.. _faq2_2:
+
+2.2 phpMyAdmin can't connect to MySQL. What's wrong?
+----------------------------------------------------
+
+Either there is an error with your PHP setup or your username/password
+is wrong. Try to make a small script which uses mysql\_connect and see
+if it works. If it doesn't, it may be you haven't even compiled MySQL
+support into PHP.
+
+.. _faq2_3:
+
+2.3 The error message "Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) ..." is displayed. What can I do?
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+The error message can also be: :guilabel:`Error #2002 - The server is not
+responding (or the local MySQL server's socket is not correctly configured)`.
+
+First, you need to determine what socket is being used by MySQL. To do this,
+connect to your server and go to the MySQL bin directory. In this directory
+there should be a file named *mysqladmin*. Type ``./mysqladmin variables``, and
+this should give you a bunch of info about your MySQL server, including the
+socket (*/tmp/mysql.sock*, for example). You can also ask your ISP for the
+connection info or, if you're hosting your own, connect from the 'mysql'
+command-line client and type 'status' to get the connection type and socket or
+port number.
+
+Then, you need to tell PHP to use this socket. You can do this for all PHP in
+the :file:`php.ini` or for phpMyAdmin only in the :file:`config.inc.php`. For
+example: :config:option:`$cfg['Servers'][$i]['socket']` Please also make sure
+that the permissions of this file allow to be readable by your webserver.
+
+On my RedHat-Box the socket of MySQL is */var/lib/mysql/mysql.sock*.
+In your :file:`php.ini` you will find a line
+
+.. code-block:: ini
+
+ mysql.default_socket = /tmp/mysql.sock
+
+change it to
+
+.. code-block:: ini
+
+ mysql.default_socket = /var/lib/mysql/mysql.sock
+
+Then restart apache and it will work.
+
+Have also a look at the `corresponding section of the MySQL
+documentation `_.
+
+.. _faq2_4:
+
+2.4 Nothing is displayed by my browser when I try to run phpMyAdmin, what can I do?
+-----------------------------------------------------------------------------------
+
+Try to set the :config:option:`$cfg['OBGzip']` directive to ``false`` in the phpMyAdmin configuration
+file. It helps sometime. Also have a look at your PHP version number:
+if it contains "b" or "alpha" it means you're running a testing
+version of PHP. That's not a so good idea, please upgrade to a plain
+revision.
+
+.. _faq2_5:
+
+2.5 Each time I want to insert or change a row or drop a database or a table, an error 404 (page not found) is displayed or, with HTTP or cookie authentication, I'm asked to log in again. What's wrong?
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+Check your webserver setup if it correctly fills in either PHP_SELF or REQUEST_URI variables.
+
+If you are running phpMyAdmin behind reverse proxy, please set the
+:config:option:`$cfg['PmaAbsoluteUri']` directive in the phpMyAdmin
+configuration file to match your setup.
+
+.. _faq2_6:
+
+2.6 I get an "Access denied for user: 'root@localhost' (Using password: YES)"-error when trying to access a MySQL-Server on a host which is port-forwarded for my localhost.
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+When you are using a port on your localhost, which you redirect via
+port-forwarding to another host, MySQL is not resolving the localhost
+as expected. Erik Wasser explains: The solution is: if your host is
+"localhost" MySQL (the command line tool :command:`mysql` as well) always
+tries to use the socket connection for speeding up things. And that
+doesn't work in this configuration with port forwarding. If you enter
+"127.0.0.1" as hostname, everything is right and MySQL uses the
+:term:`TCP` connection.
+
+.. _faqthemes:
+
+2.7 Using and creating themes
+-----------------------------
+
+See :ref:`themes`.
+
+.. _faqmissingparameters:
+
+2.8 I get "Missing parameters" errors, what can I do?
+-----------------------------------------------------
+
+Here are a few points to check:
+
+* In :file:`config.inc.php`, try to leave the :config:option:`$cfg['PmaAbsoluteUri']` directive empty. See also
+ :ref:`faq4_7`.
+* Maybe you have a broken PHP installation or you need to upgrade your
+ Zend Optimizer. See .
+* If you are using Hardened PHP with the ini directive
+ ``varfilter.max_request_variables`` set to the default (200) or
+ another low value, you could get this error if your table has a high
+ number of columns. Adjust this setting accordingly. (Thanks to Klaus
+ Dorninger for the hint).
+* In the :file:`php.ini` directive ``arg_separator.input``, a value of ";"
+ will cause this error. Replace it with "&;".
+* If you are using `Suhosin `_, you
+ might want to increase `request limits `_.
+* The directory specified in the :file:`php.ini` directive
+ ``session.save_path`` does not exist or is read-only (this can be caused
+ by `bug in the PHP installer `_).
+
+.. _faq2_9:
+
+2.9 Seeing an upload progress bar
+---------------------------------
+
+To be able to see a progress bar during your uploads, your server must
+have the `uploadprogress `_ extension, and
+you must be running PHP 5.4.0 or higher. Moreover, the JSON extension
+has to be enabled in your PHP.
+
+If using PHP 5.4.0 or higher, you must set
+``session.upload_progress.enabled`` to ``1`` in your :file:`php.ini`. However,
+starting from phpMyAdmin version 4.0.4, session-based upload progress has
+been temporarily deactivated due to its problematic behavior.
+
+.. _faqlimitations:
+
+Known limitations
++++++++++++++++++
+
+.. _login_bug:
+
+3.1 When using HTTP authentication, a user who logged out can not log in again in with the same nick.
+-----------------------------------------------------------------------------------------------------
+
+This is related to the authentication mechanism (protocol) used by
+phpMyAdmin. To bypass this problem: just close all the opened browser
+windows and then go back to phpMyAdmin. You should be able to log in
+again.
+
+.. _faq3_2:
+
+3.2 When dumping a large table in compressed mode, I get a memory limit error or a time limit error.
+----------------------------------------------------------------------------------------------------
+
+Compressed dumps are built in memory and because of this are limited
+to php's memory limit. For gzip/bzip2 exports this can be overcome
+since 2.5.4 using :config:option:`$cfg['CompressOnFly']` (enabled by default).
+zip exports can not be handled this way, so if you need zip files for larger
+dump, you have to use another way.
+
+.. _faq3_3:
+
+3.3 With InnoDB tables, I lose foreign key relationships when I rename a table or a column.
+-------------------------------------------------------------------------------------------
+
+This is an InnoDB bug, see .
+
+.. _faq3_4:
+
+3.4 I am unable to import dumps I created with the mysqldump tool bundled with the MySQL server distribution.
+-------------------------------------------------------------------------------------------------------------
+
+The problem is that older versions of ``mysqldump`` created invalid
+comments like this:
+
+.. code-block:: mysql
+
+ -- MySQL dump 8.22
+ --
+ -- Host: localhost Database: database
+ ---------------------------------------------------------
+ -- Server version 3.23.54
+
+The invalid part of the code is the horizontal line made of dashes
+that appears once in every dump created with mysqldump. If you want to
+run your dump you have to turn it into valid MySQL. This means, you
+have to add a whitespace after the first two dashes of the line or add
+a # before it: ``-- -------------------------------------------------------`` or
+``#---------------------------------------------------------``
+
+.. _faq3_5:
+
+3.5 When using nested folders, multiple hierarchies are displayed in a wrong manner.
+------------------------------------------------------------------------------------
+
+Please note that you should not use the separating string multiple
+times without any characters between them, or at the beginning/end of
+your table name. If you have to, think about using another
+TableSeparator or disabling that feature.
+
+.. seealso:: :config:option:`$cfg['NavigationTreeTableSeparator']`
+
+.. _faq3_6:
+
+3.6 (withdrawn).
+-----------------
+
+.. _faq3_7:
+
+3.7 I have table with many (100+) columns and when I try to browse table I get series of errors like "Warning: unable to parse url". How can this be fixed?
+-----------------------------------------------------------------------------------------------------------------------------------------------------------
+
+Your table neither have a :term:`primary key` nor an :term:`unique key`, so we must
+use a long expression to identify this row. This causes problems to
+parse\_url function. The workaround is to create a :term:`primary key`
+or :term:`unique key`.
+
+.. _faq3_8:
+
+3.8 I cannot use (clickable) HTML-forms in columns where I put a MIME-Transformation onto!
+------------------------------------------------------------------------------------------
+
+Due to a surrounding form-container (for multi-row delete checkboxes),
+no nested forms can be put inside the table where phpMyAdmin displays
+the results. You can, however, use any form inside of a table if keep
+the parent form-container with the target to tbl\_row\_delete.php and
+just put your own input-elements inside. If you use a custom submit
+input field, the form will submit itself to the displaying page again,
+where you can validate the $HTTP\_POST\_VARS in a transformation. For
+a tutorial on how to effectively use transformations, see our `Link
+section `_ on the
+official phpMyAdmin-homepage.
+
+.. _faq3_9:
+
+3.9 I get error messages when using "--sql\_mode=ANSI" for the MySQL server.
+----------------------------------------------------------------------------
+
+When MySQL is running in ANSI-compatibility mode, there are some major
+differences in how :term:`SQL` is structured (see
+). Most important of all, the
+quote-character (") is interpreted as an identifier quote character and not as
+a string quote character, which makes many internal phpMyAdmin operations into
+invalid :term:`SQL` statements. There is no
+workaround to this behaviour. News to this item will be posted in `issue
+#7383 `_.
+
+.. _faq3_10:
+
+3.10 Homonyms and no primary key: When the results of a SELECT display more that one column with the same value (for example ``SELECT lastname from employees where firstname like 'A%'`` and two "Smith" values are displayed), if I click Edit I cannot be sure that I am editing the intended row.
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+Please make sure that your table has a :term:`primary key`, so that phpMyAdmin
+can use it for the Edit and Delete links.
+
+.. _faq3_11:
+
+3.11 The number of rows for InnoDB tables is not correct.
+---------------------------------------------------------
+
+phpMyAdmin uses a quick method to get the row count, and this method only
+returns an approximate count in the case of InnoDB tables. See
+:config:option:`$cfg['MaxExactCount']` for a way to modify those results, but
+this could have a serious impact on performance.
+However, one can easily replace the approximate row count with exact count by
+simply clicking on the approximate count. This can also be done for all tables
+at once by clicking on the rows sum displayed at the bottom.
+
+.. seealso:: :config:option:`$cfg['MaxExactCount']`
+
+.. _faq3_12:
+
+3.12 (withdrawn).
+-----------------
+
+.. _faq3_13:
+
+3.13 I get an error when entering ``USE`` followed by a db name containing an hyphen.
+-------------------------------------------------------------------------------------
+
+The tests I have made with MySQL 5.1.49 shows that the API does not
+accept this syntax for the USE command.
+
+.. _faq3_14:
+
+3.14 I am not able to browse a table when I don't have the right to SELECT one of the columns.
+----------------------------------------------------------------------------------------------
+
+This has been a known limitation of phpMyAdmin since the beginning and
+it's not likely to be solved in the future.
+
+.. _faq3_15:
+
+3.15 (withdrawn).
+-----------------
+
+.. _faq3_16:
+
+3.16 (withdrawn).
+-----------------
+
+.. _faq3_17:
+
+3.17 (withdrawn).
+-----------------
+
+.. _faq3_18:
+
+3.18 When I import a CSV file that contains multiple tables, they are lumped together into a single table.
+----------------------------------------------------------------------------------------------------------
+
+There is no reliable way to differentiate tables in :term:`CSV` format. For the
+time being, you will have to break apart :term:`CSV` files containing multiple
+tables.
+
+.. _faq3_19:
+
+3.19 When I import a file and have phpMyAdmin determine the appropriate data structure it only uses int, decimal, and varchar types.
+------------------------------------------------------------------------------------------------------------------------------------
+
+Currently, the import type-detection system can only assign these
+MySQL types to columns. In future, more will likely be added but for
+the time being you will have to edit the structure to your liking
+post-import. Also, you should note the fact that phpMyAdmin will use
+the size of the largest item in any given column as the column size
+for the appropriate type. If you know you will be adding larger items
+to that column then you should manually adjust the column sizes
+accordingly. This is done for the sake of efficiency.
+
+.. _faq3_20:
+
+3.20 After upgrading, some bookmarks are gone or their content cannot be shown.
+-------------------------------------------------------------------------------
+
+At some point, the character set used to store bookmark content has changed.
+It's better to recreate your bookmark from the newer phpMyAdmin version.
+
+.. _faq3_21:
+
+3.21 I am unable to log in with a username containing unicode characters such as á.
+-----------------------------------------------------------------------------------
+
+This can happen if MySQL server is not configured to use utf-8 as default
+charset. This is a limitation of how PHP and the MySQL server interact; there
+is no way for PHP to set the charset before authenticating.
+
+.. seealso::
+
+ `phpMyAdmin issue 12232 `_,
+ `MySQL documentation note `_
+
+.. _faqmultiuser:
+
+ISPs, multi-user installations
+++++++++++++++++++++++++++++++
+
+.. _faq4_1:
+
+4.1 I'm an ISP. Can I setup one central copy of phpMyAdmin or do I need to install it for each customer?
+--------------------------------------------------------------------------------------------------------
+
+Since version 2.0.3, you can setup a central copy of phpMyAdmin for all your
+users. The development of this feature was kindly sponsored by NetCologne GmbH.
+This requires a properly setup MySQL user management and phpMyAdmin
+:term:`HTTP` or cookie authentication.
+
+.. seealso:: :ref:`authentication_modes`
+
+.. _faq4_2:
+
+4.2 What's the preferred way of making phpMyAdmin secure against evil access?
+-----------------------------------------------------------------------------
+
+This depends on your system. If you're running a server which cannot be
+accessed by other people, it's sufficient to use the directory protection
+bundled with your webserver (with Apache you can use :term:`.htaccess` files,
+for example). If other people have telnet access to your server, you should use
+phpMyAdmin's :term:`HTTP` or cookie authentication features.
+
+Suggestions:
+
+* Your :file:`config.inc.php` file should be ``chmod 660``.
+* All your phpMyAdmin files should be chown -R phpmy.apache, where phpmy
+ is a user whose password is only known to you, and apache is the group
+ under which Apache runs.
+* Follow security recommendations for PHP and your webserver.
+
+.. _faq4_3:
+
+4.3 I get errors about not being able to include a file in */lang* or in */libraries*.
+--------------------------------------------------------------------------------------
+
+Check :file:`php.ini`, or ask your sysadmin to check it. The
+``include_path`` must contain "." somewhere in it, and
+``open_basedir``, if used, must contain "." and "./lang" to allow
+normal operation of phpMyAdmin.
+
+.. _faq4_4:
+
+4.4 phpMyAdmin always gives "Access denied" when using HTTP authentication.
+---------------------------------------------------------------------------
+
+This could happen for several reasons:
+
+* :config:option:`$cfg['Servers'][$i]['controluser']` and/or :config:option:`$cfg['Servers'][$i]['controlpass']` are wrong.
+* The username/password you specify in the login dialog are invalid.
+* You have already setup a security mechanism for the phpMyAdmin-
+ directory, eg. a :term:`.htaccess` file. This would interfere with phpMyAdmin's
+ authentication, so remove it.
+
+.. _faq4_5:
+
+4.5 Is it possible to let users create their own databases?
+-----------------------------------------------------------
+
+Starting with 2.2.5, in the user management page, you can enter a
+wildcard database name for a user (for example "joe%"), and put the
+privileges you want. For example, adding ``SELECT, INSERT, UPDATE,
+DELETE, CREATE, DROP, INDEX, ALTER`` would let a user create/manage
+their database(s).
+
+.. _faq4_6:
+
+4.6 How can I use the Host-based authentication additions?
+----------------------------------------------------------
+
+If you have existing rules from an old :term:`.htaccess` file, you can take them and
+add a username between the ``'deny'``/``'allow'`` and ``'from'``
+strings. Using the username wildcard of ``'%'`` would be a major
+benefit here if your installation is suited to using it. Then you can
+just add those updated lines into the
+:config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` array.
+
+If you want a pre-made sample, you can try this fragment. It stops the
+'root' user from logging in from any networks other than the private
+network :term:`IP` blocks.
+
+.. code-block:: php
+
+ //block root from logging in except from the private networks
+ $cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
+ $cfg['Servers'][$i]['AllowDeny']['rules'] = [
+ 'deny root from all',
+ 'allow root from localhost',
+ 'allow root from 10.0.0.0/8',
+ 'allow root from 192.168.0.0/16',
+ 'allow root from 172.16.0.0/12',
+ ];
+
+.. _faq4_7:
+
+4.7 Authentication window is displayed more than once, why?
+-----------------------------------------------------------
+
+This happens if you are using a :term:`URL` to start phpMyAdmin which is
+different than the one set in your :config:option:`$cfg['PmaAbsoluteUri']`. For
+example, a missing "www", or entering with an :term:`IP` address while a domain
+name is defined in the config file.
+
+.. _faq4_8:
+
+4.8 Which parameters can I use in the URL that starts phpMyAdmin?
+-----------------------------------------------------------------
+
+When starting phpMyAdmin, you can use the ``db``
+and ``server`` parameters. This last one can contain
+either the numeric host index (from ``$i`` of the configuration file)
+or one of the host names present in the configuration file.
+
+For example, to jump directly to a particular database, a URL can be constructed as
+``https://example.com/phpmyadmin/?db=sakila``.
+
+.. seealso:: :ref:`faq1_34`
+
+.. versionchanged:: 4.9.0
+
+ Support for using the ``pma_username`` and ``pma_password`` parameters was removed
+ in phpMyAdmin 4.9.0 (see `PMASA-2019-4 `_).
+
+.. _faqbrowsers:
+
+Browsers or client OS
++++++++++++++++++++++
+
+.. _faq5_1:
+
+5.1 I get an out of memory error, and my controls are non-functional, when trying to create a table with more than 14 columns.
+------------------------------------------------------------------------------------------------------------------------------
+
+We could reproduce this problem only under Win98/98SE. Testing under
+WinNT4 or Win2K, we could easily create more than 60 columns. A
+workaround is to create a smaller number of columns, then come back to
+your table properties and add the other columns.
+
+.. _faq5_2:
+
+5.2 With Xitami 2.5b4, phpMyAdmin won't process form fields.
+------------------------------------------------------------
+
+This is not a phpMyAdmin problem but a Xitami known bug: you'll face
+it with each script/website that use forms. Upgrade or downgrade your
+Xitami server.
+
+.. _faq5_3:
+
+5.3 I have problems dumping tables with Konqueror (phpMyAdmin 2.2.2).
+---------------------------------------------------------------------
+
+With Konqueror 2.1.1: plain dumps, zip and gzip dumps work ok, except
+that the proposed file name for the dump is always 'tbl\_dump.php'.
+The bzip2 dumps don't seem to work. With Konqueror 2.2.1: plain dumps
+work; zip dumps are placed into the user's temporary directory, so
+they must be moved before closing Konqueror, or else they disappear.
+gzip dumps give an error message. Testing needs to be done for
+Konqueror 2.2.2.
+
+.. _faq5_4:
+
+5.4 I can't use the cookie authentication mode because Internet Explorer never stores the cookies.
+--------------------------------------------------------------------------------------------------
+
+MS Internet Explorer seems to be really buggy about cookies, at least
+till version 6.
+
+.. _faq5_5:
+
+5.5 (withdrawn).
+----------------------------------------------------------------------------
+
+.. _faq5_6:
+
+5.6 (withdrawn).
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+.. _faq5_7:
+
+5.7 I refresh (reload) my browser, and come back to the welcome page.
+---------------------------------------------------------------------
+
+Some browsers support right-clicking into the frame you want to
+refresh, just do this in the right frame.
+
+.. _faq5_8:
+
+5.8 With Mozilla 0.9.7 I have problems sending a query modified in the query box.
+---------------------------------------------------------------------------------
+
+Looks like a Mozilla bug: 0.9.6 was OK. We will keep an eye on future
+Mozilla versions.
+
+.. _faq5_9:
+
+5.9 With Mozilla 0.9.? to 1.0 and Netscape 7.0-PR1 I can't type a whitespace in the SQL-Query edit area: the page scrolls down.
+-------------------------------------------------------------------------------------------------------------------------------
+
+This is a Mozilla bug (see bug #26882 at `BugZilla
+`_).
+
+.. _faq5_10:
+
+5.10 (withdrawn).
+-----------------------------------------------------------------------------------------
+
+.. _faq5_11:
+
+5.11 Extended-ASCII characters like German umlauts are displayed wrong.
+-----------------------------------------------------------------------
+
+Please ensure that you have set your browser's character set to the
+one of the language file you have selected on phpMyAdmin's start page.
+Alternatively, you can try the auto detection mode that is supported
+by the recent versions of the most browsers.
+
+.. _faq5_12:
+
+5.12 Mac OS X Safari browser changes special characters to "?".
+---------------------------------------------------------------
+
+This issue has been reported by a :term:`macOS` user, who adds that Chimera,
+Netscape and Mozilla do not have this problem.
+
+.. _faq5_13:
+
+5.13 (withdrawn)
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+.. _faq5_14:
+
+5.14 (withdrawn)
+------------------------------------------------------------------------------------------------------------------
+
+.. _faq5_15:
+
+5.15 (withdrawn)
+-----------------------------------------
+
+.. _faq5_16:
+
+5.16 With Internet Explorer, I get "Access is denied" Javascript errors. Or I cannot make phpMyAdmin work under Windows.
+------------------------------------------------------------------------------------------------------------------------
+
+Please check the following points:
+
+* Maybe you have defined your :config:option:`$cfg['PmaAbsoluteUri']` setting in
+ :file:`config.inc.php` to an :term:`IP` address and you are starting phpMyAdmin
+ with a :term:`URL` containing a domain name, or the reverse situation.
+* Security settings in IE and/or Microsoft Security Center are too high,
+ thus blocking scripts execution.
+* The Windows Firewall is blocking Apache and MySQL. You must allow
+ :term:`HTTP` ports (80 or 443) and MySQL
+ port (usually 3306) in the "in" and "out" directions.
+
+.. _faq5_17:
+
+5.17 With Firefox, I cannot delete rows of data or drop a database.
+-------------------------------------------------------------------
+
+Many users have confirmed that the Tabbrowser Extensions plugin they
+installed in their Firefox is causing the problem.
+
+.. _faq5_18:
+
+5.18 (withdrawn)
+-----------------------------------------------------------------------------------------
+
+.. _faq5_19:
+
+5.19 I get JavaScript errors in my browser.
+-------------------------------------------
+
+Issues have been reported with some combinations of browser
+extensions. To troubleshoot, disable all extensions then clear your
+browser cache to see if the problem goes away.
+
+.. _faq5_20:
+
+5.20 I get errors about violating Content Security Policy.
+----------------------------------------------------------
+
+If you see errors like:
+
+.. code-block:: text
+
+ Refused to apply inline style because it violates the following Content Security Policy directive
+
+This is usually caused by some software, which wrongly rewrites
+:mailheader:`Content Security Policy` headers. Usually this is caused by
+antivirus proxy or browser addons which are causing such errors.
+
+If you see these errors, try disabling the HTTP proxy in antivirus or disable
+the :mailheader:`Content Security Policy` rewriting in it. If that doesn't
+help, try disabling browser extensions.
+
+Alternatively it can be also server configuration issue (if the webserver is
+configured to emit :mailheader:`Content Security Policy` headers, they can
+override the ones from phpMyAdmin).
+
+Programs known to cause these kind of errors:
+
+* Kaspersky Internet Security
+
+.. _faq5_21:
+
+5.21 I get errors about potentially unsafe operation when browsing table or executing SQL query.
+------------------------------------------------------------------------------------------------
+
+If you see errors like:
+
+.. code-block:: text
+
+ A potentially unsafe operation has been detected in your request to this site.
+
+This is usually caused by web application firewall doing requests filtering. It
+tries to prevent SQL injection, however phpMyAdmin is tool designed to execute
+SQL queries, thus it makes it unusable.
+
+Please allow phpMyAdmin scripts from the web application firewall settings
+or disable it completely for phpMyAdmin path.
+
+Programs known to cause these kind of errors:
+
+* Wordfence Web Application Firewall
+
+.. _faqusing:
+
+Using phpMyAdmin
+++++++++++++++++
+
+.. _faq6_1:
+
+6.1 I can't insert new rows into a table / I can't create a table - MySQL brings up a SQL error.
+------------------------------------------------------------------------------------------------
+
+Examine the :term:`SQL` error with care.
+Often the problem is caused by specifying a wrong column-type. Common
+errors include:
+
+* Using ``VARCHAR`` without a size argument
+* Using ``TEXT`` or ``BLOB`` with a size argument
+
+Also, look at the syntax chapter in the MySQL manual to confirm that
+your syntax is correct.
+
+.. _faq6_2:
+
+6.2 When I create a table, I set an index for two columns and phpMyAdmin generates only one index with those two columns.
+-------------------------------------------------------------------------------------------------------------------------
+
+This is the way to create a multi-columns index. If you want two
+indexes, create the first one when creating the table, save, then
+display the table properties and click the Index link to create the
+other index.
+
+.. _faq6_3:
+
+6.3 How can I insert a null value into my table?
+------------------------------------------------
+
+Since version 2.2.3, you have a checkbox for each column that can be
+null. Before 2.2.3, you had to enter "null", without the quotes, as
+the column's value. Since version 2.5.5, you have to use the checkbox
+to get a real NULL value, so if you enter "NULL" this means you want a
+literal NULL in the column, and not a NULL value (this works in PHP4).
+
+.. _faq6_4:
+
+6.4 How can I backup my database or table?
+------------------------------------------
+
+Click on a database or table name in the navigation panel, the properties will
+be displayed. Then on the menu, click "Export", you can dump the structure, the
+data, or both. This will generate standard :term:`SQL` statements that can be
+used to recreate your database/table. You will need to choose "Save as file",
+so that phpMyAdmin can transmit the resulting dump to your station. Depending
+on your PHP configuration, you will see options to compress the dump. See also
+the :config:option:`$cfg['ExecTimeLimit']` configuration variable. For
+additional help on this subject, look for the word "dump" in this document.
+
+.. _faq6_5:
+
+6.5 How can I restore (upload) my database or table using a dump? How can I run a ".sql" file?
+----------------------------------------------------------------------------------------------
+
+Click on a database name in the navigation panel, the properties will
+be displayed. Select "Import" from the list of tabs in the right–hand
+frame (or ":term:`SQL`" if your phpMyAdmin
+version is previous to 2.7.0). In the "Location of the text file"
+section, type in the path to your dump filename, or use the Browse
+button. Then click Go. With version 2.7.0, the import engine has been
+re–written, if possible it is suggested that you upgrade to take
+advantage of the new features. For additional help on this subject,
+look for the word "upload" in this document.
+
+Note: For errors while importing of dumps exported from older MySQL versions to newer MySQL versions,
+please check :ref:`faq6_41`.
+
+.. _faq6_6:
+
+6.6 How can I use the relation table in Query-by-example?
+---------------------------------------------------------
+
+Here is an example with the tables persons, towns and countries, all
+located in the database "mydb". If you don't have a ``pma__relation``
+table, create it as explained in the configuration section. Then
+create the example tables:
+
+.. code-block:: mysql
+
+ CREATE TABLE REL_countries (
+ country_code char(1) NOT NULL default '',
+ description varchar(10) NOT NULL default '',
+ PRIMARY KEY (country_code)
+ ) ENGINE=MyISAM;
+
+ INSERT INTO REL_countries VALUES ('C', 'Canada');
+
+ CREATE TABLE REL_persons (
+ id tinyint(4) NOT NULL auto_increment,
+ person_name varchar(32) NOT NULL default '',
+ town_code varchar(5) default '0',
+ country_code char(1) NOT NULL default '',
+ PRIMARY KEY (id)
+ ) ENGINE=MyISAM;
+
+ INSERT INTO REL_persons VALUES (11, 'Marc', 'S', 'C');
+ INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C');
+
+ CREATE TABLE REL_towns (
+ town_code varchar(5) NOT NULL default '0',
+ description varchar(30) NOT NULL default '',
+ PRIMARY KEY (town_code)
+ ) ENGINE=MyISAM;
+
+ INSERT INTO REL_towns VALUES ('S', 'Sherbrooke');
+ INSERT INTO REL_towns VALUES ('M', 'Montréal');
+
+To setup appropriate links and display information:
+
+* on table "REL\_persons" click Structure, then Relation view
+* for "town\_code", choose from dropdowns, "mydb", "REL\_towns", "town\_code"
+ for foreign database, table and column respectively
+* for "country\_code", choose from dropdowns, "mydb", "REL\_countries",
+ "country\_code" for foreign database, table and column respectively
+* on table "REL\_towns" click Structure, then Relation view
+* in "Choose column to display", choose "description"
+* repeat the two previous steps for table "REL\_countries"
+
+Then test like this:
+
+* Click on your db name in the navigation panel
+* Choose "Query"
+* Use tables: persons, towns, countries
+* Click "Update query"
+* In the columns row, choose persons.person\_name and click the "Show"
+ tickbox
+* Do the same for towns.description and countries.descriptions in the
+ other 2 columns
+* Click "Update query" and you will see in the query box that the
+ correct joins have been generated
+* Click "Submit query"
+
+.. _faqdisplay:
+
+6.7 How can I use the "display column" feature?
+-----------------------------------------------
+
+Starting from the previous example, create the ``pma__table_info`` as
+explained in the configuration section, then browse your persons
+table, and move the mouse over a town code or country code. See also
+:ref:`faq6_21` for an additional feature that "display column"
+enables: drop-down list of possible values.
+
+.. _faqpdf:
+
+6.8 How can I produce a PDF schema of my database?
+--------------------------------------------------
+
+First the configuration variables "relation", "table\_coords" and
+"pdf\_pages" have to be filled in.
+
+* Select your database in the navigation panel.
+* Choose ":guilabel:`Designer`" in the navigation bar at the top.
+* Move the tables the way you want them.
+* Choose ":guilabel:`Export schema`" in the left menu.
+* The export modal will open.
+* Select the type of export to :term:`PDF`, you may adjust the other settings.
+* Submit the form and the file will start downloading.
+
+.. seealso::
+
+ :ref:`relations`
+
+.. _faq6_9:
+
+6.9 phpMyAdmin is changing the type of one of my columns!
+---------------------------------------------------------
+
+No, it's MySQL that is doing `silent column type changing
+`_.
+
+.. _underscore:
+
+6.10 When creating a privilege, what happens with underscores in the database name?
+-----------------------------------------------------------------------------------
+
+If you do not put a backslash before the underscore, this is a
+wildcard grant, and the underscore means "any character". So, if the
+database name is "john\_db", the user would get rights to john1db,
+john2db ... If you put a backslash before the underscore, it means
+that the database name will have a real underscore.
+
+.. _faq6_11:
+
+6.11 What is the curious symbol ø in the statistics pages?
+----------------------------------------------------------
+
+It means "average".
+
+.. _faqexport:
+
+6.12 I want to understand some Export options.
+----------------------------------------------
+
+**Structure:**
+
+* "Add DROP TABLE" will add a line telling MySQL to `drop the table
+ `_, if it already
+ exists during the import. It does NOT drop the table after your
+ export, it only affects the import file.
+* "If Not Exists" will only create the table if it doesn't exist.
+ Otherwise, you may get an error if the table name exists but has a
+ different structure.
+* "Add AUTO\_INCREMENT value" ensures that AUTO\_INCREMENT value (if
+ any) will be included in backup.
+* "Enclose table and column names with backquotes" ensures that column
+ and table names formed with special characters are protected.
+* "Add into comments" includes column comments, relations, and media
+ types set in the pmadb in the dump as :term:`SQL` comments
+ (*/\* xxx \*/*).
+
+**Data:**
+
+* "Complete inserts" adds the column names on every INSERT command, for
+ better documentation (but resulting file is bigger).
+* "Extended inserts" provides a shorter dump file by using only once the
+ INSERT verb and the table name.
+* "Delayed inserts" are best explained in the `MySQL manual - INSERT DELAYED Syntax
+ `_.
+* "Ignore inserts" treats errors as a warning instead. Again, more info
+ is provided in the `MySQL manual - INSERT Syntax
+ `_, but basically with
+ this selected, invalid values are adjusted and inserted rather than
+ causing the entire statement to fail.
+
+.. _faq6_13:
+
+6.13 I would like to create a database with a dot in its name.
+--------------------------------------------------------------
+
+This is a bad idea, because in MySQL the syntax "database.table" is
+the normal way to reference a database and table name. Worse, MySQL
+will usually let you create a database with a dot, but then you cannot
+work with it, nor delete it.
+
+.. _faqsqlvalidator:
+
+6.14 (withdrawn).
+-----------------
+
+.. _faq6_15:
+
+6.15 I want to add a BLOB column and put an index on it, but MySQL says "BLOB column '...' used in key specification without a key length".
+-------------------------------------------------------------------------------------------------------------------------------------------
+
+The right way to do this, is to create the column without any indexes,
+then display the table structure and use the "Create an index" dialog.
+On this page, you will be able to choose your BLOB column, and set a
+size to the index, which is the condition to create an index on a BLOB
+column.
+
+.. _faq6_16:
+
+6.16 How can I simply move in page with plenty editing fields?
+--------------------------------------------------------------
+
+You can use :kbd:`Ctrl+arrows` (:kbd:`Option+Arrows` in Safari) for moving on
+most pages with many editing fields (table structure changes, row editing,
+etc.).
+
+.. _faq6_17:
+
+6.17 Transformations: I can't enter my own mimetype! What is this feature then useful for?
+------------------------------------------------------------------------------------------
+
+Defining mimetypes is of no use if you can't put
+transformations on them. Otherwise you could just put a comment on the
+column. Because entering your own mimetype will cause serious syntax
+checking issues and validation, this introduces a high-risk false-
+user-input situation. Instead you have to initialize mimetypes using
+functions or empty mimetype definitions.
+
+Plus, you have a whole overview of available mimetypes. Who knows all those
+mimetypes by heart so they can enter it at will?
+
+.. _faqbookmark:
+
+6.18 Bookmarks: Where can I store bookmarks? Why can't I see any bookmarks below the query box? What are these variables for?
+-----------------------------------------------------------------------------------------------------------------------------
+
+You need to have configured the :ref:`linked-tables` for using bookmarks
+feature. Once you have done that, you can use bookmarks in the :guilabel:`SQL` tab.
+
+.. seealso:: :ref:`bookmarks`
+
+.. _faq6_19:
+
+6.19 How can I create simple LATEX document to include exported table?
+----------------------------------------------------------------------
+
+You can simply include table in your LATEX documents,
+minimal sample document should look like following one (assuming you
+have table exported in file :file:`table.tex`):
+
+.. code-block:: latex
+
+ \documentclass{article} % or any class you want
+ \usepackage{longtable} % for displaying table
+ \begin{document} % start of document
+ \include{table} % including exported table
+ \end{document} % end of document
+
+.. _faq6_20:
+
+6.20 I see a lot of databases which are not mine, and cannot access them.
+-------------------------------------------------------------------------
+
+You have one of these global privileges: CREATE TEMPORARY TABLES, SHOW
+DATABASES, LOCK TABLES. Those privileges also enable users to see all the
+database names. So if your users do not need those privileges, you can remove
+them and their databases list will shorten.
+
+.. seealso::
+
+.. _faq6_21:
+
+6.21 In edit/insert mode, how can I see a list of possible values for a column, based on some foreign table?
+------------------------------------------------------------------------------------------------------------
+
+You have to setup appropriate links between the tables, and also setup
+the "display column" in the foreign table. See :ref:`faq6_6` for an
+example. Then, if there are 100 values or less in the foreign table, a
+drop-down list of values will be available. You will see two lists of
+values, the first list containing the key and the display column, the
+second list containing the display column and the key. The reason for
+this is to be able to type the first letter of either the key or the
+display column. For 100 values or more, a distinct window will appear,
+to browse foreign key values and choose one. To change the default
+limit of 100, see :config:option:`$cfg['ForeignKeyMaxLimit']`.
+
+.. _faq6_22:
+
+6.22 Bookmarks: Can I execute a default bookmark automatically when entering Browse mode for a table?
+-----------------------------------------------------------------------------------------------------
+
+Yes. If a bookmark has the same label as a table name and it's not a
+public bookmark, it will be executed.
+
+.. seealso:: :ref:`bookmarks`
+
+.. _faq6_23:
+
+6.23 Export: I heard phpMyAdmin can export Microsoft Excel files?
+-----------------------------------------------------------------
+
+You can use :term:`CSV` for Microsoft Excel,
+which works out of the box.
+
+.. versionchanged:: 3.4.5
+ Since phpMyAdmin 3.4.5 support for direct export to Microsoft Excel version
+ 97 and newer was dropped.
+
+.. _faq6_24:
+
+6.24 Now that phpMyAdmin supports native MySQL 4.1.x column comments, what happens to my column comments stored in pmadb?
+-------------------------------------------------------------------------------------------------------------------------
+
+Automatic migration of a table's pmadb-style column comments to the
+native ones is done whenever you enter Structure page for this table.
+
+.. _faq6_25:
+
+6.25 (withdrawn).
+-----------------
+
+.. _faq6_26:
+
+6.26 How can I select a range of rows?
+--------------------------------------
+
+Click the first row of the range, hold the shift key and click the
+last row of the range. This works everywhere you see rows, for example
+in Browse mode or on the Structure page.
+
+.. _faq6_27:
+
+6.27 What format strings can I use?
+-----------------------------------
+
+In all places where phpMyAdmin accepts format strings, you can use
+``@VARIABLE@`` expansion and `strftime `_
+format strings. The expanded variables depend on a context (for
+example, if you haven't chosen a table, you can not get the table
+name), but the following variables can be used:
+
+``@HTTP_HOST@``
+ HTTP host that runs phpMyAdmin
+``@SERVER@``
+ MySQL server name
+``@VERBOSE@``
+ Verbose MySQL server name as defined in :config:option:`$cfg['Servers'][$i]['verbose']`
+``@VSERVER@``
+ Verbose MySQL server name if set, otherwise normal
+``@DATABASE@``
+ Currently opened database
+``@TABLE@``
+ Currently opened table
+``@COLUMNS@``
+ Columns of the currently opened table
+``@PHPMYADMIN@``
+ phpMyAdmin with version
+
+.. _faq6_28:
+
+6.28 (withdrawn).
+-----------------
+
+.. _faq6_29:
+
+6.29 Why can't I get a chart from my query result table?
+--------------------------------------------------------
+
+Not every table can be put to the chart. Only tables with one, two or
+three columns can be visualised as a chart. Moreover the table must be
+in a special format for chart script to understand it. Currently
+supported formats can be found in :ref:`charts`.
+
+.. _faq6_30:
+
+6.30 Import: How can I import ESRI Shapefiles?
+----------------------------------------------
+
+An ESRI Shapefile is actually a set of several files, where .shp file
+contains geometry data and .dbf file contains data related to those
+geometry data. To read data from .dbf file you need to have PHP
+compiled with the dBase extension (--enable-dbase). Otherwise only
+geometry data will be imported.
+
+To upload these set of files you can use either of the following
+methods:
+
+Configure upload directory with :config:option:`$cfg['UploadDir']`, upload both .shp and .dbf files with
+the same filename and chose the .shp file from the import page.
+
+Create a zip archive with .shp and .dbf files and import it. For this
+to work, you need to set :config:option:`$cfg['TempDir']` to a place where the web server user can
+write (for example ``'./tmp'``).
+
+To create the temporary directory on a UNIX-based system, you can do:
+
+.. code-block:: sh
+
+ cd phpMyAdmin
+ mkdir tmp
+ chmod o+rwx tmp
+
+.. _faq6_31:
+
+6.31 How do I create a relation in designer?
+--------------------------------------------
+
+To select relation, click: The display column is shown in pink. To
+set/unset a column as the display column, click the "Choose column to
+display" icon, then click on the appropriate column name.
+
+.. _faq6_32:
+
+6.32 How can I use the zoom search feature?
+-------------------------------------------
+
+The Zoom search feature is an alternative to table search feature. It allows
+you to explore a table by representing its data in a scatter plot. You can
+locate this feature by selecting a table and clicking the :guilabel:`Search`
+tab. One of the sub-tabs in the :guilabel:`Table Search` page is
+:guilabel:`Zoom Search`.
+
+Consider the table REL\_persons in :ref:`faq6_6` for
+an example. To use zoom search, two columns need to be selected, for
+example, id and town\_code. The id values will be represented on one
+axis and town\_code values on the other axis. Each row will be
+represented as a point in a scatter plot based on its id and
+town\_code. You can include two additional search criteria apart from
+the two fields to display.
+
+You can choose which field should be
+displayed as label for each point. If a display column has been set
+for the table (see :ref:`faqdisplay`), it is taken as the label unless
+you specify otherwise. You can also select the maximum number of rows
+you want to be displayed in the plot by specifing it in the 'Max rows
+to plot' field. Once you have decided over your criteria, click 'Go'
+to display the plot.
+
+After the plot is generated, you can use the
+mouse wheel to zoom in and out of the plot. In addition, panning
+feature is enabled to navigate through the plot. You can zoom-in to a
+certain level of detail and use panning to locate your area of
+interest. Clicking on a point opens a dialogue box, displaying field
+values of the data row represented by the point. You can edit the
+values if required and click on submit to issue an update query. Basic
+instructions on how to use can be viewed by clicking the 'How to use?'
+link located just above the plot.
+
+.. _faq6_33:
+
+6.33 When browsing a table, how can I copy a column name?
+---------------------------------------------------------
+
+Selecting the name of the column within the browse table header cell
+for copying is difficult, as the columns support reordering by
+dragging the header cells as well as sorting by clicking on the linked
+column name. To copy a column name, double-click on the empty area
+next to the column name, when the tooltip tells you to do so. This
+will show you an input box with the column name. You may right-click
+the column name within this input box to copy it to your clipboard.
+
+.. _faq6_34:
+
+6.34 How can I use the Favorite Tables feature?
+---------------------------------------------------------
+
+Favorite Tables feature is very much similar to Recent Tables feature.
+It allows you to add a shortcut for the frequently used tables of any
+database in the navigation panel . You can easily navigate to any table
+in the list by simply choosing it from the list. These tables are stored
+in your browser's local storage if you have not configured your
+`phpMyAdmin Configuration Storage`. Otherwise these entries are stored in
+`phpMyAdmin Configuration Storage`.
+
+IMPORTANT: In absence of `phpMyAdmin Configuration Storage`, your Favorite
+tables may be different in different browsers based on your different
+selections in them.
+
+To add a table to Favorite list simply click on the `Gray` star in front
+of a table name in the list of tables of a Database and wait until it
+turns to `Yellow`.
+To remove a table from list, simply click on the `Yellow` star and
+wait until it turns `Gray` again.
+
+Using :config:option:`$cfg['NumFavoriteTables']` in your :file:`config.inc.php`
+file, you can define the maximum number of favorite tables shown in the
+navigation panel. Its default value is `10`.
+
+.. _faq6_35:
+
+6.35 How can I use the Range search feature?
+---------------------------------------------------------
+
+With the help of range search feature, one can specify a range of values for
+particular column(s) while performing search operation on a table from the `Search`
+tab.
+
+To use this feature simply click on the `BETWEEN` or `NOT BETWEEN` operators
+from the operator select list in front of the column name. On choosing one of the
+above options, a dialog box will show up asking for the `Minimum` and `Maximum`
+value for that column. Only the specified range of values will be included
+in case of `BETWEEN` and excluded in case of `NOT BETWEEN` from the final results.
+
+Note: The Range search feature will work only `Numeric` and `Date` data type columns.
+
+.. _faq6_36:
+
+6.36 What is Central columns and how can I use this feature?
+------------------------------------------------------------
+
+As the name suggests, the Central columns feature enables to maintain a central list of
+columns per database to avoid similar name for the same data element and bring consistency
+of data type for the same data element. You can use the central list of columns to
+add an element to any table structure in that database which will save from writing
+similar column name and column definition.
+
+To add a column to central list, go to table structure page, check the columns you want
+to include and then simply click on "Add to central columns". If you want to add all
+unique columns from more than one table from a database then go to database structure page,
+check the tables you want to include and then select "Add columns to central list".
+
+To remove a column from central list, go to Table structure page, check the columns you want
+to remove and then simply click on "Remove from central columns". If you want to remove all
+columns from more than one tables from a database then go to database structure page,
+check the tables you want to include and then select "Remove columns from central list".
+
+To view and manage the central list, select the database you want to manage central columns
+for then from the top menu click on "Central columns". You will be taken to a page where
+you will have options to edit, delete or add new columns to central list.
+
+.. _faq6_37:
+
+6.37 How can I use Improve Table structure feature?
+---------------------------------------------------------
+
+Improve table structure feature helps to bring the table structure upto
+Third Normal Form. A wizard is presented to user which asks questions about the
+elements during the various steps for normalization and a new structure is proposed
+accordingly to bring the table into the First/Second/Third Normal form.
+On startup of the wizard, user gets to select upto what normal form they want to
+normalize the table structure.
+
+Here is an example table which you can use to test all of the three First, Second and
+Third Normal Form.
+
+.. code-block:: mysql
+
+ CREATE TABLE `VetOffice` (
+ `petName` varchar(64) NOT NULL,
+ `petBreed` varchar(64) NOT NULL,
+ `petType` varchar(64) NOT NULL,
+ `petDOB` date NOT NULL,
+ `ownerLastName` varchar(64) NOT NULL,
+ `ownerFirstName` varchar(64) NOT NULL,
+ `ownerPhone1` int(12) NOT NULL,
+ `ownerPhone2` int(12) NOT NULL,
+ `ownerEmail` varchar(64) NOT NULL,
+ );
+
+The above table is not in First normal Form as no :term:`primary key` exists. Primary key
+is supposed to be (`petName`,`ownerLastName`,`ownerFirstName`) . If the :term:`primary key`
+is chosen as suggested the resultant table won't be in Second as well as Third Normal
+form as the following dependencies exists.
+
+.. code-block:: mysql
+
+ (OwnerLastName, OwnerFirstName) -> OwnerEmail
+ (OwnerLastName, OwnerFirstName) -> OwnerPhone
+ PetBreed -> PetType
+
+Which says, OwnerEmail depends on OwnerLastName and OwnerFirstName.
+OwnerPhone depends on OwnerLastName and OwnerFirstName.
+PetType depends on PetBreed.
+
+.. _faq6_38:
+
+6.38 How can I reassign auto-incremented values?
+------------------------------------------------
+
+Some users prefer their AUTO_INCREMENT values to be consecutive; this is not
+always the case after row deletion.
+
+Here are the steps to accomplish this. These are manual steps because they
+involve a manual verification at one point.
+
+* Ensure that you have exclusive access to the table to rearrange
+
+* On your :term:`primary key` column (i.e. id), remove the AUTO_INCREMENT setting
+
+* Delete your primary key in Structure > indexes
+
+* Create a new column future_id as primary key, AUTO_INCREMENT
+
+* Browse your table and verify that the new increments correspond to what
+ you're expecting
+
+* Drop your old id column
+
+* Rename the future_id column to id
+
+* Move the new id column via Structure > Move columns
+
+.. _faq6_39:
+
+6.39 What is the "Adjust privileges" option when renaming, copying, or moving a database, table, column, or procedure?
+----------------------------------------------------------------------------------------------------------------------
+
+When renaming/copying/moving a database/table/column/procedure,
+MySQL does not adjust the original privileges relating to these objects
+on its own. By selecting this option, phpMyAdmin will adjust the privilege
+table so that users have the same privileges on the new items.
+
+For example: A user 'bob'@'localhost' has a 'SELECT' privilege on a
+column named 'id'. Now, if this column is renamed to 'id_new', MySQL,
+on its own, would **not** adjust the column privileges to the new column name.
+phpMyAdmin can make this adjustment for you automatically.
+
+Notes:
+
+* While adjusting privileges for a database, the privileges of all
+ database-related elements (tables, columns and procedures) are also adjusted
+ to the database's new name.
+
+* Similarly, while adjusting privileges for a table, the privileges of all
+ the columns inside the new table are also adjusted.
+
+* While adjusting privileges, the user performing the operation **must** have the following
+ privileges:
+
+ * SELECT, INSERT, UPDATE, DELETE privileges on following tables:
+ `mysql`.`db`, `mysql`.`columns_priv`, `mysql`.`tables_priv`, `mysql`.`procs_priv`
+ * FLUSH privilege (GLOBAL)
+
+Thus, if you want to replicate the database/table/column/procedure as it is
+while renaming/copying/moving these objects, make sure you have checked this option.
+
+.. _faq6_40:
+
+6.40 I see "Bind parameters" checkbox in the "SQL" page. How do I write parameterized SQL queries?
+--------------------------------------------------------------------------------------------------
+
+From version 4.5, phpMyAdmin allows users to execute parameterized queries in the "SQL" page.
+Parameters should be prefixed with a colon(:) and when the "Bind parameters" checkbox is checked
+these parameters will be identified and input fields for these parameters will be presented.
+Values entered in these field will be substituted in the query before being executed.
+
+.. _faq6_41:
+
+6.41 I get import errors while importing the dumps exported from older MySQL versions (pre-5.7.6) into newer MySQL versions (5.7.7+), but they work fine when imported back on same older versions ?
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+If you get errors like *#1031 - Table storage engine for 'table_name' doesn't have this option*
+while importing the dumps exported from pre-5.7.7 MySQL servers into new MySQL server versions 5.7.7+,
+it might be because ROW_FORMAT=FIXED is not supported with InnoDB tables. Moreover, the value of
+`innodb_strict_mode `_ would define if this would be reported as a warning or as an error.
+
+Since MySQL version 5.7.9, the default value for `innodb_strict_mode` is `ON` and thus would generate
+an error when such a CREATE TABLE or ALTER TABLE statement is encountered.
+
+There are two ways of preventing such errors while importing:
+
+* Change the value of `innodb_strict_mode` to `OFF` before starting the import and turn it `ON` after
+ the import is successfully completed.
+* This can be achieved in two ways:
+
+ * Go to 'Variables' page and edit the value of `innodb_strict_mode`
+ * Run the query : `SET GLOBAL `innodb_strict_mode` = '[value]'`
+
+After the import is done, it is suggested that the value of `innodb_strict_mode` should be reset to the
+original value.
+
+.. _faqproject:
+
+phpMyAdmin project
+++++++++++++++++++
+
+.. _faq7_1:
+
+7.1 I have found a bug. How do I inform developers?
+---------------------------------------------------
+
+Our issues tracker is located at .
+For security issues, please refer to the instructions at to email
+the developers directly.
+
+.. _faq7_2:
+
+7.2 I want to translate the messages to a new language or upgrade an existing language, where do I start?
+---------------------------------------------------------------------------------------------------------
+
+Translations are very welcome and all you need to have are the
+language skills. The easiest way is to use our `online translation
+service `_. You can check
+out all the possibilities to translate in the `translate section on
+our website `_.
+
+.. _faq7_3:
+
+7.3 I would like to help out with the development of phpMyAdmin. How should I proceed?
+--------------------------------------------------------------------------------------
+
+We welcome every contribution to the development of phpMyAdmin. You
+can check out all the possibilities to contribute in the `contribute
+section on our website
+`_.
+
+.. seealso:: :ref:`developers`
+
+.. _faqsecurity:
+
+Security
+++++++++
+
+.. _faq8_1:
+
+8.1 Where can I get information about the security alerts issued for phpMyAdmin?
+--------------------------------------------------------------------------------
+
+Please refer to .
+
+.. _faq8_2:
+
+8.2 How can I protect phpMyAdmin against brute force attacks?
+-------------------------------------------------------------
+
+If you use Apache web server, phpMyAdmin exports information about
+authentication to the Apache environment and it can be used in Apache
+logs. Currently there are two variables available:
+
+``userID``
+ User name of currently active user (they do not have to be logged in).
+``userStatus``
+ Status of currently active user, one of ``ok`` (user is logged in),
+ ``mysql-denied`` (MySQL denied user login), ``allow-denied`` (user denied
+ by allow/deny rules), ``root-denied`` (root is denied in configuration),
+ ``empty-denied`` (empty password is denied).
+
+``LogFormat`` directive for Apache can look like following:
+
+.. code-block:: apache
+
+ LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n" pma_combined
+
+You can then use any log analyzing tools to detect possible break-in
+attempts.
+
+.. _faq8_3:
+
+8.3 Why are there path disclosures when directly loading certain files?
+-----------------------------------------------------------------------
+
+This is a server configuration problem. Never enable ``display_errors`` on a production site.
+
+.. _faq8_4:
+
+8.4 CSV files exported from phpMyAdmin could allow a formula injection attack.
+------------------------------------------------------------------------------
+
+It is possible to generate a :term:`CSV` file that, when imported to a spreadsheet program such as Microsoft Excel,
+could potentially allow the execution of arbitrary commands.
+
+The CSV files generated by phpMyAdmin could potentially contain text that would be interpreted by a spreadsheet program as
+a formula, but we do not believe escaping those fields is the proper behavior. There is no means to properly escape and
+differentiate between a desired text output and a formula that should be escaped, and CSV is a text format where function
+definitions should not be interpreted anyway. We have discussed this at length and feel it is the responsibility of the
+spreadsheet program to properly parse and sanitize such data on input instead.
+
+Google also has a `similar view `_.
+
+.. _faqsynchronization:
+
+Synchronization
++++++++++++++++
+
+.. _faq9_1:
+
+9.1 (withdrawn).
+----------------
+
+.. _faq9_2:
+
+9.2 (withdrawn).
+----------------
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_sources/glossary.rst.txt b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/glossary.rst.txt
new file mode 100644
index 0000000..87eb074
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/glossary.rst.txt
@@ -0,0 +1,440 @@
+.. _glossary:
+
+Glossary
+========
+
+From Wikipedia, the free encyclopedia
+
+.. glossary::
+
+ .htaccess
+ the default name of Apache's directory-level configuration file.
+
+ .. seealso::
+
+ ACL
+ Access Control List
+
+ Blowfish
+ a keyed, symmetric block cipher, designed in 1993 by `Bruce Schneier `_.
+
+ .. seealso::
+
+ Browser
+ a software application that enables a user to display and interact with text, images, and other information typically located on a web page at a website on the World Wide Web.
+
+ .. seealso::
+
+ bzip2
+ a free software/open-source data compression algorithm and program developed by Julian Seward.
+
+ .. seealso::
+
+ CGI
+ Common Gateway Interface is an important World Wide Web technology that
+ enables a client web browser to request data from a program executed on
+ the web server.
+
+ .. seealso::
+
+ Changelog
+ a log or record of changes made to a project.
+
+ .. seealso::
+
+ Client
+ a computer system that accesses a (remote) service on another computer by some kind of network.
+
+ .. seealso::
+
+ column
+ a set of data values of a particularly simple type, one for each row of the table.
+
+ .. seealso::
+
+ Cookie
+ a packet of information sent by a server to a World Wide Web browser and then sent back by the browser each time it accesses that server.
+
+ .. seealso::
+
+ CSV
+ Comma-separated values
+
+ .. seealso::
+
+ DB
+ look at :term:`Database`
+
+ Database
+ an organized collection of data.
+
+ .. seealso::
+
+ Engine
+ look at :term:`Storage Engines`
+
+ PHP extension
+ a PHP module that extends PHP with additional functionality.
+
+ .. seealso::
+
+ FAQ
+ Frequently Asked Questions is a list of commonly asked question and their
+ answers.
+
+ .. seealso::
+
+ Field
+ one part of divided data/columns.
+
+ .. seealso::
+
+ Foreign key
+ a column or group of columns in a database row that points to a key column
+ or group of columns forming a key of another database row in some
+ (usually different) table.
+
+ .. seealso::
+
+ GD
+ Graphics Library by Thomas Boutell and others for dynamically manipulating images.
+
+ .. seealso::
+
+ GD2
+ look at :term:`GD`
+
+ GZip
+ GZip is short for GNU zip, a GNU free software file compression program.
+
+ .. seealso::
+
+ host
+ any machine connected to a computer network, a node that has a hostname.
+
+ .. seealso::
+
+ hostname
+ the unique name by which a network-attached device is known on a network.
+
+ .. seealso::
+
+ HTTP
+ Hypertext Transfer Protocol is the primary method used to transfer or
+ convey information on the World Wide Web.
+
+ .. seealso::
+
+ HTTPS
+ a :term:`HTTP`-connection with additional security measures.
+
+ .. seealso::
+
+ IEC
+ International Electrotechnical Commission
+
+ IIS
+ Internet Information Services is a set of internet-based services for
+ servers using Microsoft Windows.
+
+ .. seealso::
+
+ Index
+ a feature that allows quick access to the rows in a table.
+
+ .. seealso::
+
+ IP
+ "Internet Protocol" is a data-oriented protocol used by source and
+ destination hosts for communicating data across a packet-switched
+ internetwork.
+
+ .. seealso::
+
+ IP Address
+ a unique number that devices use in order to identify and communicate with each other on a network utilizing the Internet Protocol standard.
+
+ .. seealso::
+
+ IPv6
+ IPv6 (Internet Protocol version 6) is the latest revision of the
+ Internet Protocol (:term:`IP`), designed to deal with the
+ long-anticipated problem of its predecessor IPv4 running out of addresses.
+
+ .. seealso::
+
+ ISAPI
+ Internet Server Application Programming Interface is the API of Internet Information Services (IIS).
+
+ .. seealso::
+
+ ISP
+ An Internet service provider is a business or organization that offers users
+ access to the Internet and related services.
+
+ .. seealso::
+
+ ISO
+ International Standards Organization
+
+ .. seealso:: `ISO organization website `_
+ .. seealso::
+
+ JPEG
+ a most commonly used standard method of lossy compression for photographic images.
+
+ .. seealso::
+
+ JPG
+ look at :term:`JPEG`
+
+ Key
+ look at :term:`Index`
+
+ LATEX
+ a document preparation system for the TeX typesetting program.
+
+ .. seealso::
+
+ Mac
+ Apple Macintosh is a line of personal computers designed, developed, manufactured, and marketed by Apple Inc.
+
+ .. seealso::
+
+ macOS
+ the operating system which is included with all currently shipping Apple Macintosh computers in the consumer and professional markets.
+
+ .. seealso::
+
+ mbstring
+ The PHP `mbstring` functions provide support for languages represented by multi-byte character sets, most notably UTF-8.
+
+ If you have troubles installing this extension, please follow :ref:`faqmysql`, it provides useful hints.
+
+ .. seealso::
+
+ Media type
+ A media type (formerly known as MIME type) is a two-part identifier
+ for file formats and format contents transmitted on the Internet.
+
+ .. seealso::
+
+ MIME
+ Multipurpose Internet Mail Extensions is
+ an Internet Standard for the format of e-mail.
+
+ .. seealso::
+
+ module
+ modular extension for the Apache HTTP Server httpd.
+
+ .. seealso::
+
+ mod_proxy_fcgi
+ an Apache module implementing a Fast CGI interface; PHP can be run as a CGI module, FastCGI, or
+ directly as an Apache module.
+
+ .. seealso::
+
+ MySQL
+ a multithreaded, multi-user, SQL (Structured Query Language) Database Management System (DBMS).
+
+ .. seealso::
+
+ MySQLi
+ the improved MySQL client PHP extension.
+
+ .. seealso:: `PHP manual for MySQL Improved Extension `_
+ .. seealso::
+
+ mysql
+ the MySQL client PHP extension.
+
+ .. seealso::
+
+ OpenDocument
+ an open standard for office documents.
+
+ .. seealso::
+
+ OS X
+ look at :term:`macOS`.
+
+ .. seealso::
+
+ PDF
+ Portable Document Format is a file format developed by Adobe Systems for
+ representing two-dimensional documents in a device-independent and
+ resolution-independent format.
+
+ .. seealso::
+
+ PEAR
+ the PHP Extension and Application Repository.
+
+ .. seealso:: `PEAR website `_
+ .. seealso:: `Wikipedia page for PEAR `_
+
+ PCRE
+ Perl-Compatible Regular Expressions is the Perl-compatible regular
+ expression functions for PHP
+
+ .. seealso::
+ .. seealso:: `PHP manual for Perl-Compatible Regular Expressions `_
+ .. seealso::
+
+ PHP
+ short for "PHP: Hypertext Preprocessor", is an open-source, reflective
+ programming language used mainly for developing server-side applications
+ and dynamic web content, and more recently, a broader range of software
+ applications.
+
+ .. seealso::
+
+ port
+ a connection through which data is sent and received.
+
+ .. seealso::
+
+ primary key
+ A primary key is an index over one or more fields in a table with
+ unique values for every single row in this table. Every table should have
+ a primary key for easier accessing/identifying data in this table. There
+ can only be one primary key per table and it is named always **PRIMARY**.
+ In fact, a primary key is just an :term:`unique key` with the name
+ **PRIMARY**. If no primary key is defined MySQL will use first *unique
+ key* as primary key if there is one.
+
+ You can create the primary key when creating the table (in phpMyAdmin
+ just check the primary key radio buttons for each field you wish to be
+ part of the primary key).
+
+ You can also add a primary key to an existing table with `ALTER` `TABLE`
+ or `CREATE` `INDEX` (in phpMyAdmin you can just click on 'add index' on
+ the table structure page below the listed fields).
+
+ RFC
+ Request for Comments (RFC) documents are a series of memoranda
+ encompassing new research, innovations, and methodologies applicable to
+ Internet technologies.
+
+ .. seealso::
+
+ RFC 1952
+ GZIP file format specification version 4.3
+
+ .. seealso:: :rfc:`1952`
+
+ Row (record, tuple)
+ represents a single, implicitly structured data item in a table.
+
+ .. seealso::
+
+ Server
+ a computer system that provides services to other computing systems over a network.
+
+ .. seealso::
+
+ Storage Engines
+ MySQL can use several different formats for storing data on disk, these
+ are called storage engines or table types. phpMyAdmin allows a user to
+ change their storage engine for a particular table through the operations
+ tab.
+
+ Common table types are InnoDB and MyISAM, though many others exist and
+ may be desirable in some situations.
+
+ .. seealso:: `MySQL doc chapter about Alternative Storage Engines `_
+ .. seealso::
+
+ socket
+ a form of inter-process communication.
+
+ .. seealso::
+
+ SSL
+ Secure Sockets Layer, (now superseded by TLS) is a cryptographic protocol
+ which provides secure communication on the Internet.
+
+ .. seealso::
+
+ Stored procedure
+ a subroutine available to applications accessing a relational database system
+
+ .. seealso::
+
+ SQL
+ Structured Query Language
+
+ .. seealso::
+
+ table
+ a set of data elements (cells) that is organized, defined and stored as
+ horizontal rows and vertical columns where each item can be uniquely
+ identified by a label or key or by its position in relation to other
+ items.
+
+ .. seealso::
+
+ tar
+ a type of archive file format, from "Tape Archive".
+
+ .. seealso::
+
+ TCP
+ Transmission Control Protocol is one of the core protocols of the
+ Internet protocol suite.
+
+ .. seealso::
+
+ TCPDF
+ PHP library to generate PDF files.
+
+ .. seealso::
+ .. seealso::
+
+ trigger
+ a procedural code that is automatically executed in response to certain events on a particular table or view in a database
+
+ .. seealso::
+
+ unique key
+ A unique key is an index over one or more fields in a table which has a
+ unique value for each row. The first unique key will be treated as
+ :term:`primary key` if there is no *primary key* defined.
+
+ URL
+ Uniform Resource Locator is a sequence of characters, conforming to a
+ standardized format, that is used for referring to resources, such as
+ documents and images on the Internet, by their location.
+
+ .. seealso::
+
+ Web server
+ A computer (program) that is responsible for accepting HTTP requests from clients and serving them web pages.
+
+ .. seealso::
+
+ XML
+ Extensible Markup Language is a W3C-recommended general-purpose markup
+ language for creating special-purpose markup languages, capable of
+ describing many different kinds of data.
+
+ .. seealso::
+
+ ZIP
+ a popular data compression and archival format.
+
+ .. seealso::
+
+ Zlib
+ an open-source, cross-platform data compression library by `Jean-loup Gailly `_ and `Mark Adler `_.
+
+ .. seealso::
+
+ Content Security Policy
+ The HTTP `Content-Security-Policy` response header allows web site administrators
+ to control resources the user agent is allowed to load for a given page.
+
+ .. seealso::
+ .. seealso::
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_sources/privileges.rst.txt b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/privileges.rst.txt
new file mode 100644
index 0000000..a2647d1
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/privileges.rst.txt
@@ -0,0 +1,74 @@
+User management
+===============
+
+User management is the process of controlling which users are allowed to
+connect to the MySQL server and what permissions they have on each database.
+phpMyAdmin does not handle user management, rather it passes the username and
+password on to MySQL, which then determines whether a user is permitted to
+perform a particular action. Within phpMyAdmin, administrators have full
+control over creating users, viewing and editing privileges for existing users,
+and removing users.
+
+Within phpMyAdmin, user management is controlled via the :guilabel:`User accounts` tab
+from the main page. Users can be created, edited, and removed.
+
+Creating a new user
+-------------------
+
+To create a new user, click the :guilabel:`Add user account` link near the bottom
+of the :guilabel:`User accounts` page (you must be a "superuser", e.g., user "root").
+Use the textboxes and drop-downs to configure the user to your particular
+needs. You can then select whether to create a database for that user and grant
+specific global privileges. Once you've created the user (by clicking Go), you
+can define that user's permissions on a specific database (don't grant global
+privileges in that case). In general, users do not need any global privileges
+(other than USAGE), only permissions for their specific database.
+
+Editing an existing user
+------------------------
+
+To edit an existing user, simply click the pencil icon to the right of that
+user in the :guilabel:`User accounts` page. You can then edit their global- and
+database-specific privileges, change their password, or even copy those
+privileges to a new user.
+
+Deleting a user
+---------------
+
+From the :guilabel:`User accounts` page, check the checkbox for the user you wish to
+remove, select whether or not to also remove any databases of the same name (if
+they exist), and click Go.
+
+Assigning privileges to user for a specific database
+----------------------------------------------------
+
+Users are assigned to databases by editing the user record (from the
+:guilabel:`User accounts` link on the home page).
+If you are creating a user specifically for a given table
+you will have to create the user first (with no global privileges) and then go
+back and edit that user to add the table and privileges for the individual
+table.
+
+.. _configurablemenus:
+
+Configurable menus and user groups
+----------------------------------
+
+By enabling :config:option:`$cfg['Servers'][$i]['users']` and
+:config:option:`$cfg['Servers'][$i]['usergroups']` you can customize what users
+will see in the phpMyAdmin navigation.
+
+.. warning::
+
+ This feature only limits what a user sees, they are still able to use all the
+ functions. So this can not be considered as a security limitation. Should
+ you want to limit what users can do, use MySQL privileges to achieve that.
+
+With this feature enabled, the :guilabel:`User accounts` management interface gains
+a second tab for managing :guilabel:`User groups`, where you can define what each
+group will view (see image below) and you can then assign each user to one of
+these groups. Users will be presented with a simplified user interface, which might be
+useful for inexperienced users who could be overwhelmed by all the features
+phpMyAdmin provides.
+
+.. image:: images/usergroups.png
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_sources/setup.rst.txt b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/setup.rst.txt
new file mode 100644
index 0000000..a2f918c
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/setup.rst.txt
@@ -0,0 +1,1166 @@
+.. _setup:
+
+Installation
+============
+
+phpMyAdmin does not apply any special security methods to the MySQL
+database server. It is still the system administrator's job to grant
+permissions on the MySQL databases properly. phpMyAdmin's :guilabel:`Users`
+page can be used for this.
+
+Linux distributions
++++++++++++++++++++
+
+phpMyAdmin is included in most Linux distributions. It is recommended to use
+distribution packages when possible - they usually provide integration to your
+distribution and you will automatically get security updates from your distribution.
+
+.. _debian-package:
+
+Debian and Ubuntu
+-----------------
+
+Most Debian and Ubuntu versions include a phpMyAdmin package, but be aware that
+the configuration file is maintained in ``/etc/phpmyadmin`` and may differ in
+some ways from the official phpMyAdmin documentation. Specifically, it does:
+
+* Configuration of a web server (works for Apache and lighttpd).
+* Creating of :ref:`linked-tables` using dbconfig-common.
+* Securing setup script, see :ref:`debian-setup`.
+
+More specific details about installing Debian or Ubuntu packages are available
+`in our wiki `_.
+
+.. seealso::
+
+ More information can be found in `README.Debian `_
+ (it is installed as :file:`/usr/share/doc/phpmyadmin/README.Debian` with the package).
+
+OpenSUSE
+--------
+
+OpenSUSE already comes with phpMyAdmin package, just install packages from
+the `openSUSE Build Service `_.
+
+Gentoo
+------
+
+Gentoo ships the phpMyAdmin package, both in a near-stock configuration as well
+as in a ``webapp-config`` configuration. Use ``emerge dev-db/phpmyadmin`` to
+install.
+
+Mandriva
+--------
+
+Mandriva ships the phpMyAdmin package in their ``contrib`` branch and can be
+installed via the usual Control Center.
+
+Fedora
+------
+
+Fedora ships the phpMyAdmin package, but be aware that the configuration file
+is maintained in ``/etc/phpMyAdmin/`` and may differ in some ways from the
+official phpMyAdmin documentation.
+
+Red Hat Enterprise Linux
+------------------------
+
+Red Hat Enterprise Linux itself and thus derivatives like CentOS don't
+ship phpMyAdmin, but the Fedora-driven repository
+`Extra Packages for Enterprise Linux (EPEL) `_
+is doing so, if it's
+`enabled `_.
+But be aware that the configuration file is maintained in
+``/etc/phpMyAdmin/`` and may differ in some ways from the
+official phpMyAdmin documentation.
+
+Installing on Windows
++++++++++++++++++++++
+
+The easiest way to get phpMyAdmin on Windows is using third party products
+which include phpMyAdmin together with a database and web server such as
+`XAMPP `_.
+
+You can find more of such options at `Wikipedia `_.
+
+Installing from Git
++++++++++++++++++++
+
+In order to install from Git, you'll need a few supporting applications:
+
+* `Git `_ to download the source, or you can download the most recent source directly from `Github `_
+* `Composer `__
+* `Node.js `_ (version 10 or higher)
+* `Yarn `_
+
+You can clone current phpMyAdmin source from
+``https://github.com/phpmyadmin/phpmyadmin.git``:
+
+.. code-block:: sh
+
+ git clone https://github.com/phpmyadmin/phpmyadmin.git
+
+Additionally you need to install dependencies using `Composer `__:
+
+.. code-block:: sh
+
+ composer update
+
+If you do not intend to develop, you can skip the installation of developer tools
+by invoking:
+
+.. code-block:: sh
+
+ composer update --no-dev
+
+Finally, you'll need to use `Yarn`_ to install some JavaScript dependencies:
+
+.. code-block:: sh
+
+ yarn install --production
+
+.. _composer:
+
+Installing using Composer
++++++++++++++++++++++++++
+
+You can install phpMyAdmin using the `Composer tool`_, since 4.7.0 the releases
+are automatically mirrored to the default `Packagist`_ repository.
+
+.. note::
+
+ The content of the Composer repository is automatically generated
+ separately from the releases, so the content doesn't have to be
+ 100% same as when you download the tarball. There should be no
+ functional differences though.
+
+To install phpMyAdmin simply run:
+
+.. code-block:: sh
+
+ composer create-project phpmyadmin/phpmyadmin
+
+Alternatively you can use our own composer repository, which contains
+the release tarballs and is available at
+:
+
+.. code-block:: sh
+
+ composer create-project phpmyadmin/phpmyadmin --repository-url=https://www.phpmyadmin.net/packages.json --no-dev
+
+.. _docker:
+
+Installing using Docker
++++++++++++++++++++++++
+
+phpMyAdmin comes with a `Docker official image`_, which you can easily deploy. You can
+download it using:
+
+.. code-block:: sh
+
+ docker pull phpmyadmin
+
+The phpMyAdmin server will listen on port 80. It supports several ways of
+configuring the link to the database server, either by Docker's link feature
+by linking your database container to ``db`` for phpMyAdmin (by specifying
+``--link your_db_host:db``) or by environment variables (in this case it's up
+to you to set up networking in Docker to allow the phpMyAdmin container to access
+the database container over the network).
+
+.. _docker-vars:
+
+Docker environment variables
+----------------------------
+
+You can configure several phpMyAdmin features using environment variables:
+
+.. envvar:: PMA_ARBITRARY
+
+ Allows you to enter a database server hostname on login form.
+
+ .. seealso:: :config:option:`$cfg['AllowArbitraryServer']`
+
+.. envvar:: PMA_HOST
+
+ Hostname or IP address of the database server to use.
+
+ .. seealso:: :config:option:`$cfg['Servers'][$i]['host']`
+
+.. envvar:: PMA_HOSTS
+
+ Comma-separated hostnames or IP addresses of the database servers to use.
+
+ .. note:: Used only if :envvar:`PMA_HOST` is empty.
+
+.. envvar:: PMA_VERBOSE
+
+ Verbose name of the database server.
+
+ .. seealso:: :config:option:`$cfg['Servers'][$i]['verbose']`
+
+.. envvar:: PMA_VERBOSES
+
+ Comma-separated verbose name of the database servers.
+
+ .. note:: Used only if :envvar:`PMA_VERBOSE` is empty.
+
+.. envvar:: PMA_USER
+
+ User name to use for :ref:`auth_config`.
+
+.. envvar:: PMA_PASSWORD
+
+ Password to use for :ref:`auth_config`.
+
+.. envvar:: PMA_PORT
+
+ Port of the database server to use.
+
+.. envvar:: PMA_PORTS
+
+ Comma-separated ports of the database server to use.
+
+ .. note:: Used only if :envvar:`PMA_PORT` is empty.
+
+.. envvar:: PMA_ABSOLUTE_URI
+
+ The fully-qualified path (``https://pma.example.net/``) where the reverse
+ proxy makes phpMyAdmin available.
+
+ .. seealso:: :config:option:`$cfg['PmaAbsoluteUri']`
+
+.. envvar:: HIDE_PHP_VERSION
+
+ If defined, this option will hide the PHP version (`expose_php = Off`).
+ Set to any value (such as `HIDE_PHP_VERSION=true`).
+
+.. envvar:: UPLOAD_LIMIT
+
+ If set, this option will override the default value for apache and php-fpm (this will change ``upload_max_filesize`` and ``post_max_size`` values).
+
+ .. note:: Format as `[0-9+](K,M,G)` default value is `2048K`
+
+.. envvar:: PMA_CONFIG_BASE64
+
+ If set, this option will override the default `config.inc.php` with the base64 decoded contents of the variable.
+
+.. envvar:: PMA_USER_CONFIG_BASE64
+
+ If set, this option will override the default `config.user.inc.php` with the base64 decoded contents of the variable.
+
+
+By default, :ref:`cookie` is used, but if :envvar:`PMA_USER` and
+:envvar:`PMA_PASSWORD` are set, it is switched to :ref:`auth_config`.
+
+.. note::
+
+ The credentials you need to log in are stored in the MySQL server, in case
+ of Docker image, there are various ways to set it (for example
+ :samp:`MYSQL_ROOT_PASSWORD` when starting the MySQL container). Please check
+ documentation for `MariaDB container `_
+ or `MySQL container `_.
+
+.. _docker-custom:
+
+Customizing configuration
+-------------------------
+
+Additionally configuration can be tweaked by :file:`/etc/phpmyadmin/config.user.inc.php`. If
+this file exists, it will be loaded after configuration is generated from above
+environment variables, so you can override any configuration variable. This
+configuration can be added as a volume when invoking docker using
+`-v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php` parameters.
+
+Note that the supplied configuration file is applied after :ref:`docker-vars`,
+but you can override any of the values.
+
+For example to change the default behavior of CSV export you can use the following
+configuration file:
+
+.. code-block:: php
+
+ [
+ 'auth_type' => 'cookie',
+ 'host' => 'mydb1',
+ 'port' => 3306,
+ 'verbose' => 'Verbose name 1',
+ ],
+ 2 => [
+ 'auth_type' => 'cookie',
+ 'host' => 'mydb2',
+ 'port' => 3306,
+ 'verbose' => 'Verbose name 2',
+ ],
+ ];
+
+.. seealso::
+
+ See :ref:`config` for detailed description of configuration options.
+
+Docker Volumes
+--------------
+
+You can use the following volumes to customize image behavior:
+
+:file:`/etc/phpmyadmin/config.user.inc.php`
+
+ Can be used for additional settings, see the previous chapter for more details.
+
+:file:`/sessions/`
+
+ Directory where PHP sessions are stored. You might want to share this
+ for example when using :ref:`auth_signon`.
+
+:file:`/www/themes/`
+
+ Directory where phpMyAdmin looks for themes. By default only those shipped
+ with phpMyAdmin are included, but you can include additional phpMyAdmin
+ themes (see :ref:`themes`) by using Docker volumes.
+
+Docker Examples
+---------------
+
+To connect phpMyAdmin to a given server use:
+
+.. code-block:: sh
+
+ docker run --name myadmin -d -e PMA_HOST=dbhost -p 8080:80 phpmyadmin/phpmyadmin
+
+To connect phpMyAdmin to more servers use:
+
+.. code-block:: sh
+
+ docker run --name myadmin -d -e PMA_HOSTS=dbhost1,dbhost2,dbhost3 -p 8080:80 phpmyadmin/phpmyadmin
+
+To use arbitrary server option:
+
+.. code-block:: sh
+
+ docker run --name myadmin -d --link mysql_db_server:db -p 8080:80 -e PMA_ARBITRARY=1 phpmyadmin/phpmyadmin
+
+You can also link the database container using Docker:
+
+.. code-block:: sh
+
+ docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 phpmyadmin/phpmyadmin
+
+Running with additional configuration:
+
+.. code-block:: sh
+
+ docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin/phpmyadmin
+
+Running with additional themes:
+
+.. code-block:: sh
+
+ docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /custom/phpmyadmin/theme/:/www/themes/theme/ phpmyadmin/phpmyadmin
+
+Using docker-compose
+--------------------
+
+Alternatively, you can also use docker-compose with the docker-compose.yml from
+. This will run phpMyAdmin with an
+arbitrary server - allowing you to specify MySQL/MariaDB server on the login page.
+
+.. code-block:: sh
+
+ docker-compose up -d
+
+Customizing configuration file using docker-compose
+---------------------------------------------------
+
+You can use an external file to customize phpMyAdmin configuration and pass it
+using the volumes directive:
+
+.. code-block:: yaml
+
+ phpmyadmin:
+ image: phpmyadmin/phpmyadmin
+ container_name: phpmyadmin
+ environment:
+ - PMA_ARBITRARY=1
+ restart: always
+ ports:
+ - 8080:80
+ volumes:
+ - /sessions
+ - ~/docker/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
+ - /custom/phpmyadmin/theme/:/www/themes/theme/
+
+.. seealso:: :ref:`docker-custom`
+
+Running behind haproxy in a subdirectory
+----------------------------------------
+
+When you want to expose phpMyAdmin running in a Docker container in a
+subdirectory, you need to rewrite the request path in the server proxying the
+requests.
+
+For example, using haproxy it can be done as:
+
+.. code-block:: text
+
+ frontend http
+ bind *:80
+ option forwardfor
+ option http-server-close
+
+ ### NETWORK restriction
+ acl LOCALNET src 10.0.0.0/8 192.168.0.0/16 172.16.0.0/12
+
+ # /phpmyadmin
+ acl phpmyadmin path_dir /phpmyadmin
+ use_backend phpmyadmin if phpmyadmin LOCALNET
+
+ backend phpmyadmin
+ mode http
+
+ reqirep ^(GET|POST|HEAD)\ /phpmyadmin/(.*) \1\ /\2
+
+ # phpMyAdmin container IP
+ server localhost 172.30.21.21:80
+
+When using traefik, something like following should work:
+
+.. code-block:: text
+
+ defaultEntryPoints = ["http"]
+ [entryPoints]
+ [entryPoints.http]
+ address = ":80"
+ [entryPoints.http.redirect]
+ regex = "(http:\\/\\/[^\\/]+\\/([^\\?\\.]+)[^\\/])$"
+ replacement = "$1/"
+
+ [backends]
+ [backends.myadmin]
+ [backends.myadmin.servers.myadmin]
+ url="http://internal.address.to.pma"
+
+ [frontends]
+ [frontends.myadmin]
+ backend = "myadmin"
+ passHostHeader = true
+ [frontends.myadmin.routes.default]
+ rule="PathPrefixStrip:/phpmyadmin/;AddPrefix:/"
+
+You then should specify :envvar:`PMA_ABSOLUTE_URI` in the docker-compose
+configuration:
+
+.. code-block:: yaml
+
+ version: '2'
+
+ services:
+ phpmyadmin:
+ restart: always
+ image: phpmyadmin/phpmyadmin
+ container_name: phpmyadmin
+ hostname: phpmyadmin
+ domainname: example.com
+ ports:
+ - 8000:80
+ environment:
+ - PMA_HOSTS=172.26.36.7,172.26.36.8,172.26.36.9,172.26.36.10
+ - PMA_VERBOSES=production-db1,production-db2,dev-db1,dev-db2
+ - PMA_USER=root
+ - PMA_PASSWORD=
+ - PMA_ABSOLUTE_URI=http://example.com/phpmyadmin/
+
+IBM Cloud
++++++++++
+
+One of our users has created a helpful guide for installing phpMyAdmin on the
+`IBM Cloud platform `_.
+
+.. _quick_install:
+
+Quick Install
++++++++++++++
+
+#. Choose an appropriate distribution kit from the phpmyadmin.net
+ Downloads page. Some kits contain only the English messages, others
+ contain all languages. We'll assume you chose a kit whose name
+ looks like ``phpMyAdmin-x.x.x -all-languages.tar.gz``.
+#. Ensure you have downloaded a genuine archive, see :ref:`verify`.
+#. Untar or unzip the distribution (be sure to unzip the subdirectories):
+ ``tar -xzvf phpMyAdmin_x.x.x-all-languages.tar.gz`` in your
+ webserver's document root. If you don't have direct access to your
+ document root, put the files in a directory on your local machine,
+ and, after step 4, transfer the directory on your web server using,
+ for example, FTP.
+#. Ensure that all the scripts have the appropriate owner (if PHP is
+ running in safe mode, having some scripts with an owner different from
+ the owner of other scripts will be a problem). See :ref:`faq4_2` and
+ :ref:`faq1_26` for suggestions.
+#. Now you must configure your installation. There are two methods that
+ can be used. Traditionally, users have hand-edited a copy of
+ :file:`config.inc.php`, but now a wizard-style setup script is provided
+ for those who prefer a graphical installation. Creating a
+ :file:`config.inc.php` is still a quick way to get started and needed for
+ some advanced features.
+
+Manually creating the file
+--------------------------
+
+To manually create the file, simply use your text editor to create the
+file :file:`config.inc.php` (you can copy :file:`config.sample.inc.php` to get
+a minimal configuration file) in the main (top-level) phpMyAdmin
+directory (the one that contains :file:`index.php`). phpMyAdmin first
+loads the default configuration values and then overrides those values
+with anything found in :file:`config.inc.php`. If the default value is
+okay for a particular setting, there is no need to include it in
+:file:`config.inc.php`. You'll probably need only a few directives to get going; a
+simple configuration may look like this:
+
+.. code-block:: xml+php
+
+ or use setup script on our demo
+server: .
+
+.. _verify:
+
+Verifying phpMyAdmin releases
++++++++++++++++++++++++++++++
+
+Since July 2015 all phpMyAdmin releases are cryptographically signed by the
+releasing developer, who through January 2016 was Marc Delisle. His key id is
+0xFEFC65D181AF644A, his PGP fingerprint is:
+
+.. code-block:: console
+
+ 436F F188 4B1A 0C3F DCBF 0D79 FEFC 65D1 81AF 644A
+
+and you can get more identification information from .
+
+Beginning in January 2016, the release manager is Isaac Bennetch. His key id is
+0xCE752F178259BD92, and his PGP fingerprint is:
+
+.. code-block:: console
+
+ 3D06 A59E CE73 0EB7 1B51 1C17 CE75 2F17 8259 BD92
+
+and you can get more identification information from .
+
+Some additional downloads (for example themes) might be signed by Michal Čihař. His key id is
+0x9C27B31342B7511D, and his PGP fingerprint is:
+
+.. code-block:: console
+
+ 63CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D
+
+and you can get more identification information from .
+
+You should verify that the signature matches the archive you have downloaded.
+This way you can be sure that you are using the same code that was released.
+You should also verify the date of the signature to make sure that you
+downloaded the latest version.
+
+Each archive is accompanied by ``.asc`` files which contain the PGP signature
+for it. Once you have both of them in the same folder, you can verify the signature:
+
+.. code-block:: console
+
+ $ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
+ gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
+ gpg: Can't check signature: public key not found
+
+As you can see gpg complains that it does not know the public key. At this
+point, you should do one of the following steps:
+
+* Download the keyring from `our download server `_, then import it with:
+
+.. code-block:: console
+
+ $ gpg --import phpmyadmin.keyring
+
+* Download and import the key from one of the key servers:
+
+.. code-block:: console
+
+ $ gpg --keyserver hkp://pgp.mit.edu --recv-keys 3D06A59ECE730EB71B511C17CE752F178259BD92
+ gpg: requesting key 8259BD92 from hkp server pgp.mit.edu
+ gpg: key 8259BD92: public key "Isaac Bennetch " imported
+ gpg: no ultimately trusted keys found
+ gpg: Total number processed: 1
+ gpg: imported: 1 (RSA: 1)
+
+This will improve the situation a bit - at this point, you can verify that the
+signature from the given key is correct but you still can not trust the name used
+in the key:
+
+.. code-block:: console
+
+ $ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
+ gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
+ gpg: Good signature from "Isaac Bennetch "
+ gpg: aka "Isaac Bennetch "
+ gpg: WARNING: This key is not certified with a trusted signature!
+ gpg: There is no indication that the signature belongs to the owner.
+ Primary key fingerprint: 3D06 A59E CE73 0EB7 1B51 1C17 CE75 2F17 8259 BD92
+
+The problem here is that anybody could issue the key with this name. You need to
+ensure that the key is actually owned by the mentioned person. The GNU Privacy
+Handbook covers this topic in the chapter `Validating other keys on your public
+keyring`_. The most reliable method is to meet the developer in person and
+exchange key fingerprints, however, you can also rely on the web of trust. This way
+you can trust the key transitively though signatures of others, who have met
+the developer in person.
+
+Once the key is trusted, the warning will not occur:
+
+.. code-block:: console
+
+ $ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
+ gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
+ gpg: Good signature from "Isaac Bennetch " [full]
+
+Should the signature be invalid (the archive has been changed), you would get a
+clear error regardless of the fact that the key is trusted or not:
+
+.. code-block:: console
+
+ $ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
+ gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
+ gpg: BAD signature from "Isaac Bennetch " [unknown]
+
+.. _Validating other keys on your public keyring: https://www.gnupg.org/gph/en/manual.html#AEN335
+
+.. index::
+ single: Configuration storage
+ single: phpMyAdmin configuration storage
+ single: pmadb
+
+.. _linked-tables:
+
+phpMyAdmin configuration storage
+++++++++++++++++++++++++++++++++
+
+.. versionchanged:: 3.4.0
+
+ Prior to phpMyAdmin 3.4.0 this was called Linked Tables Infrastructure, but
+ the name was changed due to the extended scope of the storage.
+
+For a whole set of additional features (:ref:`bookmarks`, comments, :term:`SQL`-history,
+tracking mechanism, :term:`PDF`-generation, :ref:`transformations`, :ref:`relations`
+etc.) you need to create a set of special tables. Those tables can be located
+in your own database, or in a central database for a multi-user installation
+(this database would then be accessed by the controluser, so no other user
+should have rights to it).
+
+.. _zeroconf:
+
+Zero configuration
+------------------
+
+In many cases, this database structure can be automatically created and
+configured. This is called “Zero Configuration” mode and can be particularly
+useful in shared hosting situations. “Zeroconf” mode is on by default, to
+disable set :config:option:`$cfg['ZeroConf']` to false.
+
+The following three scenarios are covered by the Zero Configuration mode:
+
+* When entering a database where the configuration storage tables are not
+ present, phpMyAdmin offers to create them from the Operations tab.
+* When entering a database where the tables do already exist, the software
+ automatically detects this and begins using them. This is the most common
+ situation; after the tables are initially created automatically they are
+ continually used without disturbing the user; this is also most useful on
+ shared hosting where the user is not able to edit :file:`config.inc.php` and
+ usually the user only has access to one database.
+* When having access to multiple databases, if the user first enters the
+ database containing the configuration storage tables then switches to
+ another database,
+ phpMyAdmin continues to use the tables from the first database; the user is
+ not prompted to create more tables in the new database.
+
+Manual configuration
+--------------------
+
+Please look at your ``./sql/`` directory, where you should find a
+file called *create\_tables.sql*. (If you are using a Windows server,
+pay special attention to :ref:`faq1_23`).
+
+If you already had this infrastructure and:
+
+* upgraded to MySQL 4.1.2 or newer, please use
+ :file:`sql/upgrade_tables_mysql_4_1_2+.sql`.
+* upgraded to phpMyAdmin 4.3.0 or newer from 2.5.0 or newer (<= 4.2.x),
+ please use :file:`sql/upgrade_column_info_4_3_0+.sql`.
+* upgraded to phpMyAdmin 4.7.0 or newer from 4.3.0 or newer,
+ please use :file:`sql/upgrade_tables_4_7_0+.sql`.
+
+and then create new tables by importing :file:`sql/create_tables.sql`.
+
+You can use your phpMyAdmin to create the tables for you. Please be
+aware that you may need special (administrator) privileges to create
+the database and tables, and that the script may need some tuning,
+depending on the database name.
+
+After having imported the :file:`sql/create_tables.sql` file, you
+should specify the table names in your :file:`config.inc.php` file. The
+directives used for that can be found in the :ref:`config`.
+
+You will also need to have a controluser
+(:config:option:`$cfg['Servers'][$i]['controluser']` and
+:config:option:`$cfg['Servers'][$i]['controlpass']` settings)
+with the proper rights to those tables. For example you can create it
+using following statement:
+
+And for any MariaDB version:
+
+.. code-block:: mysql
+
+ CREATE USER 'pma'@'localhost' IDENTIFIED VIA mysql_native_password USING 'pmapass';
+ GRANT SELECT, INSERT, UPDATE, DELETE ON ``.* TO 'pma'@'localhost';
+
+For MySQL 8.0 and newer:
+
+.. code-block:: mysql
+
+ CREATE USER 'pma'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'pmapass';
+ GRANT SELECT, INSERT, UPDATE, DELETE ON .* TO 'pma'@'localhost';
+
+For MySQL older than 8.0:
+
+.. code-block:: mysql
+
+ CREATE USER 'pma'@'localhost' IDENTIFIED WITH mysql_native_password AS 'pmapass';
+ GRANT SELECT, INSERT, UPDATE, DELETE ON .* TO 'pma'@'localhost';
+
+Note that MySQL installations with PHP older than 7.4 and MySQL newer than 8.0 may require
+using the mysql_native_password authentication as a workaround, see
+:ref:`faq1_45` for details.
+
+.. _upgrading:
+
+Upgrading from an older version
++++++++++++++++++++++++++++++++
+
+.. warning::
+
+ **Never** extract the new version over an existing installation of
+ phpMyAdmin, always first remove the old files keeping just the
+ configuration.
+
+ This way, you will not leave any old or outdated files in the directory,
+ which can have severe security implications or can cause various breakages.
+
+Simply copy :file:`config.inc.php` from your previous installation into
+the newly unpacked one. Configuration files from old versions may
+require some tweaking as some options have been changed or removed.
+For compatibility with PHP 5.3 and later, remove a
+``set_magic_quotes_runtime(0);`` statement that you might find near
+the end of your configuration file.
+
+The complete upgrade can be performed in a few simple steps:
+
+1. Download the latest phpMyAdmin version from .
+2. Rename existing phpMyAdmin folder (for example to ``phpmyadmin-old``).
+3. Unpack freshly downloaded phpMyAdmin to the desired location (for example ``phpmyadmin``).
+4. Copy :file:`config.inc.php`` from old location (``phpmyadmin-old``) to the new one (``phpmyadmin``).
+5. Test that everything works properly.
+6. Remove backup of a previous version (``phpmyadmin-old``).
+
+If you have upgraded your MySQL server from a version previous to 4.1.2 to
+version 5.x or newer and if you use the phpMyAdmin configuration storage, you
+should run the :term:`SQL` script found in
+:file:`sql/upgrade_tables_mysql_4_1_2+.sql`.
+
+If you have upgraded your phpMyAdmin to 4.3.0 or newer from 2.5.0 or
+newer (<= 4.2.x) and if you use the phpMyAdmin configuration storage, you
+should run the :term:`SQL` script found in
+:file:`sql/upgrade_column_info_4_3_0+.sql`.
+
+Do not forget to clear the browser cache and to empty the old session by
+logging out and logging in again.
+
+.. index:: Authentication mode
+
+.. _authentication_modes:
+
+Using authentication modes
+++++++++++++++++++++++++++
+
+:term:`HTTP` and cookie authentication modes are recommended in a **multi-user
+environment** where you want to give users access to their own database and
+don't want them to play around with others. Nevertheless, be aware that MS
+Internet Explorer seems to be really buggy about cookies, at least till version
+6. Even in a **single-user environment**, you might prefer to use :term:`HTTP`
+or cookie mode so that your user/password pair are not in clear in the
+configuration file.
+
+:term:`HTTP` and cookie authentication
+modes are more secure: the MySQL login information does not need to be
+set in the phpMyAdmin configuration file (except possibly for the
+:config:option:`$cfg['Servers'][$i]['controluser']`).
+However, keep in mind that the password travels in plain text unless
+you are using the HTTPS protocol. In cookie mode, the password is
+stored, encrypted with the AES algorithm, in a temporary cookie.
+
+Then each of the *true* users should be granted a set of privileges
+on a set of particular databases. Normally you shouldn't give global
+privileges to an ordinary user unless you understand the impact of those
+privileges (for example, you are creating a superuser).
+For example, to grant the user *real_user* with all privileges on
+the database *user_base*:
+
+.. code-block:: mysql
+
+ GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';
+
+What the user may now do is controlled entirely by the MySQL user management
+system. With HTTP or cookie authentication mode, you don't need to fill the
+user/password fields inside the :config:option:`$cfg['Servers']`.
+
+.. seealso::
+
+ :ref:`faq1_32`,
+ :ref:`faq1_35`,
+ :ref:`faq4_1`,
+ :ref:`faq4_2`,
+ :ref:`faq4_3`
+
+.. index:: pair: HTTP; Authentication mode
+
+.. _auth_http:
+
+HTTP authentication mode
+------------------------
+
+* Uses :term:`HTTP` Basic authentication
+ method and allows you to log in as any valid MySQL user.
+* Is supported with most PHP configurations. For :term:`IIS` (:term:`ISAPI`)
+ support using :term:`CGI` PHP see :ref:`faq1_32`, for using with Apache
+ :term:`CGI` see :ref:`faq1_35`.
+* When PHP is running under Apache's :term:`mod_proxy_fcgi` (e.g. with PHP-FPM),
+ ``Authorization`` headers are not passed to the underlying FCGI application,
+ such that your credentials will not reach the application. In this case, you can
+ add the following configuration directive:
+
+ .. code-block:: apache
+
+ SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
+
+* See also :ref:`faq4_4` about not using the :term:`.htaccess` mechanism along with
+ ':term:`HTTP`' authentication mode.
+
+.. note::
+
+ There is no way to do proper logout in HTTP authentication, most browsers
+ will remember credentials until there is no different successful
+ authentication. Because of this, this method has a limitation that you can not
+ login with the same user after logout.
+
+.. index:: pair: Cookie; Authentication mode
+
+.. _cookie:
+
+Cookie authentication mode
+--------------------------
+
+* Username and password are stored in cookies during the session and password
+ is deleted when it ends.
+* With this mode, the user can truly log out of phpMyAdmin and log
+ back in with the same username (this is not possible with :ref:`auth_http`).
+* If you want to allow users to enter any hostname to connect (rather than only
+ servers that are configured in :file:`config.inc.php`),
+ see the :config:option:`$cfg['AllowArbitraryServer']` directive.
+* As mentioned in the :ref:`require` section, having the ``openssl`` extension
+ will speed up access considerably, but is not required.
+
+.. index:: pair: Signon; Authentication mode
+
+.. _auth_signon:
+
+Signon authentication mode
+--------------------------
+
+* This mode is a convenient way of using credentials from another
+ application to authenticate to phpMyAdmin to implement a single signon
+ solution.
+* The other application has to store login information into session
+ data (see :config:option:`$cfg['Servers'][$i]['SignonSession']` and
+ :config:option:`$cfg['Servers'][$i]['SignonCookieParams']`) or you
+ need to implement script to return the credentials (see
+ :config:option:`$cfg['Servers'][$i]['SignonScript']`).
+* When no credentials are available, the user is being redirected to
+ :config:option:`$cfg['Servers'][$i]['SignonURL']`, where you should handle
+ the login process.
+
+The very basic example of saving credentials in a session is available as
+:file:`examples/signon.php`:
+
+.. literalinclude:: ../examples/signon.php
+ :language: php
+
+Alternatively, you can also use this way to integrate with OpenID as shown
+in :file:`examples/openid.php`:
+
+.. literalinclude:: ../examples/openid.php
+ :language: php
+
+If you intend to pass the credentials using some other means than, you have to
+implement wrapper in PHP to get that data and set it to
+:config:option:`$cfg['Servers'][$i]['SignonScript']`. There is a very minimal example
+in :file:`examples/signon-script.php`:
+
+.. literalinclude:: ../examples/signon-script.php
+ :language: php
+
+.. seealso::
+ :config:option:`$cfg['Servers'][$i]['auth_type']`,
+ :config:option:`$cfg['Servers'][$i]['SignonSession']`,
+ :config:option:`$cfg['Servers'][$i]['SignonCookieParams']`,
+ :config:option:`$cfg['Servers'][$i]['SignonScript']`,
+ :config:option:`$cfg['Servers'][$i]['SignonURL']`,
+ :ref:`example-signon`
+
+.. index:: pair: Config; Authentication mode
+
+.. _auth_config:
+
+Config authentication mode
+--------------------------
+
+* This mode is sometimes the less secure one because it requires you to fill the
+ :config:option:`$cfg['Servers'][$i]['user']` and
+ :config:option:`$cfg['Servers'][$i]['password']`
+ fields (and as a result, anyone who can read your :file:`config.inc.php`
+ can discover your username and password).
+* In the :ref:`faqmultiuser` section, there is an entry explaining how
+ to protect your configuration file.
+* For additional security in this mode, you may wish to consider the
+ Host authentication :config:option:`$cfg['Servers'][$i]['AllowDeny']['order']`
+ and :config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` configuration directives.
+* Unlike cookie and http, does not require a user to log in when first
+ loading the phpMyAdmin site. This is by design but could allow any
+ user to access your installation. Use of some restriction method is
+ suggested, perhaps a :term:`.htaccess` file with the HTTP-AUTH directive or disallowing
+ incoming HTTP requests at one’s router or firewall will suffice (both
+ of which are beyond the scope of this manual but easily searchable
+ with Google).
+
+.. _securing:
+
+Securing your phpMyAdmin installation
++++++++++++++++++++++++++++++++++++++
+
+The phpMyAdmin team tries hard to make the application secure, however there
+are always ways to make your installation more secure:
+
+* Follow our `Security announcements `_ and upgrade
+ phpMyAdmin whenever new vulnerability is published.
+* Serve phpMyAdmin on HTTPS only. Preferably, you should use HSTS as well, so that
+ you're protected from protocol downgrade attacks.
+* Ensure your PHP setup follows recommendations for production sites, for example
+ `display_errors `_
+ should be disabled.
+* Remove the ``test`` directory from phpMyAdmin, unless you are developing and need a test suite.
+* Remove the ``setup`` directory from phpMyAdmin, you will probably not
+ use it after the initial setup.
+* Properly choose an authentication method - :ref:`cookie`
+ is probably the best choice for shared hosting.
+* Deny access to auxiliary files in :file:`./libraries/` or
+ :file:`./templates/` subfolders in your webserver configuration.
+ Such configuration prevents from possible path exposure and cross side
+ scripting vulnerabilities that might happen to be found in that code. For the
+ Apache webserver, this is often accomplished with a :term:`.htaccess` file in
+ those directories.
+* Deny access to temporary files, see :config:option:`$cfg['TempDir']` (if that
+ is placed inside your web root, see also :ref:`web-dirs`.
+* It is generally a good idea to protect a public phpMyAdmin installation
+ against access by robots as they usually can not do anything good there. You
+ can do this using ``robots.txt`` file in the root of your webserver or limit
+ access by web server configuration, see :ref:`faq1_42`.
+* In case you don't want all MySQL users to be able to access
+ phpMyAdmin, you can use :config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` to limit them
+ or :config:option:`$cfg['Servers'][$i]['AllowRoot']` to deny root user access.
+* Enable :ref:`2fa` for your account.
+* Consider hiding phpMyAdmin behind an authentication proxy, so that
+ users need to authenticate prior to providing MySQL credentials
+ to phpMyAdmin. You can achieve this by configuring your web server to request
+ HTTP authentication. For example in Apache this can be done with:
+
+ .. code-block:: apache
+
+ AuthType Basic
+ AuthName "Restricted Access"
+ AuthUserFile /usr/share/phpmyadmin/passwd
+ Require valid-user
+
+ Once you have changed the configuration, you need to create a list of users which
+ can authenticate. This can be done using the :program:`htpasswd` utility:
+
+ .. code-block:: sh
+
+ htpasswd -c /usr/share/phpmyadmin/passwd username
+
+* If you are afraid of automated attacks, enabling Captcha by
+ :config:option:`$cfg['CaptchaLoginPublicKey']` and
+ :config:option:`$cfg['CaptchaLoginPrivateKey']` might be an option.
+* Failed login attempts are logged to syslog (if available, see
+ :config:option:`$cfg['AuthLog']`). This can allow using a tool such as
+ fail2ban to block brute-force attempts. Note that the log file used by syslog
+ is not the same as the Apache error or access log files.
+* In case you're running phpMyAdmin together with other PHP applications, it is
+ generally advised to use separate session storage for phpMyAdmin to avoid
+ possible session-based attacks against it. You can use
+ :config:option:`$cfg['SessionSavePath']` to achieve this.
+
+.. _ssl:
+
+Using SSL for connection to database server
++++++++++++++++++++++++++++++++++++++++++++
+
+It is recommended to use SSL when connecting to remote database server. There
+are several configuration options involved in the SSL setup:
+
+:config:option:`$cfg['Servers'][$i]['ssl']`
+ Defines whether to use SSL at all. If you enable only this, the connection
+ will be encrypted, but there is not authentication of the connection - you
+ can not verify that you are talking to the right server.
+:config:option:`$cfg['Servers'][$i]['ssl_key']` and :config:option:`$cfg['Servers'][$i]['ssl_cert']`
+ This is used for authentication of client to the server.
+:config:option:`$cfg['Servers'][$i]['ssl_ca']` and :config:option:`$cfg['Servers'][$i]['ssl_ca_path']`
+ The certificate authorities you trust for server certificates.
+ This is used to ensure that you are talking to a trusted server.
+:config:option:`$cfg['Servers'][$i]['ssl_verify']`
+ This configuration disables server certificate verification. Use with
+ caution.
+
+When the database server is using a local connection or private network and SSL can not be configured
+you can use :config:option:`$cfg['MysqlSslWarningSafeHosts']` to explicitly list the hostnames that are considered secure.
+
+.. seealso::
+
+ :ref:`example-google-ssl`,
+ :ref:`example-aws-ssl`,
+ :config:option:`$cfg['Servers'][$i]['ssl']`,
+ :config:option:`$cfg['Servers'][$i]['ssl_key']`,
+ :config:option:`$cfg['Servers'][$i]['ssl_cert']`,
+ :config:option:`$cfg['Servers'][$i]['ssl_ca']`,
+ :config:option:`$cfg['Servers'][$i]['ssl_ca_path']`,
+ :config:option:`$cfg['Servers'][$i]['ssl_ciphers']`,
+ :config:option:`$cfg['Servers'][$i]['ssl_verify']`
+
+Known issues
+++++++++++++
+
+Users with column-specific privileges are unable to "Browse"
+------------------------------------------------------------
+
+If a user has only column-specific privileges on some (but not all) columns in a table, "Browse"
+will fail with an error message.
+
+As a workaround, a bookmarked query with the same name as the table can be created, this will
+run when using the "Browse" link instead. `Issue 11922 `_.
+
+Trouble logging back in after logging out using 'http' authentication
+----------------------------------------------------------------------
+
+When using the 'http' ``auth_type``, it can be impossible to log back in (when the logout comes
+manually or after a period of inactivity). `Issue 11898 `_.
+
+.. _Composer tool: https://getcomposer.org/
+.. _Packagist: https://packagist.org/
+.. _Docker official image: https://hub.docker.com/_/phpmyadmin
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_sources/transformations.rst.txt b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/transformations.rst.txt
new file mode 100644
index 0000000..152f5b4
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/transformations.rst.txt
@@ -0,0 +1,158 @@
+.. _transformations:
+
+Transformations
+===============
+
+.. note::
+
+ You need to have configured the :ref:`linked-tables` to use the transformations
+ feature.
+
+.. _transformationsintro:
+
+Introduction
+++++++++++++
+
+To enable transformations, you have to set up the ``column_info``
+table and the proper directives. Please see the :ref:`config` on how to do so.
+
+phpMyAdmin has two different types of transformations: browser display
+transformations, which affect only how the data is shown when browsing
+through phpMyAdmin; and input transformations, which affect a value
+prior to being inserted through phpMyAdmin.
+You can apply different transformations to the contents of each
+column. Each transformation has options to define how it will affect the
+stored data.
+
+Say you have a column ``filename`` which contains a filename. Normally
+you would see in phpMyAdmin only this filename. Using display transformations
+you can transform that filename into a HTML link, so you can click
+inside of the phpMyAdmin structure on the column's link and will see
+the file displayed in a new browser window. Using transformation
+options you can also specify strings to append/prepend to a string or
+the format you want the output stored in.
+
+For a general overview of all available transformations and their
+options, you can either go to the ``Change`` link for an existing column
+or from the dialog to create a new column, in either case there is a link
+on that column structure page for "Browser display transformation" and
+"Input transformation" which will show more information about each
+transformation that is available on your system.
+
+For a tutorial on how to effectively use transformations, see our
+`Link section `_ on the
+official phpMyAdmin homepage.
+
+.. _transformationshowto:
+
+Usage
++++++
+
+Go to the table structure page (reached by clicking on
+the 'Structure' link for a table). There click on "Change" (or the change
+icon) and there you will see the five transformation--related fields at the end of the line.
+They are called ':term:`Media type`', 'Browser transformation' and
+'Transformation options'.
+
+* The field ':term:`Media type`' is a drop-down field. Select the :term:`Media type` that
+ corresponds to the column's contents. Please note that many transformations
+ are inactive until a :term:`Media type` is selected.
+* The field 'Browser display transformation' is a drop-down field. You can
+ choose from a hopefully growing amount of pre-defined transformations.
+ See below for information on how to build your own transformation.
+ There are global transformations and mimetype-bound transformations.
+ Global transformations can be used for any mimetype. They will take
+ the mimetype, if necessary, into regard. Mimetype-bound
+ transformations usually only operate on a certain mimetype. There are
+ transformations which operate on the main mimetype (like 'image'),
+ which will most likely take the subtype into regard, and those who
+ only operate on a specific subtype (like 'image/jpeg'). You can use
+ transformations on mimetypes for which the function was not defined
+ for. There is no security check for you selected the right
+ transformation, so take care of what the output will be like.
+* The field 'Browser display transformation options' is a free-type textfield. You have
+ to enter transform-function specific options here. Usually the
+ transforms can operate with default options, but it is generally a
+ good idea to look up the overview to see which options are necessary.
+ Much like the ENUM/SET-Fields, you have to split up several options
+ using the format 'a','b','c',...(NOTE THE MISSING BLANKS). This is
+ because internally the options will be parsed as an array, leaving the
+ first value the first element in the array, and so forth. If you want
+ to specify a MIME character set you can define it in the
+ transformation\_options. You have to put that outside of the pre-
+ defined options of the specific mime-transform, as the last value of
+ the set. Use the format "'; charset=XXX'". If you use a transform, for
+ which you can specify 2 options and you want to append a character
+ set, enter "'first parameter','second parameter','charset=us-ascii'".
+ You can, however use the defaults for the parameters: "'','','charset
+ =us-ascii'". The default options can be configured using
+ :config:option:`$cfg['DefaultTransformations']`.
+* 'Input transformation' is another drop-down menu that corresponds exactly
+ with the instructions above for "Browser display transformation" except
+ these these affect the data before insertion in to the database. These are
+ most commonly used to either provide a specialized editor (for example, using
+ the phpMyAdmin SQL editor interface) or selector (such as for uploading an image).
+ It's also possible to manipulate the data such as converting an IPv4 address to binary
+ or parsing it through a regular expression.
+* Finally, 'Input transformation options' is the equivalent of the "Browser display
+ transformation options" section above and is where optional and required parameters are entered.
+
+.. _transformationsfiles:
+
+File structure
+++++++++++++++
+
+All specific transformations for mimetypes are defined through class
+files in the directory :file:`libraries/classes/Plugins/Transformations/`. Each of
+them extends a certain transformation abstract class declared in
+:file:`libraries/classes/Plugins/Transformations/Abs`.
+
+They are stored in files to ease customization and to allow easy adding of
+new or custom transformations.
+
+Because the user cannot enter their own mimetypes, it is kept certain that
+the transformations will always work. It makes no sense to apply a
+transformation to a mimetype the transform-function doesn't know to
+handle.
+
+There is a file called :file:`libraries/classes/Plugins/Transformations.php` that provides some
+basic functions which can be included by any other transform function.
+
+The file name convention is ``[Mimetype]_[Subtype]_[Transformation
+Name].php``, while the abstract class that it extends has the
+name ``[Transformation Name]TransformationsPlugin``. All of the
+methods that have to be implemented by a transformations plug-in are:
+
+#. getMIMEType() and getMIMESubtype() in the main class;
+#. getName(), getInfo() and applyTransformation() in the abstract class
+ it extends.
+
+The getMIMEType(), getMIMESubtype() and getName() methods return the
+name of the MIME type, MIME Subtype and transformation accordingly.
+getInfo() returns the transformation's description and possible
+options it may receive and applyTransformation() is the method that
+does the actual work of the transformation plug-in.
+
+Please see the :file:`libraries/classes/Plugins/Transformations/TEMPLATE` and
+:file:`libraries/classes/Plugins/Transformations/TEMPLATE\_ABSTRACT` files for adding
+your own transformation plug-in. You can also generate a new
+transformation plug-in (with or without the abstract transformation
+class), by using
+:file:`scripts/transformations_generator_plugin.sh` or
+:file:`scripts/transformations_generator_main_class.sh`.
+
+The applyTransformation() method always gets passed three variables:
+
+#. **$buffer** - Contains the text inside of the column. This is the
+ text, you want to transform.
+#. **$options** - Contains any user-passed options to a transform
+ function as an array.
+#. **$meta** - Contains an object with information about your column. The
+ data is drawn from the output of the `mysql\_fetch\_field()
+ `_ function. This means, all
+ object properties described on the `manual page
+ `_ are available in this
+ variable and can be used to transform a column accordingly to
+ unsigned/zerofill/not\_null/... properties. The $meta->mimetype
+ variable contains the original :term:`Media type` of the column (i.e.
+ 'text/plain', 'image/jpeg' etc.)
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_sources/two_factor.rst.txt b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/two_factor.rst.txt
new file mode 100644
index 0000000..b507718
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/doc/html/_sources/two_factor.rst.txt
@@ -0,0 +1,69 @@
+.. _2fa:
+
+Two-factor authentication
+=========================
+
+.. versionadded:: 4.8.0
+
+Since phpMyAdmin 4.8.0 you can configure two-factor authentication to be
+used when logging in. To use this, you first need to configure the
+:ref:`linked-tables`. Once this is done, every user can opt-in for the second
+authentication factor in the :guilabel:`Settings`.
+
+When running phpMyAdmin from the Git source repository, the dependencies must be installed
+manually; the typical way of doing so is with the command:
+
+.. code-block:: sh
+
+ composer require pragmarx/google2fa-qrcode bacon/bacon-qr-code
+
+Or when using a hardware security key with FIDO U2F:
+
+.. code-block:: sh
+
+ composer require code-lts/u2f-php-server
+
+Authentication Application (2FA)
+--------------------------------
+
+Using an application for authentication is a quite common approach based on HOTP and
+`TOTP `_.
+It is based on transmitting a private key from phpMyAdmin to the authentication
+application and the application is then able to generate one time codes based
+on this key. The easiest way to enter the key in to the application from phpMyAdmin is
+through scanning a QR code.
+
+There are dozens of applications available for mobile phones to implement these
+standards, the most widely used include:
+
+* `FreeOTP for iOS, Android and Pebble `_
+* `Authy for iOS, Android, Chrome, OS X `_
+* `Google Authenticator for iOS `_
+* `Google Authenticator for Android `_
+* `LastPass Authenticator for iOS, Android, OS X, Windows `_
+
+Hardware Security Key (FIDO U2F)
+--------------------------------
+
+Using hardware tokens is considered to be more secure than a software based
+solution. phpMyAdmin supports `FIDO U2F `_
+tokens.
+
+There are several manufacturers of these tokens, for example:
+
+* `youbico FIDO U2F Security Key `_
+* `HyperFIDO `_
+* `Trezor Hardware Wallet `_ can act as an `U2F token `_
+* `List of Two Factor Auth (2FA) Dongles `_
+
+.. _simple2fa:
+
+Simple two-factor authentication
+--------------------------------
+
+This authentication is included for testing and demonstration purposes only as
+it really does not provide two-factor authentication, it just asks the user to confirm login by
+clicking on the button.
+
+It should not be used in the production and is disabled unless
+:config:option:`$cfg['DBG']['simple2fa']` is set.
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_static/classic.css b/Sources/php_script/script/phpMyAdmin/doc/html/_static/classic.css
new file mode 100644
index 0000000..dcae946
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/doc/html/_static/classic.css
@@ -0,0 +1,266 @@
+/*
+ * classic.css_t
+ * ~~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- classic theme.
+ *
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+html {
+ /* CSS hack for macOS's scrollbar (see #1125) */
+ background-color: #FFFFFF;
+}
+
+body {
+ font-family: sans-serif;
+ font-size: 100%;
+ background-color: #11303d;
+ color: #000;
+ margin: 0;
+ padding: 0;
+}
+
+div.document {
+ background-color: #1c4e63;
+}
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 230px;
+}
+
+div.body {
+ background-color: #ffffff;
+ color: #000000;
+ padding: 0 20px 30px 20px;
+}
+
+div.footer {
+ color: #ffffff;
+ width: 100%;
+ padding: 9px 0 9px 0;
+ text-align: center;
+ font-size: 75%;
+}
+
+div.footer a {
+ color: #ffffff;
+ text-decoration: underline;
+}
+
+div.related {
+ background-color: #133f52;
+ line-height: 30px;
+ color: #ffffff;
+}
+
+div.related a {
+ color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: #ffffff;
+ font-size: 1.4em;
+ font-weight: normal;
+ margin: 0;
+ padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+ color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: #ffffff;
+ font-size: 1.3em;
+ font-weight: normal;
+ margin: 5px 0 0 0;
+ padding: 0;
+}
+
+div.sphinxsidebar p {
+ color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+ margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+ margin: 10px;
+ padding: 0;
+ color: #ffffff;
+}
+
+div.sphinxsidebar a {
+ color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+
+
+/* -- hyperlink styles ------------------------------------------------------ */
+
+a {
+ color: #355f7c;
+ text-decoration: none;
+}
+
+a:visited {
+ color: #355f7c;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+
+
+/* -- body styles ----------------------------------------------------------- */
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ font-family: 'Trebuchet MS', sans-serif;
+ background-color: #f2f2f2;
+ font-weight: normal;
+ color: #20435c;
+ border-bottom: 1px solid #ccc;
+ margin: 20px -20px 10px -20px;
+ padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+ color: #c60f0f;
+ font-size: 0.8em;
+ padding: 0 4px 0 4px;
+ text-decoration: none;
+}
+
+a.headerlink:hover {
+ background-color: #c60f0f;
+ color: white;
+}
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+ text-align: justify;
+ line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+ display: inline;
+}
+
+div.admonition p {
+ margin-bottom: 5px;
+}
+
+div.admonition pre {
+ margin-bottom: 5px;
+}
+
+div.admonition ul, div.admonition ol {
+ margin-bottom: 5px;
+}
+
+div.note {
+ background-color: #eee;
+ border: 1px solid #ccc;
+}
+
+div.seealso {
+ background-color: #ffc;
+ border: 1px solid #ff6;
+}
+
+div.topic {
+ background-color: #eee;
+}
+
+div.warning {
+ background-color: #ffe4e4;
+ border: 1px solid #f66;
+}
+
+p.admonition-title {
+ display: inline;
+}
+
+p.admonition-title:after {
+ content: ":";
+}
+
+pre {
+ padding: 5px;
+ background-color: unset;
+ color: unset;
+ line-height: 120%;
+ border: 1px solid #ac9;
+ border-left: none;
+ border-right: none;
+}
+
+code {
+ background-color: #ecf0f3;
+ padding: 0 1px 0 1px;
+ font-size: 0.95em;
+}
+
+th, dl.field-list > dt {
+ background-color: #ede;
+}
+
+.warning code {
+ background: #efc2c2;
+}
+
+.note code {
+ background: #d6d6d6;
+}
+
+.viewcode-back {
+ font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+ background-color: #f4debf;
+ border-top: 1px solid #ac9;
+ border-bottom: 1px solid #ac9;
+}
+
+div.code-block-caption {
+ color: #efefef;
+ background-color: #1c4e63;
+}
\ No newline at end of file
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/_static/language_data.js b/Sources/php_script/script/phpMyAdmin/doc/html/_static/language_data.js
new file mode 100644
index 0000000..0e7dc7e
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/doc/html/_static/language_data.js
@@ -0,0 +1,297 @@
+/*
+ * language_data.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * This script contains the language-specific data used by searchtools.js,
+ * namely the list of stopwords, stemmer, scorer and splitter.
+ *
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
+
+
+/* Non-minified version JS is _stemmer.js if file is provided */
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+ var step2list = {
+ ational: 'ate',
+ tional: 'tion',
+ enci: 'ence',
+ anci: 'ance',
+ izer: 'ize',
+ bli: 'ble',
+ alli: 'al',
+ entli: 'ent',
+ eli: 'e',
+ ousli: 'ous',
+ ization: 'ize',
+ ation: 'ate',
+ ator: 'ate',
+ alism: 'al',
+ iveness: 'ive',
+ fulness: 'ful',
+ ousness: 'ous',
+ aliti: 'al',
+ iviti: 'ive',
+ biliti: 'ble',
+ logi: 'log'
+ };
+
+ var step3list = {
+ icate: 'ic',
+ ative: '',
+ alize: 'al',
+ iciti: 'ic',
+ ical: 'ic',
+ ful: '',
+ ness: ''
+ };
+
+ var c = "[^aeiou]"; // consonant
+ var v = "[aeiouy]"; // vowel
+ var C = c + "[^aeiouy]*"; // consonant sequence
+ var V = v + "[aeiou]*"; // vowel sequence
+
+ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
+ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
+ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
+ var s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ this.stemWord = function (w) {
+ var stem;
+ var suffix;
+ var firstch;
+ var origword = w;
+
+ if (w.length < 3)
+ return w;
+
+ var re;
+ var re2;
+ var re3;
+ var re4;
+
+ firstch = w.substr(0,1);
+ if (firstch == "y")
+ w = firstch.toUpperCase() + w.substr(1);
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w))
+ w = w.replace(re,"$1$2");
+ else if (re2.test(w))
+ w = w.replace(re2,"$1$2");
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w))
+ w = w + "e";
+ else if (re3.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ else if (re4.test(w))
+ w = w + "e";
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem))
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step2list[suffix];
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step3list[suffix];
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem))
+ w = stem;
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem))
+ w = stem;
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+ w = stem;
+ }
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+ if (firstch == "y")
+ w = firstch.toLowerCase() + w.substr(1);
+ return w;
+ }
+}
+
+
+
+
+
+var splitChars = (function() {
+ var result = {};
+ var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
+ 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
+ 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
+ 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
+ 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
+ 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
+ 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
+ 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
+ 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
+ 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
+ var i, j, start, end;
+ for (i = 0; i < singles.length; i++) {
+ result[singles[i]] = true;
+ }
+ var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
+ [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
+ [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
+ [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
+ [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
+ [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
+ [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
+ [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
+ [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
+ [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
+ [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
+ [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
+ [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
+ [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
+ [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
+ [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
+ [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
+ [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
+ [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
+ [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
+ [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
+ [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
+ [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
+ [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
+ [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
+ [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
+ [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
+ [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
+ [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
+ [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
+ [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
+ [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
+ [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
+ [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
+ [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
+ [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
+ [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
+ [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
+ [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
+ [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
+ [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
+ [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
+ [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
+ [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
+ [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
+ [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
+ [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
+ [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
+ [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
+ for (i = 0; i < ranges.length; i++) {
+ start = ranges[i][0];
+ end = ranges[i][1];
+ for (j = start; j <= end; j++) {
+ result[j] = true;
+ }
+ }
+ return result;
+})();
+
+function splitQuery(query) {
+ var result = [];
+ var start = -1;
+ for (var i = 0; i < query.length; i++) {
+ if (splitChars[query.charCodeAt(i)]) {
+ if (start !== -1) {
+ result.push(query.slice(start, i));
+ start = -1;
+ }
+ } else if (start === -1) {
+ start = i;
+ }
+ }
+ if (start !== -1) {
+ result.push(query.slice(start));
+ }
+ return result;
+}
+
+
diff --git a/Sources/php_script/script/phpMyAdmin/doc/html/config.html b/Sources/php_script/script/phpMyAdmin/doc/html/config.html
new file mode 100644
index 0000000..0a1cd99
--- /dev/null
+++ b/Sources/php_script/script/phpMyAdmin/doc/html/config.html
@@ -0,0 +1,6161 @@
+
+
+
+
+
+
+
+ Configuration — phpMyAdmin 5.2.0 documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All configurable data is placed in config.inc.php in phpMyAdmin’s
+toplevel directory. If this file does not exist, please refer to the
+Installation section to create one. This file only needs to contain the
+parameters you want to change from their corresponding default value in
+libraries/config.default.php (this file is not intended for changes).
If a directive is missing from your file, you can just add another line with
+the file. This file is for over-writing the defaults; if you wish to use the
+default value there’s no need to add a line here.
+
The parameters which relate to design (like colors) are placed in
+themes/themename/scss/_variables.scss. You might also want to create
+config.footer.inc.php and config.header.inc.php files to add
+your site specific code to be included on start and end of each page.
+
+
Note
+
Some distributions (eg. Debian or Ubuntu) store config.inc.php in
+/etc/phpmyadmin instead of within phpMyAdmin sources.
Changed in version 4.6.5: This setting was not available in phpMyAdmin 4.6.0 - 4.6.4.
+
+
Sets here the complete URL (with full path) to your phpMyAdmin
+installation’s directory. E.g.
+https://www.example.net/path_to_your_phpMyAdmin_directory/. Note also
+that the URL on most of web servers are case sensitive (even on
+Windows). Don’t forget the trailing slash at the end.
+
Starting with version 2.3.0, it is advisable to try leaving this blank. In
+most cases phpMyAdmin automatically detects the proper setting. Users of
+port forwarding or complex reverse proxy setup might need to set this.
+
A good test is to browse a table, edit a row and save it. There should be
+an error message if phpMyAdmin is having trouble auto–detecting the correct
+value. If you get an error that this must be set or if the autodetect code
+fails to detect your path, please post a bug report on our bug tracker so
+we can improve the code.
Starting with version 2.3.0 phpMyAdmin offers a lot of features to
+work with master / foreign – tables (see $cfg['Servers'][$i]['pmadb']).
+
If you tried to set this
+up and it does not work for you, have a look on the Structure page
+of one database where you would like to use it. You will find a link
+that will analyze why those features have been disabled.
+
If you do not want to use those features set this variable to true to
+stop this message from appearing.
New in version 4.8.0: This is supported since phpMyAdmin 4.8.0.
+
+
Configure authentication logging destination. Failed (or all, depending on
+$cfg['AuthLogSuccess']) authentication attempts will be
+logged according to this directive:
+
+
auto
Let phpMyAdmin automatically choose between syslog and php.
+
+
syslog
Log using syslog, using AUTH facility, on most systems this ends up
+in /var/log/auth.log.
+
+
php
Log into PHP error log.
+
+
sapi
Log into PHP SAPI logging.
+
+
/path/to/file
Any other value is treated as a filename and log entries are written there.
+
+
+
+
Note
+
When logging to a file, make sure its permissions are correctly set
+for a web server user, the setup should closely match instructions
+described in $cfg['TempDir']:
Sets the default behavior for JavaScript error reporting.
+
Whenever an error is detected in the JavaScript execution, an error report
+may be sent to the phpMyAdmin team if the user agrees.
+
The default setting of 'ask' will ask the user everytime there is a new
+error report. However you can set this parameter to 'always' to send error
+reports without asking for confirmation or you can set it to 'never' to
+never send error reports.
+
This directive is available both in the configuration file and in users
+preferences. If the person in charge of a multi-user installation prefers
+to disable this feature for all users, a value of 'never' should be
+set, and the $cfg['UserprefsDisallow'] directive should
+contain 'SendErrorReports' in one of its array values.
Setting this to true allows phpMyAdmin to be included inside a frame,
+and is a potential security hole allowing cross-frame scripting attacks or
+clickjacking. Setting this to ‘sameorigin’ prevents phpMyAdmin to be
+included from another document in a frame, unless that document belongs
+to the same domain.
Since version 1.4.2, phpMyAdmin supports the administration of multiple
+MySQL servers. Therefore, a $cfg['Servers']-array has been
+added which contains the login information for the different servers. The
+first $cfg['Servers'][$i]['host'] contains the hostname of
+the first server, the second $cfg['Servers'][$i]['host']
+the hostname of the second server, etc. In
+libraries/config.default.php, there is only one section for server
+definition, however you can put as many as you need in
+config.inc.php, copy that block or needed parts (you don’t have to
+define all settings, just those you need to change).
+
+
Note
+
The $cfg['Servers'] array starts with
+$cfg[‘Servers’][1]. Do not use $cfg[‘Servers’][0]. If you want more
+than one server, just copy following section (including $i
+increment) several times. There is no need to define full server
+array, just define values you need to change.
The hostname or IP address of your $i-th MySQL-server. E.g.
+localhost.
+
Possible values are:
+
+
hostname, e.g., 'localhost' or 'mydb.example.org'
+
IP address, e.g., '127.0.0.1' or '192.168.10.1'
+
IPv6 address, e.g. 2001:cdba:0000:0000:0000:0000:3257:9652
+
dot - '.', i.e., use named pipes on windows systems
+
empty - '', disables this server
+
+
+
Note
+
The hostname localhost is handled specially by MySQL and it uses
+the socket based connection protocol. To use TCP/IP networking, use an
+IP address or hostname such as 127.0.0.1 or db.example.com. You
+can configure the path to the socket with
+$cfg['Servers'][$i]['socket'].
The port-number of your $i-th MySQL-server. Default is 3306 (leave
+blank).
+
+
Note
+
If you use localhost as the hostname, MySQL ignores this port number
+and connects with the socket, so if you want to connect to a port
+different from the default port, use 127.0.0.1 or the real hostname
+in $cfg['Servers'][$i]['host'].
The path to the socket to use. Leave blank for default. To determine
+the correct socket, check your MySQL configuration or, using the
+mysql command–line client, issue the status command. Among the
+resulting information displayed will be the socket used.
New in version 4.6.0: This is supported since phpMyAdmin 4.6.0.
+
+
If your PHP install uses the MySQL Native Driver (mysqlnd), your
+MySQL server is 5.6 or later, and your SSL certificate is self-signed,
+there is a chance your SSL connection will fail due to validation.
+Setting this to false will disable the validation check.
+
Since PHP 5.6.0 it also verifies whether server name matches CN of its
+certificate. There is currently no way to disable just this check without
+disabling complete SSL verification.
+
+
Warning
+
Disabling the certificate verification defeats purpose of using SSL.
+This will make the connection vulnerable to man in the middle attacks.
Deprecated since version 4.7.0: This setting is no longer used as of 4.7.0, since MySQL decides the
+connection type based on host, so it could lead to unexpected results.
+Please set $cfg['Servers'][$i]['host'] accordingly
+instead.
+
+
What type connection to use with the MySQL server. Your options are
+'socket' and 'tcp'. It defaults to tcp as that is nearly guaranteed
+to be available on all MySQL servers, while sockets are not supported on
+some platforms. To use the socket mode, your MySQL server must be on the
+same machine as the Web server.
This special account is used to access phpMyAdmin configuration storage.
+You don’t need it in single user case, but if phpMyAdmin is shared it
+is recommended to give access to phpMyAdmin configuration storage only to this user
+and configure phpMyAdmin to use it. All users will then be able to use
+the features without need to have direct access to phpMyAdmin configuration storage.
+
+
Changed in version 2.2.5: those were called stduser and stdpass
You can change any MySQL connection setting for control link (used to
+access phpMyAdmin configuration storage) using configuration prefixed with control_.
+
This can be used to change any aspect of the control connection, which by
+default uses same parameters as the user one.
+
For example you can configure SSL for the control connection:
When using auth_type = http, this field allows to define a custom
+HTTP Basic Auth Realm which will be displayed to the user. If not
+explicitly specified in your configuration, a string combined of
+“phpMyAdmin ” and either $cfg['Servers'][$i]['verbose'] or
+$cfg['Servers'][$i]['host'] will be used.
New in version 3.0.0.0: This setting was named $cfg[‘Servers’][$i][‘auth_feebee_config’] and was renamed before the 3.0.0.0 release.
+
+
+
Deprecated since version 4.6.4: This setting was removed because their servers are no longer working and it was not working correctly.
+
+
+
Deprecated since version 4.0.10.17: This setting was removed in a maintenance release because their servers are no longer working and it was not working correctly.
+
+
The name of the file containing swekey ids and login names for hardware
+authentication. Leave empty to deactivate this feature.
When using $cfg['Servers'][$i]['auth_type'] set to
+‘config’, this is the user/password-pair which phpMyAdmin will use to
+connect to the MySQL server. This user/password pair is not needed when
+HTTP or cookie authentication is used
+and should be empty.
Deprecated since version 4.7.0: This setting was removed as it can produce unexpected results.
+
+
Allow attempt to log in without password when a login with password
+fails. This can be used together with http authentication, when
+authentication is done some other way and phpMyAdmin gets user name
+from auth and uses empty password for connecting to MySQL. Password
+login is still tried first, but as fallback, no password method is
+tried.
If set to a (an array of) database name(s), only this (these)
+database(s) will be shown to the user. Since phpMyAdmin 2.2.1,
+this/these database(s) name(s) may contain MySQL wildcards characters
+(“_” and “%”): if you want to use literal instances of these
+characters, escape them (I.E. use 'my\_db' and not 'my_db').
+
This setting is an efficient way to lower the server load since the
+latter does not need to send MySQL requests to build the available
+database list. But it does not replace the privileges rules of the
+MySQL database server. If set, it just means only these databases
+will be displayed but not that all other databases can’t be used.
+
An example of using more that one database:
+
$cfg['Servers'][$i]['only_db']=['db1','db2'];
+
+
+
+
Changed in version 4.0.0: Previous versions permitted to specify the display order of
+the database names via this directive.
Regular expression for hiding some databases from unprivileged users.
+This only hides them from listing, but a user is still able to access
+them (using, for example, the SQL query area). To limit access, use
+the MySQL privilege system. For example, to hide all databases
+starting with the letter “a”, use
+
$cfg['Servers'][$i]['hide_db']='^a';
+
+
+
and to hide both “db1” and “db2” use
+
$cfg['Servers'][$i]['hide_db']='^(db1|db2)$';
+
+
+
More information on regular expressions can be found in the PCRE
+pattern syntax portion
+of the PHP reference manual.
Only useful when using phpMyAdmin with multiple server entries. If
+set, this string will be displayed instead of the hostname in the
+pull-down menu on the main page. This can be useful if you want to
+show only certain databases on your system, for example. For HTTP
+auth, all non-US-ASCII characters will be stripped.
Deprecated since version 4.2.0: This setting was removed. The mysql extension will only be used when
+the mysqli extension is not available. As of 5.0.0, only the
+mysqli extension can be used.
+
+
The PHP MySQL extension to use (mysql or mysqli).
+
It is recommended to use mysqli in all installations.
The name of the database containing the phpMyAdmin configuration
+storage.
+
See the phpMyAdmin configuration storage section in this document to see the benefits of
+this feature, and for a quick way of creating this database and the needed
+tables.
+
If you are the only user of this phpMyAdmin installation, you can use your
+current database to store those special tables; in this case, just put your
+current database name in $cfg['Servers'][$i]['pmadb']. For a
+multi-user installation, set this parameter to the name of your central
+database containing the phpMyAdmin configuration storage.
Since release 2.2.0 phpMyAdmin allows users to bookmark queries. This
+can be useful for queries you often run. To allow the usage of this
+functionality:
Since release 2.2.4 you can describe, in a special ‘relation’ table,
+which column is a key in another table (a foreign key). phpMyAdmin
+currently uses this to:
+
+
make clickable, when you browse the master table, the data values that
+point to the foreign table;
+
display in an optional tool-tip the “display column” when browsing the
+master table, if you move the mouse to a column containing a foreign
+key (use also the ‘table_info’ table); (see 6.7 How can I use the “display column” feature?)
now as normal user open phpMyAdmin and for each one of your tables
+where you want to use this feature, click Structure/Relation view/
+and choose foreign columns.
+
+
This feature can be disabled by setting the configuration to false.
+
+
Note
+
In the current version, master_db must be the same as foreign_db.
+Those columns have been put in future development of the cross-db
+relations.
Since release 2.3.0 you can describe, in a special ‘table_info’
+table, which column is to be displayed as a tool-tip when moving the
+cursor over the corresponding key. This configuration variable will
+hold the name of this special table. To allow the usage of this
+functionality:
The designer feature can save your page layout; by pressing the “Save page” or “Save page as”
+button in the expanding designer menu, you can customize the layout and have it loaded the next
+time you use the designer. That layout is stored in this table. Furthermore, this table is also
+required for using the PDF relation export feature, see
+$cfg['Servers'][$i]['pdf_pages'] for additional details.
Since release 2.3.0 you can have phpMyAdmin create PDF pages
+showing the relations between your tables. Further, the designer interface
+permits visually managing the relations. To do this it needs two tables
+“pdf_pages” (storing information about the available PDF pages)
+and “table_coords” (storing coordinates where each table will be placed on
+a PDF schema output). You must be using the “relation” feature.
New in version 2.10.0: Since release 2.10.0 a Designer interface is available; it permits to
+visually manage the relations.
+
+
+
Deprecated since version 4.3.0: This setting was removed and the Designer table positioning data is now stored into $cfg['Servers'][$i]['table_coords'].
+
+
+
Note
+
You can now delete the table pma__designer_coords from your phpMyAdmin configuration storage database and remove $cfg['Servers'][$i]['designer_coords'] from your configuration file.
This part requires a content update! Since release 2.3.0 you can
+store comments to describe each column for each table. These will then
+be shown on the “printview”.
+
Starting with release 2.5.0, comments are consequently used on the table
+property pages and table browse view, showing up as tool-tips above the
+column name (properties page) or embedded within the header of table in
+browse view. They can also be shown in a table dump. Please see the
+relevant configuration directives later on.
+
Also new in release 2.5.0 is a MIME- transformation system which is also
+based on the following table structure. See Transformations for
+further information. To use the MIME- transformation system, your
+column_info table has to have the three new columns ‘mimetype’,
+‘transformation’, ‘transformation_options’.
+
Starting with release 4.3.0, a new input-oriented transformation system
+has been introduced. Also, backward compatibility code used in the old
+transformations system was removed. As a result, an update to column_info
+table is necessary for previous transformations and the new input-oriented
+transformation system to work. phpMyAdmin will upgrade it automatically
+for you by analyzing your current column_info table structure.
+However, if something goes wrong with the auto-upgrade then you can
+use the SQL script found in ./sql/upgrade_column_info_4_3_0+.sql
+to upgrade it manually.
to update your PRE-2.5.0 Column_comments table use this: and
+remember that the Variable in config.inc.php has been renamed from
+$cfg['Servers'][$i]['column_comments'] to
+$cfg['Servers'][$i]['column_info']
Since release 2.5.0 you can store your SQL history, which means all
+queries you entered manually into the phpMyAdmin interface. If you don’t
+want to use a table-based history, you can use the JavaScript-based
+history.
+
Using that, all your history items are deleted when closing the window.
+Using $cfg['QueryHistoryMax'] you can specify an amount of
+history items you want to have on hold. On every login, this list gets cut
+to the maximum amount.
+
The query history is only available if JavaScript is enabled in
+your browser.
Since release 3.5.0 you can show recently used tables in the
+navigation panel. It helps you to jump across table directly, without
+the need to select the database, and then select the table. Using
+$cfg['NumRecentTables'] you can configure the maximum number
+of recent tables shown. When you select a table from the list, it will jump to
+the page specified in $cfg['NavigationTreeDefaultTabTable'].
+
Without configuring the storage, you can still access the recently used tables,
+but it will disappear after you logout.
+
To allow the usage of this functionality persistently:
Since release 4.2.0 you can show a list of selected tables in the
+navigation panel. It helps you to jump to the table directly, without
+the need to select the database, and then select the table. When you
+select a table from the list, it will jump to the page specified in
+$cfg['NavigationTreeDefaultTabTable'].
+
You can add tables to this list or remove tables from it in database
+structure page by clicking on the star icons next to table names. Using
+$cfg['NumFavoriteTables'] you can configure the maximum
+number of favorite tables shown.
+
Without configuring the storage, you can still access the favorite tables,
+but it will disappear after you logout.
+
To allow the usage of this functionality persistently:
Since release 3.5.0 phpMyAdmin can be configured to remember several
+things (sorted column $cfg['RememberSorting'], column order,
+and column visibility from a database table) for browsing tables. Without
+configuring the storage, these features still can be used, but the values will
+disappear after you logout.
+
To allow the usage of these functionality persistently:
The table used by phpMyAdmin to store user name information for associating with user groups.
+See the next entry on $cfg['Servers'][$i]['usergroups'] for more details
+and the suggested settings.
Since release 4.1.0 you can create different user groups with menu items
+attached to them. Users can be assigned to these groups and the logged in
+user would only see menu items configured to the usergroup they are assigned to.
+To do this it needs two tables “usergroups” (storing allowed menu items for each
+user group) and “users” (storing users and their assignments to user groups).
Since release 4.3.0 you can have a central list of columns per database.
+You can add/remove columns to the list as per your requirement. These columns
+in the central list will be available to use while you create a new column for
+a table or create a table itself. You can select a column from central list
+while creating a new column, it will save you from writing the same column definition
+over again or from writing different names for similar column.
Since release 4.5.0 your designer settings can be remembered.
+Your choice regarding ‘Angular/Direct Links’, ‘Snap to Grid’, ‘Toggle Relation Lines’,
+‘Small/Big All’, ‘Move Menu’ and ‘Pin Text’ can be remembered persistently.
Since release 3.3.x a tracking mechanism is available. It helps you to
+track every SQL command which is
+executed by phpMyAdmin. The mechanism supports logging of data
+manipulation and data definition statements. After enabling it you can
+create versions of tables.
+
The creation of a version has two effects:
+
+
phpMyAdmin saves a snapshot of the table, including structure and
+indexes.
+
phpMyAdmin logs all commands which change the structure and/or data of
+the table and links these commands with the version number.
+
+
Of course you can view the tracked changes. On the Tracking
+page a complete report is available for every version. For the report you
+can use filters, for example you can get a list of statements within a date
+range. When you want to filter usernames you can enter * for all names or
+you enter a list of names separated by ‘,’. In addition you can export the
+(filtered) report to a file or to a temporary database.
Since release 3.4.x phpMyAdmin allows users to set most preferences by
+themselves and store them in the database.
+
If you don’t allow for storing preferences in
+$cfg['Servers'][$i]['pmadb'], users can still personalize
+phpMyAdmin, but settings will be saved in browser’s local storage, or, it
+is is unavailable, until the end of session.
Whether to allow logins without a password. The default value of
+false for this parameter prevents unintended access to a MySQL
+server with was left with an empty password for root or on which an
+anonymous (blank) user is defined.
If your rule order is empty, then IP
+authorization is disabled.
+
If your rule order is set to
+'deny,allow' then the system applies all deny rules followed by
+allow rules. Access is allowed by default. Any client which does not
+match a Deny command or does match an Allow command will be allowed
+access to the server.
+
If your rule order is set to 'allow,deny'
+then the system applies all allow rules followed by deny rules. Access
+is denied by default. Any client which does not match an Allow
+directive or does match a Deny directive will be denied access to the
+server.
+
If your rule order is set to 'explicit', authorization is
+performed in a similar fashion to rule order ‘deny,allow’, with the
+added restriction that your host/username combination must be
+listed in the allow rules, and not listed in the deny rules. This
+is the most secure means of using Allow/Deny rules, and was
+available in Apache by specifying allow and deny rules without setting
+any order.
If you wish to match all users, it is possible to use a '%' as a
+wildcard in the username field.
+
There are a few shortcuts you can
+use in the ipmask field as well (please note that those containing
+SERVER_ADDRESS might not be available on all webservers):
Having an empty rule list is equivalent to either using 'allow%
+fromall' if your rule order is set to 'deny,allow' or 'deny%
+fromall' if your rule order is set to 'allow,deny' or
+'explicit'.
+
For the IP Address matching
+system, the following work:
$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
+$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow bob from all'];
+// Allow only 'bob' to connect from any host
+
+$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
+$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow mary from 192.168.100.[50-100]'];
+// Allow only 'mary' to connect from host 192.168.100.50 through 192.168.100.100
+
+$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
+$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow % from 192.168.[5-6].10'];
+// Allow any user to connect from host 192.168.5.10 or 192.168.6.10
+
+$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
+$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow root from 192.168.5.50','allow % from 192.168.6.10'];
+// Allow any user to connect from 192.168.6.10, and additionally allow root to connect from 192.168.5.50
+
Name of PHP script to be sourced and executed to obtain login
+credentials. This is alternative approach to session based single
+signon. The script has to provide a function called
+get_login_credentials which returns list of username and
+password, accepting single parameter of existing username (can be
+empty). See examples/signon-script.php for an example:
+
<?php
+/**
+ * Single signon for phpMyAdmin
+ *
+ * This is just example how to use script based single signon with
+ * phpMyAdmin, it is not intended to be perfect code and look, only
+ * shows how you can integrate this functionality in your application.
+ */
+
+declare(strict_types=1);
+
+// phpcs:disable Squiz.Functions.GlobalFunction
+
+/**
+ * This function returns username and password.
+ *
+ * It can optionally use configured username as parameter.
+ *
+ * @param string $user User name
+ *
+ * @return array
+ */
+functionget_login_credentials($user)
+{
+ /* Optionally we can use passed username */
+ if(!empty($user)){
+ return[
+ $user,
+ 'password',
+ ];
+ }
+
+ /* Here we would retrieve the credentials */
+ return[
+ 'root',
+ '',
+ ];
+}
+
Name of session which will be used for signon authentication method.
+You should use something different than phpMyAdmin, because this
+is session which phpMyAdmin uses internally. Takes effect only if
+$cfg['Servers'][$i]['SignonScript'] is not configured.
An associative array of session cookie parameters of other authentication system.
+It is not needed if the other system doesn’t use session_set_cookie_params().
+Keys should include ‘lifetime’, ‘path’, ‘domain’, ‘secure’ or ‘httponly’.
+Valid values are mentioned in session_get_cookie_params, they should be set to same values as the
+other application uses. Takes effect only if
+$cfg['Servers'][$i]['SignonScript'] is not configured.
If you have more than one server configured, you can set
+$cfg['ServerDefault'] to any one of them to autoconnect to that
+server when phpMyAdmin is started, or set it to 0 to be given a list
+of servers without logging in.
+
If you have only one server configured,
+$cfg['ServerDefault'] MUST be set to that server.
The url of the proxy to be used when phpmyadmin needs to access the outside
+internet such as when retrieving the latest version info or submitting error
+reports. You need this if the server where phpMyAdmin is installed does not
+have direct access to the internet.
+The format is: “hostname:portnumber”
The username for authenticating with the proxy. By default, no
+authentication is performed. If a username is supplied, Basic
+Authentication will be performed. No other types of authentication
+are currently supported.
The maximum number of characters when a SQL query is displayed. The
+default limit of 1000 should be correct to avoid the display of tons of
+hexadecimal codes that represent BLOBs, but some users have real
+SQL queries that are longer than 1000 characters. Also, if a
+query’s length exceeds this limit, this query is not saved in the history.
This search is case-sensitive and will match the exact string only.
+If your setup does not use SSL but is safe because you are using a
+local connection or private network, you can add your hostname or IP to the list.
+You can also remove the default entries to only include yours.
Set the number of seconds a script is allowed to run. If seconds is
+set to zero, no time limit is imposed. This setting is used while
+importing/exporting dump files but has
+no effect when PHP is running in safe mode.
Set the number of bytes a script is allowed to allocate. If set to
+'-1', no limit is imposed. If set to '0', no change of the
+memory limit is attempted and the php.inimemory_limit is
+used.
+
This setting is used while importing/exporting dump files
+so you definitely don’t want to put here a too low
+value. It has no effect when PHP is running in safe mode.
+
You can also use any string as in php.ini, eg. ‘16M’. Ensure you
+don’t omit the suffix (16 means 16 bytes!)
Defines whether to use a Javascript code editor for SQL query boxes.
+CodeMirror provides syntax highlighting and line numbers. However,
+middle-clicking for pasting the clipboard contents in some Linux
+distributions (such as Ubuntu) is not supported by all browsers.
Default value of the checkbox for foreign key checks, to disable/enable
+foreign key checks for certain queries. The possible values are 'default',
+'enable' or 'disable'. If set to 'default', the value of the
+MySQL variable FOREIGN_KEY_CHECKS is used.
This is not a security measure as there will be always ways to
+circumvent this. If you want to prohibit users from dropping databases,
+revoke their corresponding DROP privilege.
+
+
Defines whether normal users (non-administrator) are allowed to delete
+their own database or not. If set as false, the link Drop
+Database will not be shown, and even a DROPDATABASEmydatabase will
+be rejected. Quite practical for ISP ‘s with many customers.
+
This limitation of SQL queries is not as strict as when using MySQL
+privileges. This is due to nature of SQL queries which might be
+quite complicated. So this choice should be viewed as help to avoid
+accidental dropping rather than strict privilege limitation.
Whether or not the drag and drop import feature is enabled.
+When enabled, a user can drag a file in to their browser and phpMyAdmin will
+attempt to import the file.
Define whether phpMyAdmin will encrypt sensitive data (like database name
+and table name) from the URL query string. Default is to not encrypt the URL
+query string.
The “cookie” auth_type uses AES algorithm to encrypt the password. If you
+are using the “cookie” auth_type, enter here a random passphrase of your
+choice. It will be used internally by the AES algorithm: you won’t be
+prompted for this passphrase.
+
The secret should be 32 characters long. Using shorter will lead to weaker security
+of encrypted cookies, using longer will cause no harm.
+
+
Note
+
The configuration is called blowfish_secret for historical reasons as
+Blowfish algorithm was originally used to do the encryption.
+
+
+
Changed in version 3.1.0: Since version 3.1.0 phpMyAdmin can generate this on the fly, but it
+makes a bit weaker security as this generated secret is stored in
+session and furthermore it makes impossible to recall user name from
+cookie.
Define how long a login cookie is valid. Please note that php
+configuration option session.gc_maxlifetime might limit session validity and if the session is lost,
+the login cookie is also invalidated. So it is a good idea to set
+session.gc_maxlifetime at least to the same value of
+$cfg['LoginCookieValidity'].
Define how long login cookie should be stored in browser. Default 0
+means that it will be kept for existing session. This is recommended
+for not trusted environments.
If enabled (default), logout deletes cookies for all servers,
+otherwise only for current one. Setting this to false makes it easy to
+forget to log out from other server, when you are using more of them.
If enabled, allows you to log in to arbitrary servers using cookie
+authentication.
+
+
Note
+
Please use this carefully, as this may allow users access to MySQL servers
+behind the firewall where your HTTP server is placed.
+See also $cfg['ArbitraryServerRegexp'].
Restricts the MySQL servers to which the user can log in when
+$cfg['AllowArbitraryServer'] is enabled by
+matching the IP or the hostname of the MySQL server
+to the given regular expression. The regular expression must be enclosed
+with a delimiter character.
+
It is recommended to include start and end symbols in the regular
+expression, so that you can avoid partial matches on the string.
+
Examples:
+
// Allow connection to three listed servers:
+$cfg['ArbitraryServerRegexp']='/^(server|another|yetdifferent)$/';
+
+// Allow connection to range of IP addresses:
+$cfg['ArbitraryServerRegexp']='@^192\.168\.0\.[0-9]{1,}$@';
+
+// Allow connection to server name ending with -mysql:
+$cfg['ArbitraryServerRegexp']='@^[^:]\-mysql$@';
+
+
+
+
Note
+
The whole server name is matched, it can include port as well. Due to
+way MySQL is permissive in connection parameters, it is possible to use
+connection strings as `server:3306-mysql`. This can be used to
+bypass regular expression by the suffix, while connecting to another
+server.
Defines a string to be used to nest table spaces. This means if you have
+tables like first__second__third this will be shown as a three-level
+hierarchy like: first > second > third. If set to false or empty, the
+feature is disabled. NOTE: You should not use this separator at the
+beginning or end of a table name or multiple times after another without
+any other characters in between.
Enables Zero Configuration mode in which the user will be offered a choice to
+create phpMyAdmin configuration storage in the current database
+or use the existing one, if already present.
+
This setting has no effect if the phpMyAdmin configuration storage database
+is properly created and the related configuration directives (such as
+$cfg['Servers'][$i]['pmadb'] and so on) are configured.
Enter the URL where the logo in the navigation panel will point to.
+For use especially with self made theme which changes this.
+For relative/internal URLs, you need to have leading `` ./ `` or trailing characters `` ? `` such as './index.php?route=/server/sql?'.
+For external URLs, you should include URL protocol schemes (http or https) with absolute URLs.
Defines the minimum number of items (tables, views, routines and
+events) to display a JavaScript filter box above the list of items in
+the navigation tree.
+
To disable the filter completely some high number can be used (e.g. 9999)
Defines the tab displayed by default when clicking the small icon next
+to each table name in the navigation panel. The possible values are the
+localized equivalent of:
Defines the tab displayed by default when clicking the second small icon next
+to each table name in the navigation panel. The possible values are the
+localized equivalent of:
Defines whether or not to display space usage and statistics about
+databases and tables. Note that statistics requires at least MySQL
+3.23.3 and that, at this date, MySQL doesn’t return such information
+for Berkeley DB tables.
Defines whether to display detailed server information on main page.
+You can additionally hide more information by using
+$cfg['Servers'][$i]['verbose'].
Defines whether to display the Change password link or not at
+the starting main (right) frame. This setting does not check MySQL commands
+entered directly.
+
Please note that enabling the Change password link has no effect
+with config authentication mode: because of the hard coded password value
+in the configuration file, end users can’t be allowed to change their
+passwords.
Defines whether to display the form for creating database or not at the
+starting main (right) frame. This setting does not check MySQL commands
+entered directly.
Defines the minimum supported MySQL version. The default is chosen
+by the phpMyAdmin team; however this directive was asked by a developer
+of the Plesk control panel to ease integration with older MySQL servers
+(where most of the phpMyAdmin features work).
If set to icons, will display icons instead of text for db and table
+properties links (like Browse, Select,
+Insert, …). Can be set to 'both'
+if you want icons AND text. When set to text, will only show text.
Defines whether a user should be displayed a “Show all” button in browse
+mode or not in all cases. By default it is shown only on small tables (less
+than 500 rows) to avoid performance issues while getting too many rows.
Number of rows displayed when browsing a result set and no LIMIT
+clause is used. If the result set contains more rows, “Previous” and
+“Next” links will be shown. Possible values: 25,50,100,250,500.
Defines whether columns are displayed in ascending (ASC) order, in
+descending (DESC) order or in a “smart” (SMART) order - I.E.
+descending order for columns of type TIME, DATE, DATETIME and
+TIMESTAMP, ascending order else- by default.
+
+
Changed in version 3.4.0: Since phpMyAdmin 3.4.0 the default value is 'SMART'.
Defines whether or not MySQL functions fields should be initially
+displayed in edit/insert mode. Since version 2.10, the user can toggle
+this setting from the interface.
Defines the default number of rows to be entered from the Insert page.
+Users can manually change this from the bottom of that page to add or remove
+blank rows.
If there are fewer items than this in the set of foreign keys, then a
+drop-down box of foreign keys is presented, in the style described by
+the $cfg['ForeignKeyDropdownOrder'] setting.
For the foreign key drop-down fields, there are several methods of
+display, offering both the key and value data. The contents of the
+array should be one or both of the following strings: content-id,
+id-content.
Defines whether to allow on the fly compression for GZip/BZip2
+compressed exports. This doesn’t affect smaller dumps and allows users
+to create larger dumps that won’t otherwise fit in memory due to php
+memory limit. Produced files contain more GZip/BZip2 headers, but all
+normal programs handle this correctly.
In this array are defined default parameters for export, names of
+items are similar to texts seen on export page, so you can easily
+identify what they mean.
In this array are defined default parameters for import, names of
+items are similar to texts seen on import page, so you can easily
+identify what they mean.
How many columns will be utilized to display the tables on the database
+property view? When setting this to a value larger than 1, the type of the
+database will be omitted for more display space.
Defines the default language to use, if not browser-defined or user-
+defined. The corresponding language file needs to be in
+locale/code/LC_MESSAGES/phpmyadmin.mo.
Limit list of available languages to those matching the given regular
+expression. For example if you want only Czech and English, you should
+set filter to '^(cs|en)'.
Enabled charset conversion activates a pull-down menu in the Export
+and Import pages, to choose the character set when exporting a file.
+The default value in this menu comes from
+$cfg['Export']['charset'] and $cfg['Import']['charset'].
Specify some parameters for iconv used in charset conversion. See
+iconv documentation for details. By default
+//TRANSLIT is used, so that invalid characters will be
+transliterated.
Available character sets for MySQL conversion. You can add your own
+(any of supported by recode/iconv) or remove these which you don’t
+use. Character sets will be shown in same order as here listed, so if
+you frequently use some of these move them to the top.
Defines whether to use GZip output buffering for increased speed in
+HTTP transfers. Set to
+true/false for enabling/disabling. When set to ‘auto’ (string),
+phpMyAdmin tries to enable output buffering and will automatically
+disable it if your browser has some problems with buffering. IE6 with
+a certain patch is known to cause data corruption when having enabled
+buffering.
Lists proxies and HTTP headers which are trusted for
+$cfg['Servers'][$i]['AllowDeny']['order']. This list is by
+default empty, you need to fill in some trusted proxy servers if you
+want to use rules for IP addresses behind proxy.
+
The following example specifies that phpMyAdmin should trust a
+HTTP_X_FORWARDED_FOR (X-Forwarded-For) header coming from the proxy
+1.2.3.4:
We normally check the permissions on the configuration file to ensure
+it’s not world writable. However, phpMyAdmin could be installed on a
+NTFS filesystem mounted on a non-Windows server, in which case the
+permissions seems wrong but in fact cannot be detected. In this case a
+sysadmin would set this parameter to false.
Limit for length of URL in links. When length would be above this
+limit, it is replaced by form with button. This is required as some web
+servers (IIS) have problems with long URL .
Additional string to include in allowed script and image sources in Content
+Security Policy header.
+
This can be useful when you want to include some external JavaScript files
+in config.footer.inc.php or config.header.inc.php, which
+would be normally not allowed by Content Security Policy.
+
To allow some sites, just list them within the string:
In the database Structure page, it’s possible to mark some tables then
+choose an operation like optimizing for many tables. This can slow
+down a server; therefore, setting this to true prevents this kind
+of multiple maintenance operation.
Defines the place where table row links (Edit, Copy, Delete) would be
+put when tables contents are displayed (you may have them displayed at
+the left side, right side, both sides or nowhere).
Defines whether to show row links (Edit, Copy, Delete) and checkboxes
+for multiple row operations even when the selection does not have a unique key.
+Using row actions in the absence of a unique key may result in different/more
+rows being affected since there is no guaranteed way to select the exact row(s).
This defines the default sort order for the tables, having a primary key,
+when there is no sort order defines externally.
+Acceptable values : [‘NONE’, ‘ASC’, ‘DESC’]
By setting the corresponding variable to true you can enable the
+display of column comments in Browse or Property display. In browse
+mode, the comments are shown inside the header. In property mode,
+comments are displayed using a CSS-formatted dashed-line below the
+name of the column. The comment is shown as a tool-tip for that
+column.
This will define the first day of week in the calendar. The number
+can be set from 0 to 6, which represents the seven days of the week,
+Sunday to Saturday respectively. This value can also be configured by the user
+in Settings -> Features -> General -> First day of calendar field.
Defines which type of editing controls should be used for CHAR and
+VARCHAR columns. Applies to data editing and also to the default values
+in structure editing. Possible values are:
+
+
input - this allows to limit size of text to size of columns in MySQL,
+but has problems with newlines in columns
+
textarea - no problems with newlines in columns, but also no length
+limitations
Number of columns and rows for the textareas. This value will be
+emphasized (*2) for SQL query
+textareas and (*1.25) for SQL
+textareas inside the query window.
+
The Char* values are used for CHAR
+and VARCHAR editing (if configured via $cfg['CharEditing']).
+
+
Changed in version 5.0.0: The default value was changed from 2 to 7.
If PHP is running in safe mode, all directories must be owned by the same user
+as the owner of the phpMyAdmin scripts.
+
If the directory where phpMyAdmin is installed is subject to an
+open_basedir restriction, you need to create a temporary directory in some
+directory accessible by the PHP interpreter.
+
For security reasons, all directories should be outside the tree published by
+webserver. If you cannot avoid having this directory published by webserver,
+limit access to it either by web server configuration (for example using
+.htaccess or web.config files) or place at least an empty index.html
+file there, so that directory listing is not possible. However as long as the
+directory is accessible by web server, an attacker can guess filenames to download
+the files.
The name of the directory where SQL files have been uploaded by
+other means than phpMyAdmin (for example, FTP). Those files are available
+under a drop-down box when you click the database or table name, then the
+Import tab.
+
If
+you want different directory for each user, %u will be replaced with
+username.
+
Please note that the file names must have the suffix “.sql”
+(or “.sql.bz2” or “.sql.gz” if support for compressed formats is
+enabled).
+
This feature is useful when your file is too big to be
+uploaded via HTTP, or when file
+uploads are disabled in PHP.
This directory should have as strict permissions as possible as the only
+user required to access this directory is the one who runs the webserver.
+If you have root privileges, simply make this user owner of this directory
+and make it accessible only by it:
+
chown www-data:www-data tmp
+chmod 700 tmp
+
+
+
If you cannot change owner of the directory, you can achieve a similar
+setup using ACL:
If neither of above works for you, you can still make the directory
+chmod 777, but it might impose risk of other users on system
+reading and writing data in this directory.
If $cfg['QueryHistoryDB'] is set to true, all your
+Queries are logged to a table, which has to be created by you (see
+$cfg['Servers'][$i]['history']). If set to false, all your
+queries will be appended to the form, but only as long as your window is
+opened they remain saved.
+
When using the JavaScript based query window, it will always get updated
+when you click on a new table/db to browse and will focus if you click on
+Edit SQL after using a query. You can suppress updating the
+query window by checking the box Do not overwrite this query
+from outside the window below the query textarea. Then you can browse
+tables/databases in the background without losing the contents of the
+textarea, so this is especially useful when composing a query with tables
+you first have to look in. The checkbox will get automatically checked
+whenever you change the contents of the textarea. Please uncheck the button
+whenever you definitely want the query window to get updated even though
+you have made alterations.
For InnoDB tables, determines for how large tables phpMyAdmin should
+get the exact row count using SELECTCOUNT. If the approximate row
+count as returned by SHOWTABLESTATUS is smaller than this value,
+SELECTCOUNT will be used, otherwise the approximate count will be
+used.
+
+
Changed in version 4.8.0: The default value was lowered to 50000 for performance reasons.
+
+
+
Changed in version 4.2.6: The default value was changed to 500000.
For VIEWs, since obtaining the exact count could have an impact on
+performance, this value is the maximum to be displayed, using a
+SELECTCOUNT...LIMIT. Setting this to 0 bypasses any row
+counting.
Sorts database and table names according to natural order (for
+example, t1, t2, t10). Currently implemented in the navigation panel
+and in Database view, for the table list.
If set to 'closed', the visual sliders are initially in a closed
+state. A value of 'open' does the reverse. To completely disable
+all visual sliders, use 'disabled'.
Contains names of configuration options (keys in $cfg array) that
+users can’t set through user preferences. For possible values, refer
+to classes under libraries/classes/Config/Forms/User/.
Functions selected by default when inserting/changing row, Functions
+are defined for meta types as (FUNC_NUMBER, FUNC_DATE, FUNC_CHAR,
+FUNC_SPATIAL, FUNC_UUID) and for first_timestamp, which is used
+for first timestamp column in table.
Example configuration file, which can be copied to config.inc.php to
+get some core configuration layout; it is distributed with phpMyAdmin as
+config.sample.inc.php. Please note that it does not contain all
+configuration options, only the most frequently used ones.
+
<?php
+/**
+ * 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/>.
+ */
+
+declare(strict_types=1);
+
+/**
+ * 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';
+
+/**
+ * 'URLQueryEncryption' defines whether phpMyAdmin will encrypt sensitive data from the URL query string.
+ * 'URLQueryEncryptionSecretKey' is a 32 bytes long secret key used to encrypt/decrypt the URL query string.
+ */
+//$cfg['URLQueryEncryption'] = true;
+//$cfg['URLQueryEncryptionSecretKey'] = '';
+
+/**
+ * You can find more configuration options in the documentation
+ * in the doc/ folder or at <https://docs.phpmyadmin.net/>.
+ */
+
+
+
+
Warning
+
Don’t use the controluser ‘pma’ if it does not yet exist and don’t use ‘pmapass’
+as password.
If you want to automatically login when accessing phpMyAdmin locally while asking
+for a password when accessing remotely, you can achieve it using following snippet:
You can configure any number of servers using $cfg['Servers'],
+following example shows two of them:
+
<?php
+$cfg['blowfish_secret']='multiServerExample70518';
+// any string of your choice
+$i=0;
+
+$i++;// server 1 :
+$cfg['Servers'][$i]['auth_type']='cookie';
+$cfg['Servers'][$i]['verbose']='no1';
+$cfg['Servers'][$i]['host']='localhost';
+// more options for #1 ...
+
+$i++;// server 2 :
+$cfg['Servers'][$i]['auth_type']='cookie';
+$cfg['Servers'][$i]['verbose']='no2';
+$cfg['Servers'][$i]['host']='remote.host.addr';//or ip:'10.9.8.1'
+// this server must allow remote clients, e.g., host 10.9.8.%
+// not only in mysql.host but also in the startup configuration
+// more options for #2 ...
+
+// end of server sections
+$cfg['ServerDefault']=0;// to choose the server on startup
+
+// further general options ...
+
To connect to Google Could SQL, you currently need to disable certificate
+verification. This is caused by the certificate being issued for CN matching
+your instance name, but you connect to an IP address and PHP tries to match
+these two. With verification you end up with error message like:
+
Peer certificate CN=`api-project-851612429544:pmatest' did not match expected CN=`8.8.8.8'
+
+
+
+
Warning
+
With disabled verification your traffic is encrypted, but you’re open to
+man in the middle attacks.
+
+
To connect phpMyAdmin to Google Cloud SQL using SSL download the client and
+server certificates and tell phpMyAdmin to use them:
+
// IP address of your instance
+$cfg['Servers'][$i]['host']='8.8.8.8';
+// Use SSL for connection
+$cfg['Servers'][$i]['ssl']=true;
+// Client secret key
+$cfg['Servers'][$i]['ssl_key']='../client-key.pem';
+// Client certificate
+$cfg['Servers'][$i]['ssl_cert']='../client-cert.pem';
+// Server certification authority
+$cfg['Servers'][$i]['ssl_ca']='../server-ca.pem';
+// Disable SSL verification (see above note)
+$cfg['Servers'][$i]['ssl_verify']=false;
+
To connect phpMyAdmin to an Amazon RDS Aurora MySQL database instance using SSL,
+download the CA server certificate and tell phpMyAdmin to use it:
+
// Address of your instance
+$cfg['Servers'][$i]['host']='replace-me-custer-name.cluster-replace-me-id.replace-me-region.rds.amazonaws.com';
+// Use SSL for connection
+$cfg['Servers'][$i]['ssl']=true;
+// You need to have the region CA file and the authority CA file (2019 edition CA for example) in the PEM bundle for it to work
+$cfg['Servers'][$i]['ssl_ca']='../rds-combined-ca-bundle.pem';
+// Enable SSL verification
+$cfg['Servers'][$i]['ssl_verify']=true;
+
$cfg['CaptchaApi']='https://www.hcaptcha.com/1/api.js';
+$cfg['CaptchaCsp']='https://hcaptcha.com https://*.hcaptcha.com';
+$cfg['CaptchaRequestParam']='h-captcha';
+$cfg['CaptchaResponseParam']='h-captcha-response';
+$cfg['CaptchaSiteVerifyURL']='https://hcaptcha.com/siteverify';
+// This is the secret key from hCaptcha dashboard
+$cfg['CaptchaLoginPrivateKey']='0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
+// This is the site key from hCaptcha dashboard
+$cfg['CaptchaLoginPublicKey']='xxx-xxx-xxx-xxx-xxxx';
+
Copyright (C) 1998-2000 Tobias Ratschiller <tobias_at_ratschiller.com>
+Copyright (C) 2001-2018 Marc Delisle <marc_at_infomarc.info>
+ Olivier Müller <om_at_omnis.ch>
+ Robin Johnson <robbat2_at_users.sourceforge.net>
+ Alexander M. Turek <me_at_derrabus.de>
+ Michal Čihař <michal_at_cihar.com>
+ Garvin Hicking <me_at_supergarv.de>
+ Michael Keck <mkkeck_at_users.sourceforge.net>
+ Sebastian Mendel <cybot_tm_at_users.sourceforge.net>
+ [check credits for more details]
+
+
+
This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License version 2, as
+published by the Free Software Foundation.
+
This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
You should have received a copy of the GNU General Public License
+along with this program. If not, see <https://www.gnu.org/licenses/>.
phpMyAdmin includes several third-party libraries which come under their
+respective licenses.
+
jQuery’s license, which is where we got the files under js/vendor/jquery/ is
+(MIT|GPL), a copy of each license is available in this repository (GPL
+is available as LICENSE, MIT as js/vendor/jquery/MIT-LICENSE.txt).
+
The download kit additionally includes several composer libraries. See their
+licensing information in the vendor/ directory.
1.1 My server is crashing each time a specific action is required or phpMyAdmin sends a blank page or a page full of cryptic characters to my browser, what can I do?¶
+
Try to set the $cfg['OBGzip'] directive to false in your
+config.inc.php file and the zlib.output_compression directive to
+Off in your php configuration file.
+
+
+
1.2 My Apache server crashes when using phpMyAdmin.¶
+
You should first try the latest versions of Apache (and possibly MySQL). If
+your server keeps crashing, please ask for help in the various Apache support
+groups.
1.4 Using phpMyAdmin on IIS, I’m displayed the error message: “The specified CGI application misbehaved by not returning a complete set of HTTP headers …”.¶
+
You just forgot to read the install.txt file from the PHP
+distribution. Have a look at the last message in this PHP bug report #12061 from the official PHP bug
+database.
+
+
+
1.5 Using phpMyAdmin on IIS, I’m facing crashes and/or many error messages with the HTTP.¶
+
This is a known problem with the PHP ISAPI filter: it’s not so stable.
+Please use instead the cookie authentication mode.
+
+
+
1.6 I can’t use phpMyAdmin on PWS: nothing is displayed!¶
+
This seems to be a PWS bug. Filippo Simoncini found a workaround (at
+this time there is no better fix): remove or comment the DOCTYPE
+declarations (2 lines) from the scripts libraries/classes/Header.php
+and index.php.
+
+
+
1.7 How can I gzip a dump or a CSV export? It does not seem to work.¶
+
This feature is based on the gzencode()
+PHP function to be more independent of the platform (Unix/Windows,
+Safe Mode or not, and so on). So, you must have Zlib support
+(--with-zlib).
+
+
+
1.8 I cannot insert a text file in a table, and I get an error about safe mode being in effect.¶
+
Your uploaded file is saved by PHP in the “upload dir”, as defined in
+php.ini by the variable upload_tmp_dir (usually the system
+default is /tmp). We recommend the following setup for Apache
+servers running in safe mode, to enable uploads of files while being
+reasonably secure:
+
+
create a separate directory for uploads: mkdir /tmp/php
+
give ownership to the Apache server’s user.group: chown
+apache.apache /tmp/php
1.10 I’m having troubles when uploading files with phpMyAdmin running on a secure server. My browser is Internet Explorer and I’m using the Apache server.¶
+
As suggested by “Rob M” in the phpWizard forum, add this line to your
+httpd.conf:
It seems to clear up many problems between Internet Explorer and SSL.
+
+
+
1.11 I get an ‘open_basedir restriction’ while uploading a file from the import tab.¶
+
Since version 2.2.4, phpMyAdmin supports servers with open_basedir
+restrictions. However you need to create temporary directory and configure it
+as $cfg['TempDir']. The uploaded files will be moved there,
+and after execution of your SQL commands, removed.
+
+
+
1.12 I have lost my MySQL root password, what can I do?¶
+
phpMyAdmin does authenticate against MySQL server you’re using, so to recover
+from phpMyAdmin password loss, you need to recover at MySQL level.
1.15 I have problems with mysql.user column names.¶
+
In previous MySQL versions, the User and Password columns were
+named user and password. Please modify your column names to
+align with current standards.
+
+
+
1.16 I cannot upload big dump files (memory, HTTP or timeout problems).¶
+
Starting with version 2.7.0, the import engine has been re–written and
+these problems should not occur. If possible, upgrade your phpMyAdmin
+to the latest version to take advantage of the new import features.
+
The first things to check (or ask your host provider to check) are the values
+of max_execution_time, upload_max_filesize, memory_limit and
+post_max_size in the php.ini configuration file. All of these
+settings limit the maximum size of data that can be submitted and handled by
+PHP. Please note that post_max_size needs to be larger than
+upload_max_filesize. There exist several workarounds if your upload is too
+big or your hosting provider is unwilling to change the settings:
+
+
Look at the $cfg['UploadDir'] feature. This allows one to upload a file to the server
+via scp, FTP, or your favorite file transfer method. PhpMyAdmin is
+then able to import the files from the temporary directory. More
+information is available in the Configuration of this document.
+
Using a utility (such as BigDump) to split the files before
+uploading. We cannot support this or any third party applications, but
+are aware of users having success with it.
+
If you have shell (command line) access, use MySQL to import the files
+directly. You can do this by issuing the “source” command from within
+MySQL:
+
sourcefilename.sql;
+
+
+
+
+
+
+
1.17 Which Database versions does phpMyAdmin support?¶
+
For MySQL, versions 5.5 and newer are supported.
+For older MySQL versions, our Downloads page offers older phpMyAdmin versions
+(which may have become unsupported).
+
For MariaDB, versions 5.5 and newer are supported.
+
+
+
1.17a I cannot connect to the MySQL server. It always returns the error message, “Client does not support authentication protocol requested by server; consider upgrading MySQL client”¶
+
You tried to access MySQL with an old MySQL client library. The
+version of your MySQL client library can be checked in your phpinfo()
+output. In general, it should have at least the same minor version as
+your server - as mentioned in 1.17 Which Database versions does phpMyAdmin support?. This problem is
+generally caused by using MySQL version 4.1 or newer. MySQL changed
+the authentication hash and your PHP is trying to use the old method.
+The proper solution is to use the mysqli extension with the proper client library to match
+your MySQL installation. More
+information (and several workarounds) are located in the MySQL
+Documentation.
1.19 I can’t run the “display relations” feature because the script seems not to know the font face I’m using!¶
+
The TCPDF library we’re using for this feature requires some special
+files to use font faces. Please refers to the TCPDF manual to build these files.
+
+
+
1.20 I receive an error about missing mysqli and mysql extensions.¶
+
To connect to a MySQL server, PHP needs a set of MySQL functions
+called “MySQL extension”. This extension may be part of the PHP
+distribution (compiled-in), otherwise it needs to be loaded
+dynamically. Its name is probably mysqli.so or php_mysqli.dll.
+phpMyAdmin tried to load the extension but failed. Usually, the
+problem is solved by installing a software package called “PHP-MySQL”
+or something similar.
+
There was two interfaces PHP provided as MySQL extensions - mysql
+and mysqli. The mysql interface was removed in PHP 7.0.
+
This problem can be also caused by wrong paths in the php.ini or using
+wrong php.ini.
+
Make sure that the extension files do exist in the folder which the
+extension_dir points to and that the corresponding lines in your
+php.ini are not commented out (you can use phpinfo() to check
+current setup):
+
[PHP]
+
+; Directory in which the loadable extensions (modules) reside.
+extension_dir="C:/Apache2/modules/php/ext"
+
+
+
The php.ini can be loaded from several locations (especially on
+Windows), so please check you’re updating the correct one. If using Apache, you
+can tell it to use specific path for this file using PHPIniDir directive:
In some rare cases this problem can be also caused by other extensions loaded
+in PHP which prevent MySQL extensions to be loaded. If anything else fails, you
+can try commenting out extensions for other databases from php.ini.
+
+
+
1.21 I am running the CGI version of PHP under Unix, and I cannot log in using cookie auth.¶
+
In php.ini, set mysql.max_links higher than 1.
+
+
+
1.22 I don’t see the “Location of text file” field, so I cannot upload.¶
+
This is most likely because in php.ini, your file_uploads
+parameter is not set to “on”.
+
+
+
1.23 I’m running MySQL on a Win32 machine. Each time I create a new table the table and column names are changed to lowercase!¶
+
This happens because the MySQL directive lower_case_table_names
+defaults to 1 (ON) in the Win32 version of MySQL. You can change
+this behavior by simply changing the directive to 0 (OFF): Just
+edit your my.ini file that should be located in your Windows
+directory and add the following line to the group [mysqld]:
+
set-variable=lower_case_table_names=0
+
+
+
+
Note
+
Forcing this variable to 0 with –lower-case-table-names=0 on a
+case-insensitive filesystem and access MyISAM tablenames using different
+lettercases, index corruption may result.
+
+
Next, save the file and restart the MySQL service. You can always
+check the value of this directive using the query
as this version of mod_gzip on Apache (Windows) has problems handling
+PHP scripts. Of course you have to restart Apache.
+
+
+
1.26 I just installed phpMyAdmin in my document root of IIS but I get the error “No input file specified” when trying to run phpMyAdmin.¶
+
This is a permission problem. Right-click on the phpmyadmin folder and
+choose properties. Under the tab Security, click on “Add” and select
+the user “IUSR_machine” from the list. Now set their permissions and it
+should work.
+
+
+
1.27 I get empty page when I want to view huge page (eg. db_structure.php with plenty of tables).¶
+
This was caused by a PHP bug that occur when
+GZIP output buffering is enabled. If you turn off it (by
+$cfg['OBGzip'] in config.inc.php), it should work.
+This bug will has been fixed in PHP 5.0.0.
+
+
+
1.28 My MySQL server sometimes refuses queries and returns the message ‘Errorcode: 13’. What does this mean?¶
+
This can happen due to a MySQL bug when having database / table names
+with upper case characters although lower_case_table_names is
+set to 1. To fix this, turn off this directive, convert all database
+and table names to lower case and turn it on again. Alternatively,
+there’s a bug-fix available starting with MySQL 3.23.56 /
+4.0.11-gamma.
+
+
+
1.29 When I create a table or modify a column, I get an error and the columns are duplicated.¶
+
It is possible to configure Apache in such a way that PHP has problems
+interpreting .php files.
+
The problems occur when two different (and conflicting) set of
+directives are used:
+
SetOutputFilter PHP
+SetInputFilter PHP
+
+
+
and
+
AddType application/x-httpd-php .php
+
+
+
In the case we saw, one set of directives was in
+/etc/httpd/conf/httpd.conf, while the other set was in
+/etc/httpd/conf/addon-modules/php.conf. The recommended way is
+with AddType, so just comment out the first set of lines and
+restart Apache:
+
#SetOutputFilter PHP
+#SetInputFilter PHP
+
+
+
+
+
1.30 I get the error “navigation.php: Missing hash”.¶
+
This problem is known to happen when the server is running Turck
+MMCache but upgrading MMCache to version 2.3.21 solves the problem.
Since release 4.5, phpMyAdmin supports only PHP 5.5 and newer. Since release
+4.1 phpMyAdmin supports only PHP 5.3 and newer. For PHP 5.2 you can use 4.0.x
+releases.
+
PHP 7 is supported since phpMyAdmin 4.6, PHP 7.1 is supported since 4.6.5,
+PHP 7.2 is supported since 4.7.4.
+
HHVM is supported up to phpMyAdmin 4.8.
+
Since release 5.0, phpMyAdmin supports only PHP 7.1 and newer.
+Since release 5.2, phpMyAdmin supports only PHP 7.2 and newer.
Yes. This procedure was tested with phpMyAdmin 2.6.1, PHP 4.3.9 in
+ISAPI mode under IIS 5.1.
+
+
In your php.ini file, set cgi.rfc2616_headers=0
+
In WebSiteProperties->File/DirectorySecurity->Anonymous
+Access dialog box, check the Anonymousaccess checkbox and
+uncheck any other checkboxes (i.e. uncheck Basicauthentication,
+IntegratedWindowsauthentication, and Digest if it’s
+enabled.) Click OK.
+
In CustomErrors, select the range of 401;1 through 401;5
+and click the SettoDefault button.
1.34 Can I directly access a database or table pages?¶
+
Yes. Out of the box, you can use a URL like
+http://server/phpMyAdmin/index.php?server=X&db=database&table=table&target=script.
+For server you can use the server number
+which refers to the numeric host index (from $i) in
+config.inc.php. The table and script parts are optional.
+
If you want a URL like
+http://server/phpMyAdmin/database[/table][/script], you need to do some additional configuration. The following
+lines apply only for the Apache web server.
+First, make sure that you have enabled some features within the Apache global
+configuration. You need OptionsSymLinksIfOwnerMatch and AllowOverride
+FileInfo enabled for directory where phpMyAdmin is installed and you
+need mod_rewrite to be enabled. Then you just need to create the
+following .htaccess file in root folder of phpMyAdmin installation (don’t
+forget to change directory name inside of it):
There can be many explanations to this and a look at your server’s
+error log file might give a clue.
+
+
+
1.37 I run phpMyAdmin on cluster of different machines and password encryption in cookie auth doesn’t work.¶
+
If your cluster consist of different architectures, PHP code used for
+encryption/decryption won’t work correctly. This is caused by use of
+pack/unpack functions in code. Only solution is to use openssl
+extension which works fine in this case.
+
+
+
1.38 Can I use phpMyAdmin on a server on which Suhosin is enabled?¶
+
Yes but the default configuration values of Suhosin are known to cause
+problems with some operations, for example editing a table with many
+columns and no primary key or with textual primary key.
+
Suhosin configuration might lead to malfunction in some cases and it
+can not be fully avoided as phpMyAdmin is kind of application which
+needs to transfer big amounts of columns in single HTTP request, what
+is something what Suhosin tries to prevent. Generally all
+suhosin.request.*, suhosin.post.* and suhosin.get.*
+directives can have negative effect on phpMyAdmin usability. You can
+always find in your error logs which limit did cause dropping of
+variable, so you can diagnose the problem and adjust matching
+configuration variable.
+
The default values for most Suhosin configuration options will work in
+most scenarios, however you might want to adjust at least following
+parameters:
To further improve security, we also recommend these modifications:
+
+
suhosin.executor.include.max_traversal should be
+enabled as a mitigation against local file inclusion attacks. We suggest
+setting this to 2 as ../ is used with the ReCaptcha library.
1.39 When I try to connect via https, I can log in, but then my connection is redirected back to http. What can cause this behavior?¶
+
This is caused by the fact that PHP scripts have no knowledge that the site is
+using https. Depending on used webserver, you should configure it to let PHP
+know about URL and scheme used to access it.
+
For example in Apache ensure that you have enabled SSLOptions and
+StdEnvVars in the configuration.
Note: if the backend url looks like http://server/~user/phpmyadmin, the
+tilde (~) must be url encoded as %7E in the ProxyPassReverse* lines.
+This is not specific to phpmyadmin, it’s just the behavior of Apache.
1.41 When I view a database and ask to see its privileges, I get an error about an unknown column.¶
+
The MySQL server’s privilege tables are not up to date, you need to
+run the mysql_upgrade command on the server.
+
+
+
1.42 How can I prevent robots from accessing phpMyAdmin?¶
+
You can add various rules to .htaccess to filter access based on user agent
+field. This is quite easy to circumvent, but could prevent at least
+some robots accessing your installation.
+
RewriteEngineon
+
+# Allow only GET and POST verbs
+RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ [NC,OR]
+
+# Ban Typical Vulnerability Scanners and others
+# Kick out Script Kiddies
+RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
+RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|wkito|pikto|scan|acunetix).* [NC,OR]
+RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
+
+# Ban Search Engines, Crawlers to your administrative panel
+# No reasons to access from bots
+# Ultimately Better than the useless robots.txt
+# Did google respect robots.txt?
+# Try google: intitle:phpMyAdmin intext:"Welcome to phpMyAdmin *.*.*" intext:"Log in" -wiki -forum -forums -questions intext:"Cookies must be enabled"
+RewriteCond %{HTTP_USER_AGENT} ^.*(AdsBot-Google|ia_archiver|Scooter|Ask.Jeeves|Baiduspider|Exabot|FAST.Enterprise.Crawler|FAST-WebCrawler|www\.neomo\.de|Gigabot|Mediapartners-Google|Google.Desktop|Feedfetcher-Google|Googlebot|heise-IT-Markt-Crawler|heritrix|ibm.com\cs/crawler|ICCrawler|ichiro|MJ12bot|MetagerBot|msnbot-NewsBlogs|msnbot|msnbot-media|NG-Search|lucene.apache.org|NutchCVS|OmniExplorer_Bot|online.link.validator|psbot0|Seekbot|Sensis.Web.Crawler|SEO.search.Crawler|Seoma.\[SEO.Crawler\]|SEOsearch|Snappy|www.urltrends.com|www.tkl.iis.u-tokyo.ac.jp/~crawler|SynooBot|crawleradmin.t-info@telekom.de|TurnitinBot|voyager|W3.SiteSearch.Crawler|W3C-checklink|W3C_Validator|www.WISEnutbot.com|yacybot|Yahoo-MMCrawler|Yahoo\!.DE.Slurp|Yahoo\!.Slurp|YahooSeeker).* [NC]
+RewriteRule .* - [F]
+
+
+
+
+
1.43 Why can’t I display the structure of my table containing hundreds of columns?¶
+
Because your PHP’s memory_limit is too low; adjust it in php.ini.
+
+
+
1.44 How can I reduce the installed size of phpMyAdmin on disk?¶
+
Some users have requested to be able to reduce the size of the phpMyAdmin installation.
+This is not recommended and could lead to confusion over missing features, but can be done.
+A list of files and corresponding functionality which degrade gracefully when removed include:
+
+
./vendor/tecnickcom/tcpdf folder (exporting to PDF)
+
./locale/ folder, or unused subfolders (interface translations)
+
Any unused themes in ./themes/
+
./js/vendor/jquery/src/ (included for licensing reasons)
+
./js/line_counts.php (removed in phpMyAdmin 4.8)
+
./doc/ (documentation)
+
./setup/ (setup script)
+
./examples/
+
./sql/ (SQL scripts to configure advanced functionality)
+
./js/vendor/openlayers/ (GIS visualization)
+
+
+
+
1.45 I get an error message about unknown authentication method caching_sha2_password when trying to log in¶
+
When logging in using MySQL version 8 or newer, you may encounter an error message like this:
+
+
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
+
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client
+
+
This error is because of a version compatibility problem between PHP and MySQL. The MySQL project introduced a new authentication
+method (our tests show this began with version 8.0.11) however PHP did not include the ability to use that authentication method.
+PHP reports that this was fixed in PHP version 7.4.
+
Users experiencing this are encouraged to upgrade their PHP installation, however a workaround exists. Your MySQL user account
+can be set to use the older authentication with a command such as
2.1 The error message “Warning: Cannot add header information - headers already sent by …” is displayed, what’s the problem?¶
+
Edit your config.inc.php file and ensure there is nothing (I.E. no
+blank lines, no spaces, no characters…) neither before the <?php tag at
+the beginning, neither after the ?> tag at the end.
+
+
+
2.2 phpMyAdmin can’t connect to MySQL. What’s wrong?¶
+
Either there is an error with your PHP setup or your username/password
+is wrong. Try to make a small script which uses mysql_connect and see
+if it works. If it doesn’t, it may be you haven’t even compiled MySQL
+support into PHP.
+
+
+
2.3 The error message “Warning: MySQL Connection Failed: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (111) …” is displayed. What can I do?¶
+
The error message can also be: Error #2002 - The server is not
+responding (or the local MySQL server’s socket is not correctly configured).
+
First, you need to determine what socket is being used by MySQL. To do this,
+connect to your server and go to the MySQL bin directory. In this directory
+there should be a file named mysqladmin. Type ./mysqladminvariables, and
+this should give you a bunch of info about your MySQL server, including the
+socket (/tmp/mysql.sock, for example). You can also ask your ISP for the
+connection info or, if you’re hosting your own, connect from the ‘mysql’
+command-line client and type ‘status’ to get the connection type and socket or
+port number.
+
Then, you need to tell PHP to use this socket. You can do this for all PHP in
+the php.ini or for phpMyAdmin only in the config.inc.php. For
+example: $cfg['Servers'][$i]['socket'] Please also make sure
+that the permissions of this file allow to be readable by your webserver.
+
On my RedHat-Box the socket of MySQL is /var/lib/mysql/mysql.sock.
+In your php.ini you will find a line
2.4 Nothing is displayed by my browser when I try to run phpMyAdmin, what can I do?¶
+
Try to set the $cfg['OBGzip'] directive to false in the phpMyAdmin configuration
+file. It helps sometime. Also have a look at your PHP version number:
+if it contains “b” or “alpha” it means you’re running a testing
+version of PHP. That’s not a so good idea, please upgrade to a plain
+revision.
+
+
+
2.5 Each time I want to insert or change a row or drop a database or a table, an error 404 (page not found) is displayed or, with HTTP or cookie authentication, I’m asked to log in again. What’s wrong?¶
+
Check your webserver setup if it correctly fills in either PHP_SELF or REQUEST_URI variables.
+
If you are running phpMyAdmin behind reverse proxy, please set the
+$cfg['PmaAbsoluteUri'] directive in the phpMyAdmin
+configuration file to match your setup.
+
+
+
2.6 I get an “Access denied for user: ‘root@localhost’ (Using password: YES)”-error when trying to access a MySQL-Server on a host which is port-forwarded for my localhost.¶
+
When you are using a port on your localhost, which you redirect via
+port-forwarding to another host, MySQL is not resolving the localhost
+as expected. Erik Wasser explains: The solution is: if your host is
+“localhost” MySQL (the command line tool mysql as well) always
+tries to use the socket connection for speeding up things. And that
+doesn’t work in this configuration with port forwarding. If you enter
+“127.0.0.1” as hostname, everything is right and MySQL uses the
+TCP connection.
If you are using Hardened PHP with the ini directive
+varfilter.max_request_variables set to the default (200) or
+another low value, you could get this error if your table has a high
+number of columns. Adjust this setting accordingly. (Thanks to Klaus
+Dorninger for the hint).
+
In the php.ini directive arg_separator.input, a value of “;”
+will cause this error. Replace it with “&;”.
To be able to see a progress bar during your uploads, your server must
+have the uploadprogress extension, and
+you must be running PHP 5.4.0 or higher. Moreover, the JSON extension
+has to be enabled in your PHP.
+
If using PHP 5.4.0 or higher, you must set
+session.upload_progress.enabled to 1 in your php.ini. However,
+starting from phpMyAdmin version 4.0.4, session-based upload progress has
+been temporarily deactivated due to its problematic behavior.
3.1 When using HTTP authentication, a user who logged out can not log in again in with the same nick.¶
+
This is related to the authentication mechanism (protocol) used by
+phpMyAdmin. To bypass this problem: just close all the opened browser
+windows and then go back to phpMyAdmin. You should be able to log in
+again.
+
+
+
3.2 When dumping a large table in compressed mode, I get a memory limit error or a time limit error.¶
+
Compressed dumps are built in memory and because of this are limited
+to php’s memory limit. For gzip/bzip2 exports this can be overcome
+since 2.5.4 using $cfg['CompressOnFly'] (enabled by default).
+zip exports can not be handled this way, so if you need zip files for larger
+dump, you have to use another way.
+
+
+
3.3 With InnoDB tables, I lose foreign key relationships when I rename a table or a column.¶
3.4 I am unable to import dumps I created with the mysqldump tool bundled with the MySQL server distribution.¶
+
The problem is that older versions of mysqldump created invalid
+comments like this:
+
-- MySQL dump 8.22
+--
+-- Host: localhost Database: database
+---------------------------------------------------------
+-- Server version 3.23.54
+
+
+
The invalid part of the code is the horizontal line made of dashes
+that appears once in every dump created with mysqldump. If you want to
+run your dump you have to turn it into valid MySQL. This means, you
+have to add a whitespace after the first two dashes of the line or add
+a # before it: --------------------------------------------------------- or
+#---------------------------------------------------------
+
+
+
3.5 When using nested folders, multiple hierarchies are displayed in a wrong manner.¶
+
Please note that you should not use the separating string multiple
+times without any characters between them, or at the beginning/end of
+your table name. If you have to, think about using another
+TableSeparator or disabling that feature.
3.7 I have table with many (100+) columns and when I try to browse table I get series of errors like “Warning: unable to parse url”. How can this be fixed?¶
+
Your table neither have a primary key nor an unique key, so we must
+use a long expression to identify this row. This causes problems to
+parse_url function. The workaround is to create a primary key
+or unique key.
+
+
+
3.8 I cannot use (clickable) HTML-forms in columns where I put a MIME-Transformation onto!¶
+
Due to a surrounding form-container (for multi-row delete checkboxes),
+no nested forms can be put inside the table where phpMyAdmin displays
+the results. You can, however, use any form inside of a table if keep
+the parent form-container with the target to tbl_row_delete.php and
+just put your own input-elements inside. If you use a custom submit
+input field, the form will submit itself to the displaying page again,
+where you can validate the $HTTP_POST_VARS in a transformation. For
+a tutorial on how to effectively use transformations, see our Link
+section on the
+official phpMyAdmin-homepage.
+
+
+
3.9 I get error messages when using “–sql_mode=ANSI” for the MySQL server.¶
+
When MySQL is running in ANSI-compatibility mode, there are some major
+differences in how SQL is structured (see
+<https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html>). Most important of all, the
+quote-character (“) is interpreted as an identifier quote character and not as
+a string quote character, which makes many internal phpMyAdmin operations into
+invalid SQL statements. There is no
+workaround to this behaviour. News to this item will be posted in issue
+#7383.
+
+
+
3.10 Homonyms and no primary key: When the results of a SELECT display more that one column with the same value (for example SELECTlastnamefromemployeeswherefirstnamelike'A%' and two “Smith” values are displayed), if I click Edit I cannot be sure that I am editing the intended row.¶
+
Please make sure that your table has a primary key, so that phpMyAdmin
+can use it for the Edit and Delete links.
+
+
+
3.11 The number of rows for InnoDB tables is not correct.¶
+
phpMyAdmin uses a quick method to get the row count, and this method only
+returns an approximate count in the case of InnoDB tables. See
+$cfg['MaxExactCount'] for a way to modify those results, but
+this could have a serious impact on performance.
+However, one can easily replace the approximate row count with exact count by
+simply clicking on the approximate count. This can also be done for all tables
+at once by clicking on the rows sum displayed at the bottom.
3.18 When I import a CSV file that contains multiple tables, they are lumped together into a single table.¶
+
There is no reliable way to differentiate tables in CSV format. For the
+time being, you will have to break apart CSV files containing multiple
+tables.
+
+
+
3.19 When I import a file and have phpMyAdmin determine the appropriate data structure it only uses int, decimal, and varchar types.¶
+
Currently, the import type-detection system can only assign these
+MySQL types to columns. In future, more will likely be added but for
+the time being you will have to edit the structure to your liking
+post-import. Also, you should note the fact that phpMyAdmin will use
+the size of the largest item in any given column as the column size
+for the appropriate type. If you know you will be adding larger items
+to that column then you should manually adjust the column sizes
+accordingly. This is done for the sake of efficiency.
+
+
+
3.20 After upgrading, some bookmarks are gone or their content cannot be shown.¶
+
At some point, the character set used to store bookmark content has changed.
+It’s better to recreate your bookmark from the newer phpMyAdmin version.
+
+
+
3.21 I am unable to log in with a username containing unicode characters such as á.¶
+
This can happen if MySQL server is not configured to use utf-8 as default
+charset. This is a limitation of how PHP and the MySQL server interact; there
+is no way for PHP to set the charset before authenticating.
4.1 I’m an ISP. Can I setup one central copy of phpMyAdmin or do I need to install it for each customer?¶
+
Since version 2.0.3, you can setup a central copy of phpMyAdmin for all your
+users. The development of this feature was kindly sponsored by NetCologne GmbH.
+This requires a properly setup MySQL user management and phpMyAdmin
+HTTP or cookie authentication.
4.2 What’s the preferred way of making phpMyAdmin secure against evil access?¶
+
This depends on your system. If you’re running a server which cannot be
+accessed by other people, it’s sufficient to use the directory protection
+bundled with your webserver (with Apache you can use .htaccess files,
+for example). If other people have telnet access to your server, you should use
+phpMyAdmin’s HTTP or cookie authentication features.
+
Suggestions:
+
+
Your config.inc.php file should be chmod660.
+
All your phpMyAdmin files should be chown -R phpmy.apache, where phpmy
+is a user whose password is only known to you, and apache is the group
+under which Apache runs.
+
Follow security recommendations for PHP and your webserver.
+
+
+
+
4.3 I get errors about not being able to include a file in /lang or in /libraries.¶
+
Check php.ini, or ask your sysadmin to check it. The
+include_path must contain “.” somewhere in it, and
+open_basedir, if used, must contain “.” and “./lang” to allow
+normal operation of phpMyAdmin.
+
+
+
4.4 phpMyAdmin always gives “Access denied” when using HTTP authentication.¶
The username/password you specify in the login dialog are invalid.
+
You have already setup a security mechanism for the phpMyAdmin-
+directory, eg. a .htaccess file. This would interfere with phpMyAdmin’s
+authentication, so remove it.
+
+
+
+
4.5 Is it possible to let users create their own databases?¶
+
Starting with 2.2.5, in the user management page, you can enter a
+wildcard database name for a user (for example “joe%”), and put the
+privileges you want. For example, adding SELECT,INSERT,UPDATE,
+DELETE,CREATE,DROP,INDEX,ALTER would let a user create/manage
+their database(s).
+
+
+
4.6 How can I use the Host-based authentication additions?¶
+
If you have existing rules from an old .htaccess file, you can take them and
+add a username between the 'deny'/'allow' and 'from'
+strings. Using the username wildcard of '%' would be a major
+benefit here if your installation is suited to using it. Then you can
+just add those updated lines into the
+$cfg['Servers'][$i]['AllowDeny']['rules'] array.
+
If you want a pre-made sample, you can try this fragment. It stops the
+‘root’ user from logging in from any networks other than the private
+network IP blocks.
+
//block root from logging in except from the private networks
+$cfg['Servers'][$i]['AllowDeny']['order']='deny,allow';
+$cfg['Servers'][$i]['AllowDeny']['rules']=[
+ 'deny root from all',
+ 'allow root from localhost',
+ 'allow root from 10.0.0.0/8',
+ 'allow root from 192.168.0.0/16',
+ 'allow root from 172.16.0.0/12',
+];
+
+
+
+
+
4.7 Authentication window is displayed more than once, why?¶
+
This happens if you are using a URL to start phpMyAdmin which is
+different than the one set in your $cfg['PmaAbsoluteUri']. For
+example, a missing “www”, or entering with an IP address while a domain
+name is defined in the config file.
+
+
+
4.8 Which parameters can I use in the URL that starts phpMyAdmin?¶
+
When starting phpMyAdmin, you can use the db
+and server parameters. This last one can contain
+either the numeric host index (from $i of the configuration file)
+or one of the host names present in the configuration file.
+
For example, to jump directly to a particular database, a URL can be constructed as
+https://example.com/phpmyadmin/?db=sakila.
5.1 I get an out of memory error, and my controls are non-functional, when trying to create a table with more than 14 columns.¶
+
We could reproduce this problem only under Win98/98SE. Testing under
+WinNT4 or Win2K, we could easily create more than 60 columns. A
+workaround is to create a smaller number of columns, then come back to
+your table properties and add the other columns.
+
+
+
5.2 With Xitami 2.5b4, phpMyAdmin won’t process form fields.¶
+
This is not a phpMyAdmin problem but a Xitami known bug: you’ll face
+it with each script/website that use forms. Upgrade or downgrade your
+Xitami server.
+
+
+
5.3 I have problems dumping tables with Konqueror (phpMyAdmin 2.2.2).¶
+
With Konqueror 2.1.1: plain dumps, zip and gzip dumps work ok, except
+that the proposed file name for the dump is always ‘tbl_dump.php’.
+The bzip2 dumps don’t seem to work. With Konqueror 2.2.1: plain dumps
+work; zip dumps are placed into the user’s temporary directory, so
+they must be moved before closing Konqueror, or else they disappear.
+gzip dumps give an error message. Testing needs to be done for
+Konqueror 2.2.2.
+
+
+
5.4 I can’t use the cookie authentication mode because Internet Explorer never stores the cookies.¶
+
MS Internet Explorer seems to be really buggy about cookies, at least
+till version 6.
5.11 Extended-ASCII characters like German umlauts are displayed wrong.¶
+
Please ensure that you have set your browser’s character set to the
+one of the language file you have selected on phpMyAdmin’s start page.
+Alternatively, you can try the auto detection mode that is supported
+by the recent versions of the most browsers.
+
+
+
5.12 Mac OS X Safari browser changes special characters to “?”.¶
+
This issue has been reported by a macOS user, who adds that Chimera,
+Netscape and Mozilla do not have this problem.
5.16 With Internet Explorer, I get “Access is denied” Javascript errors. Or I cannot make phpMyAdmin work under Windows.¶
+
Please check the following points:
+
+
Maybe you have defined your $cfg['PmaAbsoluteUri'] setting in
+config.inc.php to an IP address and you are starting phpMyAdmin
+with a URL containing a domain name, or the reverse situation.
+
Security settings in IE and/or Microsoft Security Center are too high,
+thus blocking scripts execution.
+
The Windows Firewall is blocking Apache and MySQL. You must allow
+HTTP ports (80 or 443) and MySQL
+port (usually 3306) in the “in” and “out” directions.
+
+
+
+
5.17 With Firefox, I cannot delete rows of data or drop a database.¶
+
Many users have confirmed that the Tabbrowser Extensions plugin they
+installed in their Firefox is causing the problem.
Issues have been reported with some combinations of browser
+extensions. To troubleshoot, disable all extensions then clear your
+browser cache to see if the problem goes away.
+
+
+
5.20 I get errors about violating Content Security Policy.¶
+
If you see errors like:
+
Refused to apply inline style because it violates the following Content Security Policy directive
+
+
+
This is usually caused by some software, which wrongly rewrites
+Content Security Policy headers. Usually this is caused by
+antivirus proxy or browser addons which are causing such errors.
+
If you see these errors, try disabling the HTTP proxy in antivirus or disable
+the Content Security Policy rewriting in it. If that doesn’t
+help, try disabling browser extensions.
+
Alternatively it can be also server configuration issue (if the webserver is
+configured to emit Content Security Policy headers, they can
+override the ones from phpMyAdmin).
+
Programs known to cause these kind of errors:
+
+
Kaspersky Internet Security
+
+
+
+
5.21 I get errors about potentially unsafe operation when browsing table or executing SQL query.¶
+
If you see errors like:
+
A potentially unsafe operation has been detected in your request to this site.
+
+
+
This is usually caused by web application firewall doing requests filtering. It
+tries to prevent SQL injection, however phpMyAdmin is tool designed to execute
+SQL queries, thus it makes it unusable.
+
Please allow phpMyAdmin scripts from the web application firewall settings
+or disable it completely for phpMyAdmin path.
6.1 I can’t insert new rows into a table / I can’t create a table - MySQL brings up a SQL error.¶
+
Examine the SQL error with care.
+Often the problem is caused by specifying a wrong column-type. Common
+errors include:
+
+
Using VARCHAR without a size argument
+
Using TEXT or BLOB with a size argument
+
+
Also, look at the syntax chapter in the MySQL manual to confirm that
+your syntax is correct.
+
+
+
6.2 When I create a table, I set an index for two columns and phpMyAdmin generates only one index with those two columns.¶
+
This is the way to create a multi-columns index. If you want two
+indexes, create the first one when creating the table, save, then
+display the table properties and click the Index link to create the
+other index.
Since version 2.2.3, you have a checkbox for each column that can be
+null. Before 2.2.3, you had to enter “null”, without the quotes, as
+the column’s value. Since version 2.5.5, you have to use the checkbox
+to get a real NULL value, so if you enter “NULL” this means you want a
+literal NULL in the column, and not a NULL value (this works in PHP4).
Click on a database or table name in the navigation panel, the properties will
+be displayed. Then on the menu, click “Export”, you can dump the structure, the
+data, or both. This will generate standard SQL statements that can be
+used to recreate your database/table. You will need to choose “Save as file”,
+so that phpMyAdmin can transmit the resulting dump to your station. Depending
+on your PHP configuration, you will see options to compress the dump. See also
+the $cfg['ExecTimeLimit'] configuration variable. For
+additional help on this subject, look for the word “dump” in this document.
+
+
+
6.5 How can I restore (upload) my database or table using a dump? How can I run a “.sql” file?¶
+
Click on a database name in the navigation panel, the properties will
+be displayed. Select “Import” from the list of tabs in the right–hand
+frame (or “SQL” if your phpMyAdmin
+version is previous to 2.7.0). In the “Location of the text file”
+section, type in the path to your dump filename, or use the Browse
+button. Then click Go. With version 2.7.0, the import engine has been
+re–written, if possible it is suggested that you upgrade to take
+advantage of the new features. For additional help on this subject,
+look for the word “upload” in this document.
6.6 How can I use the relation table in Query-by-example?¶
+
Here is an example with the tables persons, towns and countries, all
+located in the database “mydb”. If you don’t have a pma__relation
+table, create it as explained in the configuration section. Then
+create the example tables:
6.10 When creating a privilege, what happens with underscores in the database name?¶
+
If you do not put a backslash before the underscore, this is a
+wildcard grant, and the underscore means “any character”. So, if the
+database name is “john_db”, the user would get rights to john1db,
+john2db … If you put a backslash before the underscore, it means
+that the database name will have a real underscore.
+
+
+
6.11 What is the curious symbol ø in the statistics pages?¶
“Add DROP TABLE” will add a line telling MySQL to drop the table, if it already
+exists during the import. It does NOT drop the table after your
+export, it only affects the import file.
+
“If Not Exists” will only create the table if it doesn’t exist.
+Otherwise, you may get an error if the table name exists but has a
+different structure.
+
“Add AUTO_INCREMENT value” ensures that AUTO_INCREMENT value (if
+any) will be included in backup.
+
“Enclose table and column names with backquotes” ensures that column
+and table names formed with special characters are protected.
+
“Add into comments” includes column comments, relations, and media
+types set in the pmadb in the dump as SQL comments
+(/* xxx */).
+
+
Data:
+
+
“Complete inserts” adds the column names on every INSERT command, for
+better documentation (but resulting file is bigger).
+
“Extended inserts” provides a shorter dump file by using only once the
+INSERT verb and the table name.
“Ignore inserts” treats errors as a warning instead. Again, more info
+is provided in the MySQL manual - INSERT Syntax, but basically with
+this selected, invalid values are adjusted and inserted rather than
+causing the entire statement to fail.
+
+
+
+
6.13 I would like to create a database with a dot in its name.¶
+
This is a bad idea, because in MySQL the syntax “database.table” is
+the normal way to reference a database and table name. Worse, MySQL
+will usually let you create a database with a dot, but then you cannot
+work with it, nor delete it.
6.15 I want to add a BLOB column and put an index on it, but MySQL says “BLOB column ‘…’ used in key specification without a key length”.¶
+
The right way to do this, is to create the column without any indexes,
+then display the table structure and use the “Create an index” dialog.
+On this page, you will be able to choose your BLOB column, and set a
+size to the index, which is the condition to create an index on a BLOB
+column.
+
+
+
6.16 How can I simply move in page with plenty editing fields?¶
+
You can use Ctrl+arrows (Option+Arrows in Safari) for moving on
+most pages with many editing fields (table structure changes, row editing,
+etc.).
+
+
+
6.17 Transformations: I can’t enter my own mimetype! What is this feature then useful for?¶
+
Defining mimetypes is of no use if you can’t put
+transformations on them. Otherwise you could just put a comment on the
+column. Because entering your own mimetype will cause serious syntax
+checking issues and validation, this introduces a high-risk false-
+user-input situation. Instead you have to initialize mimetypes using
+functions or empty mimetype definitions.
+
Plus, you have a whole overview of available mimetypes. Who knows all those
+mimetypes by heart so they can enter it at will?
+
+
+
6.18 Bookmarks: Where can I store bookmarks? Why can’t I see any bookmarks below the query box? What are these variables for?¶
+
You need to have configured the phpMyAdmin configuration storage for using bookmarks
+feature. Once you have done that, you can use bookmarks in the SQL tab.
6.19 How can I create simple LATEX document to include exported table?¶
+
You can simply include table in your LATEX documents,
+minimal sample document should look like following one (assuming you
+have table exported in file table.tex):
+
\documentclass{article}% or any class you want
+\usepackage{longtable}% for displaying table
+\begin{document}% start of document
+\include{table}% including exported table
+\end{document}% end of document
+
+
+
+
+
6.20 I see a lot of databases which are not mine, and cannot access them.¶
+
You have one of these global privileges: CREATE TEMPORARY TABLES, SHOW
+DATABASES, LOCK TABLES. Those privileges also enable users to see all the
+database names. So if your users do not need those privileges, you can remove
+them and their databases list will shorten.
6.21 In edit/insert mode, how can I see a list of possible values for a column, based on some foreign table?¶
+
You have to setup appropriate links between the tables, and also setup
+the “display column” in the foreign table. See 6.6 How can I use the relation table in Query-by-example? for an
+example. Then, if there are 100 values or less in the foreign table, a
+drop-down list of values will be available. You will see two lists of
+values, the first list containing the key and the display column, the
+second list containing the display column and the key. The reason for
+this is to be able to type the first letter of either the key or the
+display column. For 100 values or more, a distinct window will appear,
+to browse foreign key values and choose one. To change the default
+limit of 100, see $cfg['ForeignKeyMaxLimit'].
+
+
+
6.22 Bookmarks: Can I execute a default bookmark automatically when entering Browse mode for a table?¶
+
Yes. If a bookmark has the same label as a table name and it’s not a
+public bookmark, it will be executed.
Click the first row of the range, hold the shift key and click the
+last row of the range. This works everywhere you see rows, for example
+in Browse mode or on the Structure page.
In all places where phpMyAdmin accepts format strings, you can use
+@VARIABLE@ expansion and strftime
+format strings. The expanded variables depend on a context (for
+example, if you haven’t chosen a table, you can not get the table
+name), but the following variables can be used:
6.29 Why can’t I get a chart from my query result table?¶
+
Not every table can be put to the chart. Only tables with one, two or
+three columns can be visualised as a chart. Moreover the table must be
+in a special format for chart script to understand it. Currently
+supported formats can be found in Charts.
An ESRI Shapefile is actually a set of several files, where .shp file
+contains geometry data and .dbf file contains data related to those
+geometry data. To read data from .dbf file you need to have PHP
+compiled with the dBase extension (–enable-dbase). Otherwise only
+geometry data will be imported.
+
To upload these set of files you can use either of the following
+methods:
+
Configure upload directory with $cfg['UploadDir'], upload both .shp and .dbf files with
+the same filename and chose the .shp file from the import page.
+
Create a zip archive with .shp and .dbf files and import it. For this
+to work, you need to set $cfg['TempDir'] to a place where the web server user can
+write (for example './tmp').
+
To create the temporary directory on a UNIX-based system, you can do:
To select relation, click: The display column is shown in pink. To
+set/unset a column as the display column, click the “Choose column to
+display” icon, then click on the appropriate column name.
The Zoom search feature is an alternative to table search feature. It allows
+you to explore a table by representing its data in a scatter plot. You can
+locate this feature by selecting a table and clicking the Search
+tab. One of the sub-tabs in the Table Search page is
+Zoom Search.
+
Consider the table REL_persons in 6.6 How can I use the relation table in Query-by-example? for
+an example. To use zoom search, two columns need to be selected, for
+example, id and town_code. The id values will be represented on one
+axis and town_code values on the other axis. Each row will be
+represented as a point in a scatter plot based on its id and
+town_code. You can include two additional search criteria apart from
+the two fields to display.
+
You can choose which field should be
+displayed as label for each point. If a display column has been set
+for the table (see 6.7 How can I use the “display column” feature?), it is taken as the label unless
+you specify otherwise. You can also select the maximum number of rows
+you want to be displayed in the plot by specifing it in the ‘Max rows
+to plot’ field. Once you have decided over your criteria, click ‘Go’
+to display the plot.
+
After the plot is generated, you can use the
+mouse wheel to zoom in and out of the plot. In addition, panning
+feature is enabled to navigate through the plot. You can zoom-in to a
+certain level of detail and use panning to locate your area of
+interest. Clicking on a point opens a dialogue box, displaying field
+values of the data row represented by the point. You can edit the
+values if required and click on submit to issue an update query. Basic
+instructions on how to use can be viewed by clicking the ‘How to use?’
+link located just above the plot.
+
+
+
6.33 When browsing a table, how can I copy a column name?¶
+
Selecting the name of the column within the browse table header cell
+for copying is difficult, as the columns support reordering by
+dragging the header cells as well as sorting by clicking on the linked
+column name. To copy a column name, double-click on the empty area
+next to the column name, when the tooltip tells you to do so. This
+will show you an input box with the column name. You may right-click
+the column name within this input box to copy it to your clipboard.
Favorite Tables feature is very much similar to Recent Tables feature.
+It allows you to add a shortcut for the frequently used tables of any
+database in the navigation panel . You can easily navigate to any table
+in the list by simply choosing it from the list. These tables are stored
+in your browser’s local storage if you have not configured your
+phpMyAdmin Configuration Storage. Otherwise these entries are stored in
+phpMyAdmin Configuration Storage.
+
IMPORTANT: In absence of phpMyAdmin Configuration Storage, your Favorite
+tables may be different in different browsers based on your different
+selections in them.
+
To add a table to Favorite list simply click on the Gray star in front
+of a table name in the list of tables of a Database and wait until it
+turns to Yellow.
+To remove a table from list, simply click on the Yellow star and
+wait until it turns Gray again.
+
Using $cfg['NumFavoriteTables'] in your config.inc.php
+file, you can define the maximum number of favorite tables shown in the
+navigation panel. Its default value is 10.
With the help of range search feature, one can specify a range of values for
+particular column(s) while performing search operation on a table from the Search
+tab.
+
To use this feature simply click on the BETWEEN or NOT BETWEEN operators
+from the operator select list in front of the column name. On choosing one of the
+above options, a dialog box will show up asking for the Minimum and Maximum
+value for that column. Only the specified range of values will be included
+in case of BETWEEN and excluded in case of NOT BETWEEN from the final results.
+
Note: The Range search feature will work only Numeric and Date data type columns.
+
+
+
6.36 What is Central columns and how can I use this feature?¶
+
As the name suggests, the Central columns feature enables to maintain a central list of
+columns per database to avoid similar name for the same data element and bring consistency
+of data type for the same data element. You can use the central list of columns to
+add an element to any table structure in that database which will save from writing
+similar column name and column definition.
+
To add a column to central list, go to table structure page, check the columns you want
+to include and then simply click on “Add to central columns”. If you want to add all
+unique columns from more than one table from a database then go to database structure page,
+check the tables you want to include and then select “Add columns to central list”.
+
To remove a column from central list, go to Table structure page, check the columns you want
+to remove and then simply click on “Remove from central columns”. If you want to remove all
+columns from more than one tables from a database then go to database structure page,
+check the tables you want to include and then select “Remove columns from central list”.
+
To view and manage the central list, select the database you want to manage central columns
+for then from the top menu click on “Central columns”. You will be taken to a page where
+you will have options to edit, delete or add new columns to central list.
+
+
+
6.37 How can I use Improve Table structure feature?¶
+
Improve table structure feature helps to bring the table structure upto
+Third Normal Form. A wizard is presented to user which asks questions about the
+elements during the various steps for normalization and a new structure is proposed
+accordingly to bring the table into the First/Second/Third Normal form.
+On startup of the wizard, user gets to select upto what normal form they want to
+normalize the table structure.
+
Here is an example table which you can use to test all of the three First, Second and
+Third Normal Form.
The above table is not in First normal Form as no primary key exists. Primary key
+is supposed to be (petName,`ownerLastName`,`ownerFirstName`) . If the primary key
+is chosen as suggested the resultant table won’t be in Second as well as Third Normal
+form as the following dependencies exists.
Which says, OwnerEmail depends on OwnerLastName and OwnerFirstName.
+OwnerPhone depends on OwnerLastName and OwnerFirstName.
+PetType depends on PetBreed.
Some users prefer their AUTO_INCREMENT values to be consecutive; this is not
+always the case after row deletion.
+
Here are the steps to accomplish this. These are manual steps because they
+involve a manual verification at one point.
+
+
Ensure that you have exclusive access to the table to rearrange
+
On your primary key column (i.e. id), remove the AUTO_INCREMENT setting
+
Delete your primary key in Structure > indexes
+
Create a new column future_id as primary key, AUTO_INCREMENT
+
Browse your table and verify that the new increments correspond to what
+you’re expecting
+
Drop your old id column
+
Rename the future_id column to id
+
Move the new id column via Structure > Move columns
+
+
+
+
6.39 What is the “Adjust privileges” option when renaming, copying, or moving a database, table, column, or procedure?¶
+
When renaming/copying/moving a database/table/column/procedure,
+MySQL does not adjust the original privileges relating to these objects
+on its own. By selecting this option, phpMyAdmin will adjust the privilege
+table so that users have the same privileges on the new items.
+
For example: A user ‘bob’@’localhost’ has a ‘SELECT’ privilege on a
+column named ‘id’. Now, if this column is renamed to ‘id_new’, MySQL,
+on its own, would not adjust the column privileges to the new column name.
+phpMyAdmin can make this adjustment for you automatically.
+
Notes:
+
+
While adjusting privileges for a database, the privileges of all
+database-related elements (tables, columns and procedures) are also adjusted
+to the database’s new name.
+
Similarly, while adjusting privileges for a table, the privileges of all
+the columns inside the new table are also adjusted.
+
While adjusting privileges, the user performing the operation must have the following
+privileges:
+
+
SELECT, INSERT, UPDATE, DELETE privileges on following tables:
+mysql.`db`, mysql.`columns_priv`, mysql.`tables_priv`, mysql.`procs_priv`
+
FLUSH privilege (GLOBAL)
+
+
+
+
Thus, if you want to replicate the database/table/column/procedure as it is
+while renaming/copying/moving these objects, make sure you have checked this option.
+
+
+
6.40 I see “Bind parameters” checkbox in the “SQL” page. How do I write parameterized SQL queries?¶
+
From version 4.5, phpMyAdmin allows users to execute parameterized queries in the “SQL” page.
+Parameters should be prefixed with a colon(:) and when the “Bind parameters” checkbox is checked
+these parameters will be identified and input fields for these parameters will be presented.
+Values entered in these field will be substituted in the query before being executed.
+
+
+
6.41 I get import errors while importing the dumps exported from older MySQL versions (pre-5.7.6) into newer MySQL versions (5.7.7+), but they work fine when imported back on same older versions ?¶
+
If you get errors like #1031 - Table storage engine for ‘table_name’ doesn’t have this option
+while importing the dumps exported from pre-5.7.7 MySQL servers into new MySQL server versions 5.7.7+,
+it might be because ROW_FORMAT=FIXED is not supported with InnoDB tables. Moreover, the value of
+innodb_strict_mode would define if this would be reported as a warning or as an error.
+
Since MySQL version 5.7.9, the default value for innodb_strict_mode is ON and thus would generate
+an error when such a CREATE TABLE or ALTER TABLE statement is encountered.
+
There are two ways of preventing such errors while importing:
+
+
Change the value of innodb_strict_mode to OFF before starting the import and turn it ON after
+the import is successfully completed.
+
This can be achieved in two ways:
+
+
Go to ‘Variables’ page and edit the value of innodb_strict_mode
+
Run the query : SET GLOBAL `innodb_strict_mode = ‘[value]’`
+
+
+
+
After the import is done, it is suggested that the value of innodb_strict_mode should be reset to the
+original value.
7.3 I would like to help out with the development of phpMyAdmin. How should I proceed?¶
+
We welcome every contribution to the development of phpMyAdmin. You
+can check out all the possibilities to contribute in the contribute
+section on our website.
8.2 How can I protect phpMyAdmin against brute force attacks?¶
+
If you use Apache web server, phpMyAdmin exports information about
+authentication to the Apache environment and it can be used in Apache
+logs. Currently there are two variables available:
+
+
userID
User name of currently active user (they do not have to be logged in).
+
+
userStatus
Status of currently active user, one of ok (user is logged in),
+mysql-denied (MySQL denied user login), allow-denied (user denied
+by allow/deny rules), root-denied (root is denied in configuration),
+empty-denied (empty password is denied).
+
+
+
LogFormat directive for Apache can look like following:
You can then use any log analyzing tools to detect possible break-in
+attempts.
+
+
+
8.3 Why are there path disclosures when directly loading certain files?¶
+
This is a server configuration problem. Never enable display_errors on a production site.
+
+
+
8.4 CSV files exported from phpMyAdmin could allow a formula injection attack.¶
+
It is possible to generate a CSV file that, when imported to a spreadsheet program such as Microsoft Excel,
+could potentially allow the execution of arbitrary commands.
+
The CSV files generated by phpMyAdmin could potentially contain text that would be interpreted by a spreadsheet program as
+a formula, but we do not believe escaping those fields is the proper behavior. There is no means to properly escape and
+differentiate between a desired text output and a formula that should be escaped, and CSV is a text format where function
+definitions should not be interpreted anyway. We have discussed this at length and feel it is the responsibility of the
+spreadsheet program to properly parse and sanitize such data on input instead.
+ Symbols
+ | A
+ | B
+ | C
+ | D
+ | E
+ | F
+ | G
+ | H
+ | I
+ | J
+ | K
+ | L
+ | M
+ | N
+ | O
+ | P
+ | Q
+ | R
+ | S
+ | T
+ | U
+ | V
+ | W
+ | X
+ | Z
+
+
The definitive guide to using phpMyAdmin is the book Mastering phpMyAdmin for
+Effective MySQL Management by Marc Delisle. You can get information on that
+book and other officially endorsed books at the phpMyAdmin site.
To enable transformations, you have to set up the column_info
+table and the proper directives. Please see the Configuration on how to do so.
+
phpMyAdmin has two different types of transformations: browser display
+transformations, which affect only how the data is shown when browsing
+through phpMyAdmin; and input transformations, which affect a value
+prior to being inserted through phpMyAdmin.
+You can apply different transformations to the contents of each
+column. Each transformation has options to define how it will affect the
+stored data.
+
Say you have a column filename which contains a filename. Normally
+you would see in phpMyAdmin only this filename. Using display transformations
+you can transform that filename into a HTML link, so you can click
+inside of the phpMyAdmin structure on the column’s link and will see
+the file displayed in a new browser window. Using transformation
+options you can also specify strings to append/prepend to a string or
+the format you want the output stored in.
+
For a general overview of all available transformations and their
+options, you can either go to the Change link for an existing column
+or from the dialog to create a new column, in either case there is a link
+on that column structure page for “Browser display transformation” and
+“Input transformation” which will show more information about each
+transformation that is available on your system.
+
For a tutorial on how to effectively use transformations, see our
+Link section on the
+official phpMyAdmin homepage.
Go to the table structure page (reached by clicking on
+the ‘Structure’ link for a table). There click on “Change” (or the change
+icon) and there you will see the five transformation–related fields at the end of the line.
+They are called ‘Media type’, ‘Browser transformation’ and
+‘Transformation options’.
+
+
The field ‘Media type’ is a drop-down field. Select the Media type that
+corresponds to the column’s contents. Please note that many transformations
+are inactive until a Media type is selected.
+
The field ‘Browser display transformation’ is a drop-down field. You can
+choose from a hopefully growing amount of pre-defined transformations.
+See below for information on how to build your own transformation.
+There are global transformations and mimetype-bound transformations.
+Global transformations can be used for any mimetype. They will take
+the mimetype, if necessary, into regard. Mimetype-bound
+transformations usually only operate on a certain mimetype. There are
+transformations which operate on the main mimetype (like ‘image’),
+which will most likely take the subtype into regard, and those who
+only operate on a specific subtype (like ‘image/jpeg’). You can use
+transformations on mimetypes for which the function was not defined
+for. There is no security check for you selected the right
+transformation, so take care of what the output will be like.
+
The field ‘Browser display transformation options’ is a free-type textfield. You have
+to enter transform-function specific options here. Usually the
+transforms can operate with default options, but it is generally a
+good idea to look up the overview to see which options are necessary.
+Much like the ENUM/SET-Fields, you have to split up several options
+using the format ‘a’,’b’,’c’,…(NOTE THE MISSING BLANKS). This is
+because internally the options will be parsed as an array, leaving the
+first value the first element in the array, and so forth. If you want
+to specify a MIME character set you can define it in the
+transformation_options. You have to put that outside of the pre-
+defined options of the specific mime-transform, as the last value of
+the set. Use the format “’; charset=XXX’”. If you use a transform, for
+which you can specify 2 options and you want to append a character
+set, enter “‘first parameter’,’second parameter’,’charset=us-ascii’”.
+You can, however use the defaults for the parameters: “’’,’’,’charset
+=us-ascii’”. The default options can be configured using
+$cfg['DefaultTransformations'].
+
‘Input transformation’ is another drop-down menu that corresponds exactly
+with the instructions above for “Browser display transformation” except
+these these affect the data before insertion in to the database. These are
+most commonly used to either provide a specialized editor (for example, using
+the phpMyAdmin SQL editor interface) or selector (such as for uploading an image).
+It’s also possible to manipulate the data such as converting an IPv4 address to binary
+or parsing it through a regular expression.
+
Finally, ‘Input transformation options’ is the equivalent of the “Browser display
+transformation options” section above and is where optional and required parameters are entered.
All specific transformations for mimetypes are defined through class
+files in the directory libraries/classes/Plugins/Transformations/. Each of
+them extends a certain transformation abstract class declared in
+libraries/classes/Plugins/Transformations/Abs.
+
They are stored in files to ease customization and to allow easy adding of
+new or custom transformations.
+
Because the user cannot enter their own mimetypes, it is kept certain that
+the transformations will always work. It makes no sense to apply a
+transformation to a mimetype the transform-function doesn’t know to
+handle.
+
There is a file called libraries/classes/Plugins/Transformations.php that provides some
+basic functions which can be included by any other transform function.
+
The file name convention is [Mimetype]_[Subtype]_[Transformation
+Name].php, while the abstract class that it extends has the
+name [TransformationName]TransformationsPlugin. All of the
+methods that have to be implemented by a transformations plug-in are:
+
+
getMIMEType() and getMIMESubtype() in the main class;
+
getName(), getInfo() and applyTransformation() in the abstract class
+it extends.
+
+
The getMIMEType(), getMIMESubtype() and getName() methods return the
+name of the MIME type, MIME Subtype and transformation accordingly.
+getInfo() returns the transformation’s description and possible
+options it may receive and applyTransformation() is the method that
+does the actual work of the transformation plug-in.
+
Please see the libraries/classes/Plugins/Transformations/TEMPLATE and
+libraries/classes/Plugins/Transformations/TEMPLATE_ABSTRACT files for adding
+your own transformation plug-in. You can also generate a new
+transformation plug-in (with or without the abstract transformation
+class), by using
+scripts/transformations_generator_plugin.sh or
+scripts/transformations_generator_main_class.sh.
+
The applyTransformation() method always gets passed three variables:
+
+
$buffer - Contains the text inside of the column. This is the
+text, you want to transform.
+
$options - Contains any user-passed options to a transform
+function as an array.
+
$meta - Contains an object with information about your column. The
+data is drawn from the output of the mysql_fetch_field() function. This means, all
+object properties described on the manual page are available in this
+variable and can be used to transform a column accordingly to
+unsigned/zerofill/not_null/… properties. The $meta->mimetype
+variable contains the original Media type of the column (i.e.
+‘text/plain’, ‘image/jpeg’ etc.)
This document is intended to give pieces of advice to people who want to
+redistribute phpMyAdmin inside other software packages such as Linux
+distribution or some all in one package including web server and MySQL
+server.
+
Generally, you can customize some basic aspects (paths to some files and
+behavior) in libraries/vendor_config.php.
+
For example, if you want setup script to generate a config file in var, change
+SETUP_CONFIG_FILE to /var/lib/phpmyadmin/config.inc.php and you
+will also probably want to skip directory writable check, so set
+SETUP_DIR_WRITABLE to false.
phpMyAdmin includes several external libraries, you might want to
+replace them with system ones if they are available, but please note
+that you should test whether the version you provide is compatible with the
+one we ship.
+
Currently known list of external libraries:
+
+
js/vendor
jQuery js framework libraries and various js libraries.
+
+
vendor/
The download kit includes various Composer packages as
+dependencies.