Server¶

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.

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).¶

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 three 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: source filename.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.18 (withdrawn).¶ 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 are currently two interfaces PHP provides as MySQL extensions - mysql and mysqli. The mysqli is tried first, because it’s the best one. 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: LoadFile "C:/php/php5ts.dll" LoadModule php5_module "C:/php/php5apache2_2.dll" <IfModule php5_module> PHPIniDir "C:/PHP" <Location> AddType text/html .php AddHandler application/x-httpd-php .php </Location> </IfModule>  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 databses from php.ini. 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 SHOW VARIABLES LIKE 'lower_case_table_names';  1.24 (withdrawn).¶ 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: # 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.

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 his permissions and it should work.

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.

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.

RewriteEngine on

# Allow only GET and POST verbs

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.

2.7 Using and creating themes¶

See Custom Themes.

2.8 I get “Missing parameters” errors, what can I do?¶

Here are a few points to check:

3.3 With InnoDB tables, I lose foreign key relationships when I rename a table or a column.¶

This is an InnoDB bug, see <https://bugs.mysql.com/bug.php?id=21704>.

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.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.

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.

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.

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.

ISPs, multi-user installations¶

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 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.

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.

This could happen for several reasons:

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 his/her 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'] = array(
'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',
);


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.

Changed in version 4.9.0: Support for using the pma_username and pma_password parameters was removed in phpMyAdmin 4.9.0 (see PMASA-2019-4).

Browsers or client OS¶

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.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.

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.

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).

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 Mac OS X user, who adds that Chimera, Netscape and Mozilla do not have this problem.

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.

Note: For errors while importing of dumps exported from older MySQL versions to newer MySQL versions, please check 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 ?.

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:

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”, “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:

• 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”

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 6.21 In edit/insert mode, how can I see a list of possible values for a column, based on some foreign table? for an additional feature that “display column” enables: drop-down list of possible values.

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. Then you need to think about your schema layout. Which tables will go on which pages?

• Choose “Operations” in the navigation bar at the top.
• Choose “Edit PDF Pages” near the bottom of the page.
• Enter a name for the first PDF page and click Go. If you like, you can use the “automatic layout,” which will put all your linked tables onto the new page.
• Select the name of the new page (making sure the Edit radio button is selected) and click Go.
• Select a table from the list, enter its coordinates and click Save. Coordinates are relative; your diagram will be automatically scaled to fit the page. When initially placing tables on the page, just pick any coordinates – say, 50x50. After clicking Save, you can then use the 6.28 How can I easily edit relational schema for export? to position the element correctly.
• When you’d like to look at your PDF, first be sure to click the Save button beneath the list of tables and coordinates, to save any changes you made there. Then scroll all the way down, select the PDF options you want, and click Go.
• Internet Explorer for Windows may suggest an incorrect filename when you try to save a generated PDF. When saving a generated PDF, be sure that the filename ends in “.pdf”, for example “schema.pdf”. Browsers on other operating systems, and other browsers on Windows, do not have this problem.

Relations

6.9 phpMyAdmin is changing the type of one of my columns!¶

No, it’s MySQL that is doing silent column type changing.

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?¶

It means “average”.

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.

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.

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 he/she 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.

Bookmarks

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.