# FAQ - Frequently Asked Questions?

## Server?

### 1.12 I have lost my MySQL root password, what can I do??

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 Passwordcolumns 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 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. One user also said that post_max_size and memory_limit need 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 MySQL versions does phpMyAdmin support?? Since phpMyAdmin 3.0.x, only MySQL 5.0.1 and newer are supported. For older MySQL versions, you need to use the latest 2.x branch. phpMyAdmin can connect to your MySQL server using PHP’s classic MySQL extension as well as the improved MySQL extension (MySQLi) that is available in PHP 5.0. The latter one should be used unless you have a good reason not to do so. When compiling PHP, we strongly recommend that you manually link the MySQL extension of your choice to a MySQL client library of at least the same minor version since the one that is bundled with some PHP distributions is rather old and might cause problems see 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”. MariaDB is also supported (versions 5.1 and 5.2 were tested). Changed in version 3.5: Since phpMyAdmin 3.5 Drizzle is 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 MySQL 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. ### 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  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??

Be sure that you have enabled SSLOptions and StdEnvVars in your Apache configuration.

<http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#ssloptions>

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

Themes are configured with $cfg['ThemePath'],$cfg['ThemeManager'] and $cfg['ThemeDefault']. Under$cfg['ThemePath'], you should not delete the directory pmahomme or its underlying structure, because this is the system theme used by phpMyAdmin. pmahomme contains all images and styles, for backwards compatibility and for all themes that would not include images or css-files. If $cfg['ThemeManager'] is enabled, you can select your favorite theme on the main page. Your selected theme will be stored in a cookie. To create a theme: • make a new subdirectory (for example “your_theme_name”) under$cfg['ThemePath'] (by default themes)
• copy the files and directories from pmahomme to “your_theme_name”
• edit the css-files in “your_theme_name/css”
• put your new images in “your_theme_name/img”
• edit layout.inc.php in “your_theme_name”
• edit info.inc.php in “your_theme_name” to contain your chosen theme name, that will be visible in user interface
• make a new screenshot of your theme and save it under “your_theme_name/screen.png”

In theme directory there is file info.inc.php which contains theme verbose name, theme generation and theme version. These versions and generations are enumerated from 1 and do not have any direct dependence on phpMyAdmin version. Themes within same generation should be backwards compatible - theme with version 2 should work in phpMyAdmin requiring version 1. Themes with different generation are incompatible.

If you do not want to use your own symbols and buttons, remove the directory “img” in “your_theme_name”. phpMyAdmin will use the default icons and buttons (from the system-theme pmahomme).

### 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 <http://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 one, 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 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.

## 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',
);


## 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’. 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.5 In Internet Explorer 5.0, I get JavaScript errors when browsing my rows.?

Upgrade to at least Internet Explorer 5.5 SP2.

### 5.6 In Internet Explorer 5.0, 5.5 or 6.0, I get an error (like “Page not found”) when trying to modify a row in a table with many columns, or with a text column.?

Your table neither have a primary key nor an unique one, so we must use a long URL to identify this row. There is a limit on the length of the URL in those browsers, and this not happen in Netscape, for example. The workaround is to create a primary or unique key, or use another browser.

### 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.10 With Netscape 4.75 I get empty rows between each row of data in a CSV exported file.?

This is a known Netscape 4.75 bug: it adds some line feeds when exporting data in octet-stream mode. Since we can’t detect the specific Netscape version, we cannot workaround this bug.

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

### 5.13 With Internet Explorer 5.5 or 6, and HTTP authentication type, I cannot manage two servers: I log in to the first one, then the other one, but if I switch back to the first, I have to log in on each operation.?

This is a bug in Internet Explorer, other browsers do not behave this way.

### 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:

CREATE TABLE REL_countries (
country_code char(1) NOT NULL default '',
description varchar(10) NOT NULL default '',
PRIMARY KEY (country_code)
) TYPE=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)
) TYPE=MyISAM;

INSERT INTO REL_persons VALUES (11, 'Marc', 'S', '');
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)
) TYPE=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.

### 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! WTF is this feature then useful for??

Slow down :). 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 is this variable for??

Any query you have executed can be stored as a bookmark on the page where the results are displayed. You will find a button labeled ‘Bookmark this query’ just at the end of the page. As soon as you have stored a bookmark, it is related to the database you run the query on. You can now access a bookmark dropdown on each page, the query box appears on for that database.

You can also have, inside the query, a placeholder for a variable. This is done by inserting into the query a SQL comment between /* and */. Inside the comment, the special string [VARIABLE] is used. Be aware that the whole query minus the SQL comment must be valid by itself, otherwise you won’t be able to store it as a bookmark.

When you execute the bookmark, everything typed into the value input box on the query box page will replace the string /*[VARIABLE]*/ in your stored query.

Also remember, that everything else inside the /*[VARIABLE]*/ string for your query will remain the way it is, but will be stripped of the /**/ chars. So you can use:

/*, [VARIABLE] AS myname */


which will be expanded to

, VARIABLE as myname


in your query, where VARIABLE is the string you entered in the input box. If an empty string is provided, no replacements are made.

A more complex example. Say you have stored this query:

SELECT Name, Address FROM addresses WHERE 1 /* AND Name LIKE '%[VARIABLE]%' */


Say, you now enter “phpMyAdmin” as the variable for the stored query, the full query will be:

SELECT Name, Address FROM addresses WHERE 1 AND Name LIKE '%phpMyAdmin%'


You can use multiple occurrences of /*[VARIABLE]*/ in a single query (that is, multiple occurrences of the same variable).

NOTE THE ABSENCE OF SPACES inside the /**/ construct. Any spaces inserted there will be later also inserted as spaces in your query and may lead to unexpected results especially when using the variable expansion inside of a “LIKE ‘’” expression.

Your initial query which is going to be stored as a bookmark has to yield at least one result row so you can store the bookmark. You may have that to work around using well positioned /**/ comments.

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

<http://bugs.mysql.com/179>

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

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

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

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

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

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

## Security?

### 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 (he does 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:

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.