Rev Author Line No. Line
250 kaklik 1  
2 -------------------------------------------------------------------------------
3 Top - Requirements - Introduction - Installation - Setup script -
4 Configuration
5 Transformations - FAQ - Developers - Credits - Translators
6 -------------------------------------------------------------------------------
7  
8 phpMyAdmin 2.8.2.4 Documentation
9  
10 * SourceForge phpMyAdmin project page [ http://www.phpmyadmin.net/ ]
11 * Local documents:
12 + Version history: ChangeLog
13 + General notes: README
14 + License: LICENSE
15 * Documentation version: $Id: Documentation.html,v 2.205.2.21.2.5 2006/08/22
16 17:00:29 lem9 Exp $
17  
18  
19 Requirements
20  
21 * PHP
22 + You need PHP 4.1.0 or newer, with session support (*)
23 + You need GD2 support in PHP to display inline thumbnails of JPEGs
24 ("image/jpeg: inline") with their original aspect ratio
25 + You need PHP 4.3.0 or newer to use the "text/plain: external"
26 MIME-based transformation
27 * MySQL 3.23.32 or newer (details);
28 * Not really a requirement but a strong suggestion: if you are using the
29 "cookie" authentication method, having the mcrypt PHP extension on your web
30 server accelerates not only the login phase but every other action that you
31 do in phpMyAdmin.
32 * Web browser with cookies enabled.
33  
34  
35 Introduction
36  
37 phpMyAdmin can manage a whole MySQL server (needs a super-user) as well as a
38 single database. To accomplish the latter you'll need a properly set up MySQL
39 user who can read/write only the desired database. It's up to you to look up
40 the appropriate part in the MySQL manual.
41 Currently phpMyAdmin can:
42  
43 * easily browse through databases and tables
44 * create, copy, rename, alter and drop databases
45 * create, copy, rename, alter and drop tables
46 * do table maintenance
47 * add, edit and drop fields
48 * execute any SQL-statement, even multiple queries
49 * create, alter and drop indexes
50 * load text files into tables
51 * create (*) and read dumps of tables or databases
52 * export (*) data to SQL, CSV, XML, Word, Excel, PDF and Latex formats
53 * administer multiple servers
54 * manage MySQL users and privileges
55 * check server settings and runtime information with configuration hints
56 * check referential integrity in MyISAM tables
57 * using Query-by-example (QBE), create complex queries automatically
58 connecting required tables
59 * create PDF graphics of your Database layout
60 * search globally in a database or a subset of it
61 * transform stored data into any format using a set of predefined functions,
62 like displaying BLOB-data as image or download-link
63 * support InnoDB tables and foreign keys (see FAQ 3.6)
64 * support mysqli, the improved MySQL extension (see FAQ 1.17)
65 * communicate in 50 different languages
66  
67 A word about users:
68  
69 Many people have difficulty understanding the concept of user management with
70 regards to phpMyAdmin. When a user logs in to phpMyAdmin, that username and
71 password are passed directly to MySQL. phpMyAdmin does no account management on
72 its own (other than allowing one to manipulate the MySQL user account
73 information); all users must be valid MySQL users.
74  
75 ^1) phpMyAdmin can compress (Zip, GZip -RFC 1952- or Bzip2 formats) dumps and
76 CSV exports if you use PHP with Zlib support (--with-zlib) and/or Bzip2 support
77 (--with-bz2). Proper support may also need changes in php.ini.
78  
79  
80 Installation
81  
82 NOTE: phpMyAdmin does not apply any special security methods to the MySQL
83 database server. It is still the system administrator's job to grant
84 permissions on the MySQL databases properly. phpMyAdmin's "Privileges" page can
85 be used for this.
86  
87 Warning for Mac users:if you are on a MacOS version before OS X, StuffIt
88 unstuffs with Mac formats.
89 So you'll have to resave as in BBEdit to Unix style ALL phpMyAdmin scripts
90 before uploading them to your server, as PHP seems not to like Mac-style end of
91 lines character ("\r").
92  
93 Quick Install
94  
95 1. Untar or unzip the distribution (be sure to unzip the subdirectories): tar
96 -xzvf phpMyAdmin_x.x.x.tar.gz in your webserver's document root. If you
97 don't have direct access to your document root, put the files in a
98 directory on your local machine, and, after step 3, transfer the directory
99 on your web server using, for example, ftp.
100 2. Ensure that all the scripts have the appropriate owner (if PHP is running
101 in safe mode, having some scripts with an owner different from the owner of
102 other scripts will be a problem). See FAQ 4.2 and FAQ 1.26 for suggestions.
103 3. Now you must configure your installation. There are two methods that can be
104 used. Traditionally, users have hand-edited a copy of config.inc.php, but
105 now a wizard-style setup script is provided for those who prefer a
106 graphical installation. Creating a config.inc.php is still a quick way to
107 get started and needed for some advanced features.
108 + To manually create the file, simply use your text editor to create the
109 file config.inc.php in the main (top-level) phpMyAdmin directory (the
110 one that contains index.php). phpMyAdmin first loads libraries/
111 config.default.php and then overrides those values with anything found
112 in config.inc.php. If the default value is okay for a particular
113 setting, there is no need to include it in config.inc.php. You'll need
114 a few directives to get going, a simple configuration may look like
115 this:
116  
117 <?php
118 $cfg['blowfish_secret'] = 'ba17c1ec07d65003'; // use here a value of your choice
119  
120 $i=0;
121 $i++;
122 $cfg['Servers'][$i]['auth_type'] = 'cookie';
123 ?>
124  
125 Or, if you prefer to not be prompted every time you log in:
126  
127 <?php
128  
129 $i=0;
130 $i++;
131 $cfg['Servers'][$i]['user'] = 'root';
132 $cfg['Servers'][$i]['password'] = 'cbb74bc'; // use here your password
133 ?>
134  
135 For a full explanation of possible configuration values, see the
136 Configuration Section of this document.
137 + Instead of manually editing config.inc.php, you can use the Setup
138 Script. First you must manually create a folder config in the
139 phpMyAdmin directory. This is a security measure. On a Linux/Unix
140 system you can use the following commands:
141  
142 cd phpMyAdmin
143 mkdir config # create directory for saving
144 chmod o+rw config # give it world writable permissions
145  
146 And to edit an existing configuration, copy it over first:
147  
148 cp config.inc.php config/ # copy current configuration for editing
149 chmod o+w config/config.inc.php # give it world writable permissions
150  
151 On other platforms, simply create the folder and ensure that your web
152 server has read and write access to it. FAQ 1.26 can help with this.
153  
154 Next, open scripts/setup.php in your browser. Note that changes are not
155 saved to disk until explicitly choose Save from the Configuration area
156 of the screen. Normally the script saves the new config.inc.php to the
157 config/ directory, but if the webserver does not have the proper
158 permissions you may see the error "Cannot load or save configuration."
159 Ensure that the config/ directory exists and has the proper permissions
160 - or use the Download link to save the config file locally and upload
161 (via FTP or some similar means) to the proper location.
162  
163 Once the file has been saved, it must be moved out of the config/
164 directory and the permissions must be reset, again as a security
165 measure:
166  
167 mv config/config.inc.php . # move file to current directory
168 chmod o-rw config.inc.php # remove world read and write permissions
169  
170 Now the file is ready to be used. You can choose to review or edit the
171 file with your favorite editor, if you prefer to set some advanced
172 options which the setup script does not provide.
173 4. If you are using the auth_type configuration directive, it is suggested
174 that you protect the phpMyAdmin installation directory, for example with
175 HTTP?AUTH in a .htaccess file. See the multi?user sub?section of this FAQ
176 for additional information, especially FAQ 4.4.
177 5. Open the main phpMyAdmin directory in your browser. phpMyAdmin should now
178 display a welcome screen and your databases, or a login dialog if using
179 HTTP or cookie authentication mode.
180 6. You should deny access to the libraries subfolder in your webserver
181 configuration. For Apache you can use supplied .htaccess file in that
182 folder, for other webservers, you should configure this yourself. Such
183 configuration prevents from possible path exposure and cross side scripting
184 vulnerabilities that might happen to be found in that code.
185  
186 Linked-tables infrastructure
187  
188 For a whole set of new features (bookmarks, comments, SQL-history,
189 PDF-generation, field contents transformation, etc.) you need to create a set
190 of special tables. Those tables can be located in your own database, or in a
191 central database for a multi-user installation (this database would then be
192 accessed by the controluser, so no other user should have rights to it).
193  
194 Please look at your scripts/ directory, where you should find a file called
195 create_tables.sql. (If you are using a Windows server, pay special attention to
196 FAQ 1.23).
197  
198 If your MySQL server's version is 4.1.2 or later, please use
199 create_tables_mysql_4_1_2+.sql instead, for a new installation.
200  
201 If you already had this infrastructure and upgraded to MySQL 4.1.2 or later,
202 please use upgrade_tables_mysql_4_1_2+.sql.
203  
204 You can use your phpMyAdmin to create the tables for you. Please be aware that
205 you may need special (administrator) privileges to create the database and
206 tables, and that the script may need some tuning, depending on the database
207 name.
208  
209 After having imported the create_tables.sql file, you should specify the table
210 names in your config.inc.php file. The directives used for that can be found in
211 the Configuration section. You will also need to have a controluser with the
212 proper rights to those tables (see section Using authentication modes below).
213  
214 Upgrading from an older version
215  
216 Simply copy ./config.inc.php from your previous installation into the newly
217 unpacked one. Configuration files from very old versions (2.3.0 or older) may
218 require some tweaking as some options have been changed or removed.
219  
220 You should not copy libraries/config.default.php over config.inc.php because
221 the default configuration file is version-specific.
222  
223 If you have upgraded your MySQL server from a version older than 4.1.2 to
224 version 4.1.2 or newer and if you use the pmadb/linked table infrastructure,
225 you should run the SQL script found in scripts/upgrade_tables_mysql_4_1_2+.sql.
226  
227 Using authentication modes
228  
229 * HTTP and cookie authentication modes are recommended in a multi-user
230 environment where you want to give users access to their own database and
231 don't want them to play around with others.
232 Nevertheless be aware that MS Internet Explorer seems to be really buggy
233 about cookies, at least till version 6. And PHP 4.1.1 is also a bit buggy
234 in this area!
235 Even in a single-user environment, you might prefer to use HTTP or cookie
236 mode so that your user/password pair are not in clear in the configuration
237 file.
238  
239 * HTTP and cookie authentication modes are more secure: the MySQL login
240 information does not need to be set in the phpMyAdmin configuration file
241 (except possibly for the controluser).
242 However, keep in mind that the password travels in plain text, unless you
243 are using the HTTPS protocol.
244 In cookie mode, the password is stored, encrypted with the blowfish
245 algorithm, in a temporary cookie.
246  
247 * Note: starting with phpMyAdmin 2.6.1, this section is only applicable if
248 your MySQL server is older than 4.1.2, or is running with
249 --skip-show-database.
250  
251 For 'HTTP' and 'cookie' modes, phpMyAdmin needs a controluser that has only
252 the SELECT privilege on the mysql.user (all columns except "Password"),
253 mysql.db (all columns), mysql.host (all columns) and mysql.tables_priv (all
254 columns except "Grantor" & "Timestamp") tables.
255 You must specify the details for the controluser in the config.inc.php file
256 under the $cfg['Servers'][$i]['controluser']& $cfg['Servers'][$i]
257 ['controlpass'] settings.
258 The following example assumes you want to use pma as the controluser and
259 pmapass as the controlpass, but this is only an example: use something else
260 in your file!
261 Of course you have to replace localhost by the webserver's host if it's not
262 the same as the MySQL server's one.
263  
264  
265 GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
266 GRANT SELECT (
267 Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
268 Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
269 File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
270 Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
271 Execute_priv, Repl_slave_priv, Repl_client_priv
272 ) ON mysql.user TO 'pma'@'localhost';
273 GRANT SELECT ON mysql.db TO 'pma'@'localhost';
274 GRANT SELECT ON mysql.host TO 'pma'@'localhost';
275 GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
276 ON mysql.tables_priv TO 'pma'@'localhost';
277  
278  
279 If you are using an old MySQL version (below 4.0.2), please replace the
280 first GRANT SELECT query by this one:
281  
282  
283 GRANT SELECT (
284 Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
285 Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
286 File_priv, Grant_priv, References_priv, Index_priv, Alter_priv
287 ) ON mysql.user TO 'pma'@'localhost';
288  
289  
290 ... and if you want to use the many new relation and bookmark features:
291  
292  
293 GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
294  
295  
296 (this of course requires that your linked-tables infrastructure be set up).
297 Of course, the above queries only work if your MySQL version supports the
298 GRANT command. This is the case since 3.22.11.
299 * Then each of the true users should be granted a set of privileges on a set
300 of particular databases. Normally you shouldn't give global privileges to
301 an ordinary user, unless you understand the impact of those privileges (for
302 example, you are creating a superuser).
303 For example, to grant the user real_user with all privileges on the
304 database user_base:
305 GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED
306 BY 'real_password';
307 What the user may now do is controlled entirely by the MySQL user
308 management system.
309 With HTTP or cookie authentication mode, you don't need to fill the user/
310 password fields inside the $cfg['Servers'] array.
311  
312 'http' authentication mode
313  
314 * Was called 'advanced' in versions before 2.2.3.
315 * Introduced in 1.3.0, it uses Basic HTTP authentication method and allows
316 you to login as any valid MySQL user.
317 * Is supported with most PHP configurations. For IIS (ISAPI) support using
318 CGI PHP see FAQ 1.32, for using with Apache CGI see FAQ 1.35.
319 * See also FAQ 4.4 about not using the .htaccess mechanism along with 'http'
320 authentication mode.
321  
322 'cookie' authentication mode
323  
324 * You can use this method as a replacement for the HTTP authentication (for
325 example, if you're running IIS).
326 * Obviously, the user must enable cookies in the browser.
327 * With this mode, the user can truly logout of phpMyAdmin and login back with
328 the same username.
329 * If you want to login to arbitrary server see $cfg['AllowArbitraryServer']
330 directive.
331 * As mentioned in the requirements section, having the mcrypt extension will
332 speed up access considerably, but is not required.
333  
334 'config' authentication mode
335  
336 * This mode is the less secure one because it requires you to fill the $cfg
337 ['Servers'][$i]['user'] and $cfg['Servers'][$i]['password'] fields (and as
338 a result, anyone who can read your config.inc.php can discover your
339 username and password).
340 But you don't need to setup a "controluser" here: using the $cfg['Servers']
341 [$i]['only_db'] might be enough.
342 * In the ISP FAQ section, there is an entry explaining how to protect your
343 configuration file.
344 * For additional security in this mode, you may wish to consider the Host
345 authentication $cfg['Servers'][$i]['AllowDeny']['order'] and $cfg
346 ['Servers'][$i]['AllowDeny']['rules'] configuration directives.
347  
348  
349 Configuration
350  
351 Warning for Mac users: PHP does not seem to like Mac end of lines character ("\
352 r"). So ensure you choose the option that allows to use the *nix end of line
353 character ("\n") in your text editor before saving a script you have modified.
354  
355 Configuration note: Almost all configurable data is placed in config.inc.php.
356 If this file does not exist, please refer to the Quick install section to
357 create one. This file only needs to contain the parameters you want to change
358 from their corresponding default value in libraries/config.default.php.
359  
360 The parameters which relate to design (like colors) are placed in themes/
361 themename/layout.inc.php. You might also want to create config.footer.inc.php
362 and config.header.inc.php files to add your site specific code to be included
363 on start and end of each page.
364  
365 $cfg[PmaAbsoluteUri] string
366 Sets here the complete URL (with full path) to your phpMyAdmin
367 installation's directory. E.g. http://www.your_web.net/
368 path_to_your_phpMyAdmin_directory/. Note also that the URL on some web
369 servers are case?sensitive. Don?t forget the trailing slash at the end.
370  
371 Starting with version 2.3.0, it is advisable to try leaving this blank. In
372 most cases phpMyAdmin automatically detects the proper setting. Users of
373 port forwarding will need to set PmaAbsoluteUri (more info). A good test is
374 to browse a table, edit a row and save it. There should be an error message
375 if phpMyAdmin is having trouble auto?detecting the correct value. If you
376 get an error that this must be set or if the autodetect code fails to
377 detect your path, please post a bug report on our bug tracker so we can
378 improve the code.
379 $cfg[PmaNoRelation_DisableWarning] boolean
380 Starting with version 2.3.0 phpMyAdmin offers a lot of features to work
381 with master / foreign - tables (see $cfg['Servers'][$i]['pmadb']).
382 If you tried to set this up and it does not work for you, have a look on
383 the "Structure" page of one database where you would like to use it. You
384 will find a link that will analyze why those features have been disabled.
385 If you do not want to use those features set this variable to TRUE to stop
386 this message from appearing.
387 $cfg[blowfish_secret] string
388 Starting with version 2.5.2, the 'cookie' auth_type uses blowfish algorithm
389 to encrypt the password.
390 If you are using the 'cookie' auth_type, enter here a random passphrase of
391 your choice. It will be used internally by the blowfish algorithm: you
392 won't be prompted for this passphrase. The maximum number of characters for
393 this parameter seems to be 46.
394 $cfg[Servers] array
395 Since version 1.4.2, phpMyAdmin supports the administration of multiple
396 MySQL servers. Therefore, a $cfg['Servers']-array has been added which
397 contains the login information for the different servers. The first $cfg
398 ['Servers'][$i]['host'] contains the hostname of the first server, the
399 second $cfg['Servers'][$i]['host'] the hostname of the second server, etc.
400 In libraries/config.default.php, there is only one section for server
401 definition, however you can put as many as you need in config.inc.php, copy
402 that block or needed parts (you don't have to define all settings, just
403 those you need to change).
404 $cfg['Servers'][$i]['host'] string
405 The hostname or IP address of your $i-th MySQL-server. E.g. localhost.
406 $cfg['Servers'][$i]['port'] string
407 The port-number of your $i-th MySQL-server. Default is 3306 (leave blank).
408 If you use "localhost" as the hostname, MySQL ignores this port number and
409 connects with the socket, so if you want to connect to a port different
410 from the default port, use "127.0.0.1" or the real hostname in $cfg
411 ['Servers'][$i]['host'].
412 $cfg['Servers'][$i]['socket'] string
413 The path to the socket to use. Leave blank for default.
414 $cfg['Servers'][$i]['connect_type'] string
415 What type connection to use with the MySQL server. Your options are
416 'socket' & 'tcp'. It defaults to 'tcp' as that is nearly guaranteed to be
417 available on all MySQL servers, while sockets are not supported on some
418 platforms.
419  
420 To use the socket mode, your MySQL server must be on the same machine as
421 the Web server.
422 $cfg['Servers'][$i]['extension'] string
423 What php MySQL extension to use for the connection. Valid options are:
424  
425 mysql : The classic MySQL extension. This is the recommended and default
426 method at this time.
427  
428 mysqli : The improved MySQL extension. This extension became available
429 with php 5.0.0 and is the recommended way to connect to a server running
430 MySQL 4.1.x.
431 $cfg['Servers'][$i]['compress'] boolean
432 Whether to use a compressed protocol for the MySQL server connection or not
433 (experimental).
434 This feature requires PHP >= 4.3.0.
435 $cfg['Servers'][$i]['controluser'] string
436 $cfg['Servers'][$i]['controlpass'] string
437 This special account is used for 2 distinct purposes: to make possible all
438 relational features (see $cfg['Servers'][$i]['pmadb']) and, for a MySQL
439 server older than 4.1.2 or running with --skip-show-database, to enable a
440 multi-user installation (http or cookie authentication mode).
441  
442 When using HTTP or cookie authentication modes (or 'config' authentication
443 mode since phpMyAdmin 2.2.1), you need to supply the details of a MySQL
444 account that has SELECT privilege on the mysql.user (all columns except
445 "Password"), mysql.db (all columns) & mysql.tables_priv (all columns except
446 "Grantor" & "Timestamp") tables. This account is used to check what
447 databases the user will see at login.
448 Please see the install section on "Using authentication modes" for more
449 information.
450  
451 In phpMyAdmin versions before 2.2.5, those were called "stduser/stdpass".
452 $cfg['Servers'][$i]['auth_type'] string ['http'|'cookie'|'config']
453 Whether config or cookie or http authentication should be used for this
454 server.
455 + 'config' authentication ($auth_type = 'config') is the plain old way:
456 username and password are stored in config.inc.php.
457 + 'cookie' authentication mode ($auth_type = 'cookie') as introduced in
458 2.2.3 allows you to log in as any valid MySQL user with the help of
459 cookies. Username and password are stored in cookies during the session
460 and password is deleted when it ends. This can also allow you to login
461 in arbitrary server if $cfg['AllowArbitraryServer'] enabled.
462 + 'http' authentication (was called 'advanced' in older versions)
463 ($auth_type = 'http') as introduced in 1.3.0 allows you to log in as
464 any valid MySQL user via HTTP-Auth.
465  
466 Please see the install section on "Using authentication modes" for more
467 information.
468 $cfg['Servers'][$i]['user'] string
469 $cfg['Servers'][$i]['password'] string
470 When using auth_type = 'config', this is the user/password-pair which
471 phpMyAdmin will use to connect to the MySQL server. This user/password pair
472 is not needed when HTTP or cookie authentication is used and should be
473 empty.
474 $cfg['Servers'][$i]['only_db'] string or array
475 If set to a (an array of) database name(s), only this (these) database(s)
476 will be shown to the user. Since phpMyAdmin 2.2.1, this/these database(s)
477 name(s) may contain MySQL wildcards characters ("_" and "%"): if you want
478 to use literal instances of these characters, escape them (I.E. use 'my\
479 _db' and not 'my_db').
480 This setting is an efficient way to lower the server load since the latter
481 does not need to send MySQL requests to build the available database list.
482 But it does not replace the privileges rules of the MySQL database server.
483 If set, it just means only these databases will be displayed but not that
484 all other databases can't be used.
485  
486 An example of using more that one database: $cfg['Servers'][$i]['only_db']
487 = array('db1', 'db2');
488  
489 As of phpMyAdmin 2.5.5 the order inside the array is used for sorting the
490 databases in the left frame, so that you can individually arrange your
491 databases.
492 If you want to have certain databases at the top, but don't care about the
493 others, you do not need to specify all other databases. Use: $cfg
494 ['Servers'][$i]['only_db'] = array('db3', 'db4', '*'); instead to tell
495 phpMyAdmin that it should display db3 and db4 on top, and the rest in
496 alphabetic order.
497 $cfg['Servers'][$i]['hide_db'] string
498 Regular expression for hiding some databases. This only hides them from
499 listing, but user is still able to access them.
500 $cfg['Servers'][$i]['verbose'] string
501 Only useful when using phpMyAdmin with multiple server entries. If set,
502 this string will be displayed instead of the hostname in the pull-down menu
503 on the main page. This can be useful if you want to show only certain
504 databases on your system, for example.
505 $cfg['Servers'][$i]['pmadb'] string
506 The name of the database containing the linked-tables infrastructure.
507  
508 See the Linked-tables infrastructure section in this document to see the
509 benefits of this infrastructure, and for a quick way of creating this
510 database and the needed tables.
511  
512 If you are the only user of this phpMyAdmin installation, you can use your
513 current database to store those special tables; in this case, just put your
514 current database name in $cfg['Servers'][$i]['pmadb']. For a multi-user
515 installation, set this parameter to the name of your central database
516 containing the linked-tables infrastructure.
517 $cfg['Servers'][$i]['bookmarktable'] string
518 Since release 2.2.0 phpMyAdmin allows to bookmark queries. This can be
519 useful for queries you often run.
520  
521 To allow the usage of this functionality:
522 + set up pmadb and the linked-tables infrastructure
523 + enter the table name in $cfg['Servers'][$i]['bookmarktable']
524 $cfg['Servers'][$i]['relation'] string
525 Since release 2.2.4 you can describe, in a special 'relation' table, which
526 field is a key in another table (a foreign key). phpMyAdmin currently uses
527 this to
528 + make clickable, when you browse the master table, the data values that
529 point to the foreign table;
530 + display in an optional tool-tip the "display field" when browsing the
531 master table, if you move the mouse to a column containing a foreign
532 key (use also the 'table_info' table);
533 (see FAQ 6.7)
534 + in edit/insert mode, display a drop-down list of possible foreign keys
535 (key value and "display field" are shown)
536 (see FAQ 6.21)
537 + display links on the table properties page, to check referential
538 integrity (display missing foreign keys) for each described key;
539 + in query-by-example, create automatic joins (see FAQ 6.6)
540 + enable you to get a PDF schema of your database (also uses the
541 table_coords table).
542 The keys can be numeric or character.
543  
544 To allow the usage of this functionality:
545 + set up pmadb and the linked-tables infrastructure
546 + put the relation table name in $cfg['Servers'][$i]['relation']
547 + now as normal user open phpMyAdmin and for each one of your tables
548 where you want to use this feature, click "Structure/Relation view/"
549 and choose foreign fields.
550 Please note that in the current version, master_db must be the same as
551 foreign_db. Those fields have been put in future development of the
552 cross-db relations.
553 $cfg['Servers'][$i]['table_info'] string
554 Since release 2.3.0 you can describe, in a special 'table_info' table,
555 which field is to be displayed as a tool-tip when moving the cursor over
556 the corresponding key.
557 This configuration variable will hold the name of this special table. To
558 allow the usage of this functionality:
559 + set up pmadb and the linked-tables infrastructure
560 + put the table name in $cfg['Servers'][$i]['table_info']
561 + then for each table where you want to use this feature, click
562 "Structure/Relation view/Choose field to display" to choose the field.
563 Usage tip: Display field.
564 $cfg['Servers'][$i]['table_coords'] string
565 $cfg['Servers'][$i]['pdf_pages'] string
566 Since release 2.3.0 you can have phpMyAdmin create PDF pages showing the
567 relations between your tables. To do this it needs two tables "pdf_pages"
568 (storing information about the available PDF pages) and "table_coords"
569 (storing coordinates where each table will be placed on a PDF schema
570 output).
571  
572 You must be using the "relation" feature.
573  
574 To allow the usage of this functionality:
575 + set up pmadb and the linked-tables infrastructure
576 + put the correct table names in $cfg['Servers'][$i]['table_coords'] and
577 $cfg['Servers'][$i]['pdf_pages']
578 Usage tips: PDF output.
579 $cfg['Servers'][$i]['column_info'] string
580 Since release 2.3.0 you can store comments to describe each column for each
581 table. These will then be shown on the "printview".
582  
583 Starting with release 2.5.0, comments are consequently used on the table
584 property pages and table browse view, showing up as tool-tips above the
585 column name (properties page) or embedded within the header of table in
586 browse view. They can also be shown in a table dump. Please see the
587 relevant configuration directives later on.
588  
589 Also new in release 2.5.0 is a MIME-transformation system which is also
590 based on the following table structure. See Transformations for further
591 information. To use the MIME-transformation system, your column_info table
592 has to have the three new fields 'mimetype', 'transformation',
593 'transformation_options'.
594  
595 To allow the usage of this functionality:
596 + set up pmadb and the linked-tables infrastructure
597 + put the table name in $cfg['Servers'][$i]['column_info']
598 + to update your PRE-2.5.0 Column_comments Table use this:
599 ALTER TABLE `pma_column_comments`
600 ADD `mimetype` VARCHAR( 255 ) NOT NULL ,
601 ADD `transformation` VARCHAR( 255 ) NOT NULL ,
602 ADD `transformation_options` VARCHAR( 255 ) NOT NULL ;
603 and remember that the Variable in config.inc.php has been renamed from
604 $cfg['Servers'][$i]['column_comments'] to $cfg['Servers'][$i]
605 ['column_info']
606 $cfg['Servers'][$i]['history'] string
607 Since release 2.5.0 you can store your SQL history, which means all queries
608 you entered manually into the phpMyAdmin interface. If you don't want to
609 use a table- based history, you can use the JavaScript-based history. Using
610 that, all your history items are deleted when closing the window.
611  
612 Using $cfg[QueryHistoryMax] you can specify an amount of history items you
613 want to have on hold. On every login, this list gets cut to the maximum
614 amount.
615  
616 The query history is only available if JavaScript is enabled in your
617 browser.
618  
619 To allow the usage of this functionality:
620 + set up pmadb and the linked-tables infrastructure
621 + put the table name in $cfg['Servers'][$i]['history']
622 $cfg['Servers'][$i]['verbose_check'] boolean
623 Because release 2.5.0 introduced the new MIME-transformation support, the
624 column_info table got enhanced with three new fields. If the above variable
625 is set to TRUE (default) phpMyAdmin will check if you have the latest table
626 structure available. If not, it will emit a warning to the superuser.
627  
628 You can disable this checking behavior by setting the variable to false,
629 which should offer a performance increase.
630  
631 Recommended to set to FALSE, when you are sure, your table structure is up
632 to date.
633 $cfg['Servers'][$i]['AllowRoot'] boolean
634 Whether to allow root access, This is just simplification of rules below.
635 $cfg['Servers'][$i]['AllowDeny']['order'] string
636 If your rule order is empty, then IP authentication is disabled.
637  
638 If your rule order is set to 'deny,allow' then the system applies all deny
639 rules followed by allow rules. Access is allowed by default. Any client
640 which does not match a Deny command or does match an Allow command will be
641 allowed access to the server.
642  
643 If your rule order is set to 'allow,deny' then the system applies all allow
644 rules followed by deny rules. Access is denied by default. Any client which
645 does not match an Allow directive or does match a Deny directive will be
646 denied access to the server.
647  
648 If your rule order is set to 'explicit', the authentication is performed in
649 a similar fashion to rule order 'deny,allow', with the added restriction
650 that your host/username combination must be listed in the allow rules, and
651 not listed in the deny rules. This is the most secure means of using Allow/
652 Deny rules, and was available in Apache by specifying allow and deny rules
653 without setting any order.
654 $cfg['Servers'][$i]['AllowDeny']['rules'] array of strings
655 The general format for the rules is as such:
656 <'allow' | 'deny'> <username> [from] <ipmask>
657  
658 If you wish to match all users, it is possible to use a '%' as a wildcard
659 in the username field.
660 There are a few shortcuts you can use in the ipmask field as well (please
661 note that those containing SERVER_ADDRESS might not be available on all
662 webservers):
663  
664 'all' -> 0.0.0.0/0
665 'localhost' -> 127.0.0.1/8
666 'localnetA' -> SERVER_ADDRESS/8
667 'localnetB' -> SERVER_ADDRESS/16
668 'localnetC' -> SERVER_ADDRESS/24
669  
670 Having an empty rule list is equivalent to either using 'allow % from all'
671 if your rule order is set to 'deny,allow' or 'deny % from all' if your rule
672 order is set to 'allow,deny' or 'explicit'.
673  
674 For the IP matching system, the following work:
675 xxx.xxx.xxx.xxx (an exact IP address)
676 xxx.xxx.xxx.[yyy-zzz] (an IP address range)
677 xxx.xxx.xxx.xxx/nn (CIDR, Classless Inter-Domain Routing type IP addresses)
678 But the following does not work:
679 xxx.xxx.xxx.xx[yyy-zzz] (partial IP address range)
680 $cfg[ServerDefault] integer
681 If you have more than one server configured, you can set $cfg
682 ['ServerDefault'] to any one of them to autoconnect to that server when
683 phpMyAdmin is started, or set it to 0 to be given a list of servers without
684 logging in.
685 If you have only one server configured, $cfg['ServerDefault'] MUST be set
686 to that server.
687 $cfg[OBGzip] string/boolean
688 Defines whether to use GZip output buffering for increased speed in HTTP
689 transfers.
690 Set to true/false for enabling/disabling. When set to 'auto' (string),
691 phpMyAdmin tries to enable output buffering and will automatically disable
692 it, if your browser has some problems with buffering. IE6 with a certain
693 patch is known to cause data corruption having enabled buffering.
694 $cfg[PersistentConnections] boolean
695 Whether persistent connections should be used or not (mysql_connect or
696 mysql_pconnect).
697 $cfg[ForceSSL] boolean
698 Whether to force using https while accessing phpMyAdmin.
699 $cfg[ExecTimeLimit] integer [number of seconds]
700 Set the number of seconds a script is allowed to run. If seconds is set to
701 zero, no time limit is imposed.
702 This setting is used while importing/exporting dump files but has no effect
703 when PHP is running in safe mode.
704 $cfg[MemoryLimit] integer [number of bytes]
705 Set the number of bytes a script is allowed to allocate. If number set to
706 zero, no limit is imposed.
707 This setting is used while importing/exporting dump files but has no effect
708 when PHP is running in safe mode.
709 You can also use any string as in php.ini, eg. '16M'.
710 $cfg[SkipLockedTables] boolean
711 Mark used tables and make it possible to show databases with locked tables
712 (since 3.23.30).
713 $cfg[ShowSQL] boolean
714 Defines whether SQL-queries generated by phpMyAdmin should be displayed or
715 not.
716 $cfg[AllowUserDropDatabase] boolean
717 Defines whether normal users (non-administrator) are allowed to delete
718 their own database or not. If set as FALSE, the link "Drop Database" will
719 not be shown, and even a "DROP DATABASE mydatabase" will be rejected. Quite
720 practical for ISP's with many customers.
721 $cfg[Confirm] boolean
722 Whether a warning ("Are your really sure...") should be displayed when
723 you're about to lose data.
724 $cfg[LoginCookieRecall] boolean
725 Define whether the previous login should be recalled or not in cookie
726 authentication mode.
727 $cfg[UseDbSearch] boolean
728 Define whether the "search string inside database" is enabled or not.
729 $cfg[IgnoreMultiSubmitErrors] boolean
730 Define whether phpMyAdmin will continue executing a multi-query statement
731 if one of the queries fails. Default is to abort execution.
732 $cfg[VerboseMultiSubmit] boolean
733 Define whether phpMyAdmin will output the results of each query of a
734 multi-query statement embedded into the SQL output as inline comments.
735 Defaults to TRUE.
736 $cfg[AllowArbitraryServer] boolean
737 If enabled allows you to login to arbitrary server using cookie auth.
738  
739 NOTE: Please use this carefully, as this may allow to access MySQL servers
740 behind firewall where your http server is placed.
741  
742 $cfg[LeftFrameLight] boolean
743 Defines whether to use select-based menu and display only the current
744 tables in the left frame (smaller page). Only in Non-Lightmode you can use
745 the feature to display nested folders using $cfg['LeftFrameTableSeparator']
746 $cfg[LeftFrameDBTree] boolean
747 In light mode, defines whether to display the names of databases (in the
748 selector) using a tree, see also $cfg['LeftFrameDBSeparator'].
749 $cfg[LeftFrameDBSeparator] string
750 The string used to separate the parts of the database name when showing
751 them in a tree.
752 $cfg[LeftFrameTableSeparator] string
753 Defines a string to be used to nest table spaces. Defaults to '__'. This
754 means if you have tables like 'first__second__third' this will be shown as
755 a three-level hierarchy like: first > second > third. If set to FALSE or
756 empty, the feature is disabled. NOTE: You shall not use this Separator in a
757 table name at the beginning or end of a table name, or multiple times after
758 another without any other characters in between.
759 $cfg[LeftFrameTableLevel] string
760 Defines how many sublevels should be displayed when splitting up tables by
761 the above Separator.
762 $cfg[ShowTooltip] boolean
763 Defines whether to display table comment as tool-tip in left frame or not.
764 $cfg[ShowTooltipAliasDB] boolean
765 If tool-tips are enabled and a DB comment is set, this will flip the
766 comment and the real name. That means, if you have a table called
767 'user0001' and add the comment 'MyName' on it, you will see the name
768 'MyName' used consequently in the left frame and the tool-tip shows the
769 real name of the DB.
770 $cfg[ShowTooltipAliasTB] boolean/string
771 Same as $cfg['ShowTooltipAliasDB'], except this works for table names. When
772 setting this to 'nested', the Alias of the Tablename is only used to split/
773 nest the tables according to the $cfg['LeftFrameTableSeparator'] directive.
774 So only the folder is called like the Alias, the tablename itself stays the
775 real tablename.
776  
777 $cfg[LeftDisplayLogo] boolean
778 Defines whether to display the phpMyAdmin logo at the top of the left frame
779 or not. Defaults to TRUE.
780 $cfg[LeftDisplayServers] boolean
781 Defines whether to display a server choice at the top of the left frame or
782 not. Defaults to FALSE.
783 $cfg[DisplayServersList] boolean
784 Defines whether to display this server choice as links instead of in a
785 drop-down. Defaults to FALSE (drop-down).
786 $cfg[ShowStats] boolean
787 Defines whether to display space usage and statistics about databases and
788 tables or not.
789 Note that statistics requires at least MySQL 3.23.3 and that, at this date,
790 MySQL doesn't return such information for Berkeley DB tables.
791 $cfg[ShowPhpInfo] boolean
792 $cfg[ShowChgPassword] boolean
793 Defines whether to display the "PHP information" and "Change password "
794 links or not for simple users at the starting main (right) frame. This
795 setting does not check MySQL commands entered directly.
796  
797 Please note that to block the usage of phpinfo() in scripts, you have to
798 put this in your php.ini:
799 disable_functions = phpinfo()
800  
801 Also note that enabling the "Change password " link has no effect with
802 "config" authentication mode: because of the hard coded password value in
803 the configuration file, end users can't be allowed to change their
804 passwords.
805 $cfg[SuggestDBName] boolean
806 Defines whether to suggest a database name on the "Create Database" form or
807 to keep the textfield empty.
808 $cfg[ShowBlob] boolean
809 Defines whether BLOB fields are shown when browsing a table's content or
810 not.
811 $cfg[NavigationBarIconic] string
812 Defines whether navigation bar buttons and the right panel top menu contain
813 text or symbols only. A value of TRUE displays icons, FALSE displays text
814 and 'both' displays both icons and text.
815 $cfg[ShowAll] boolean
816 Defines whether an user should be displayed a "show all (records)" button
817 in browse mode or not.
818 $cfg[MaxRows] integer
819 Number of rows displayed when browsing a result set. If the result set
820 contains more rows, Previous/Next links will be shown.
821 $cfg[Order] string [DESC|ASC|SMART]
822 Defines whether fields are displayed in ascending (ASC) order, in
823 descending (DESC) order or in a "smart" (SMART) order - I.E. descending
824 order for fields of type TIME, DATE, DATETIME & TIMESTAMP, ascending order
825 else- by default.
826 $cfg[ProtectBinary] boolean or string
827 Defines whether BLOB or BINARY fields are protected from editing when
828 browsing a table's content or not. Valid values are:
829 + FALSE to allow editing of all fields;
830 + 'blob' to allow editing of all fields except BLOBS;
831 + 'all' to disallow editing of all BINARY or BLOB fields.
832 $cfg[ShowFunctionFields] boolean
833 Defines whether MySQL functions fields should be displayed or not in edit/
834 insert mode.
835 $cfg[CharEditing] string
836 Defines which type of editing controls should be used for CHAR and VARCHAR
837 fields. Possible values are:
838 + input - this allows to limit size of text to size of field in MySQL,
839 but has problems with newlines in fields
840 + textarea - no problems with newlines in fields, but also no length
841 limitations
842 Default is old behavior so input.
843 $cfg[InsertRows] integer
844 Defines the maximum number of concurrent entries for the Insert page.
845 $cfg[ForeignKeyMaxLimit] integer
846 If there are fewer items than this in the set of foreign keys, then a
847 drop-down box of foreign keys is presented, in the style described by the
848 $cfg[ForeignKeyDropdownOrder] setting.
849 $cfg[ForeignKeyDropdownOrder] array
850 For the foreign key drop-down fields, there are several methods of display,
851 offering both the key and value data. The contents of the array should be
852 one or both of the following strings: 'content-id', 'id-content'.
853 $cfg[ZipDump] boolean
854 $cfg[GZipDump] boolean
855 $cfg[BZipDump] boolean
856 Defines whether to allow the use of zip/GZip/BZip2 compression when
857 creating a dump file or not.
858 $cfg[CompressOnFly] boolean
859 Defines whether to allow on the fly compression for GZip/BZip2 compressed
860 exports. This doesn't affect smaller dumps and allows to create larger
861 dumps, that won't fit otherwise in memory due to php memory limit. Produced
862 files contain more GZip/BZip2 headers, but all normal programs handle this
863 correctly.
864 $cfg[LightTabs] string
865 If set to True, use less graphically intense tabs on the top of the
866 mainframe.
867 $cfg[PropertiesIconic] string
868 If set to TRUE, will display icons instead of text for db and table
869 properties links (like 'Browse', 'Select', 'Insert', ...).
870 Can be set to 'both' if you want icons AND text.
871 When set to FALSE, will only show text.
872 $cfg[PropertiesNumColumns] integer
873 How many columns will be utilized to display the tables on the database
874 property view? Default is 1 column. When setting this to a value larger
875 than 1, the type of the database will be omitted for more display space.
876 $cfg[DefaultTabServer] string
877 Defines the tab displayed by default on server view. Possible values:
878 "main.php" (recommended for multi-user setups), "server_databases.php",
879 "server_status.php", "server_variables.php", "server_privileges.php" or
880 "server_processlist.php".
881 $cfg[DefaultTabDatabase] string
882 Defines the tab displayed by default on database view. Possible values:
883 "db_details_structure.php", "db_details.php" or "db_search.php".
884 $cfg[DefaultTabTable] string
885 Defines the tab displayed by default on table view. Possible values:
886 "tbl_properties_structure.php", "tbl_properties.php", "tbl_select.php",
887 "tbl_change.php" or "sql.php".
888 $cfg[MySQLManualBase] string
889 If set to an URL which points to the MySQL documentation (type depends on
890 $cfg['MySQLManualType']), appropriate help links are generated.
891 See MySQL Documentation page for more information about MySQL manuals and
892 their types.
893 $cfg[MySQLManualType] string
894 Type of MySQL documentation:
895 + viewable - "viewable online", current one used on MySQL website
896 + searchable - "Searchable, with user comments"
897 + chapters - "HTML, one page per chapter"
898 + big - "HTML, all on one page"
899 + none - do not show documentation links
900 $cfg[DefaultLang] string
901 Defines the default language to use, if not browser-defined or
902 user-defined.
903 See the select_lang.lib.php script to know the valid values for this
904 setting.
905 $cfg[DefaultConnectionCollation] string
906 Defines the default connection collation to use, if not user-defined.
907 See the MySQL documentation for list of possible values.
908 $cfg[Lang] string
909 Force: always use this language (must be defined in the select_lang.lib.php
910 script).
911 $cfg[FilterLanguages] string
912 Limit list of available languages to those matching the given regular
913 expression. For example if you want only Czech and English, you should set
914 filter to '^(cs|en)'.
915 $cfg[DefaultCharset] string
916 Default character set to use for recoding of MySQL queries. This must be
917 enabled and it's described by $cfg['AllowAnywhereRecoding'] option.
918 You can give here any character set which is in $cfg['AvailableCharsets']
919 array and this is just default choice, user can select any of them.
920 $cfg[AllowAnywhereRecoding] boolean
921 Allow character set recoding of MySQL queries. You need recode or iconv
922 support (compiled in or module) in PHP to allow MySQL queries recoding and
923 used language file must have it enabled (by default only these which are in
924 Unicode, just to avoid losing some characters).
925  
926 Setting this to TRUE also activates a pull-down menu in the Export page, to
927 choose the character set when exporting a file.
928 $cfg[RecodingEngine] string
929 You can select here which functions will be used for character set
930 conversion. Possible values are:
931 + auto - automatically use available one (first is tested iconv, then
932 recode)
933 + iconv - use iconv or libiconv functions
934 + recode - use recode_string function
935 Default is auto.
936 $cfg[IconvExtraParams] string
937 Specify some parameters for iconv used in charset conversion. See iconv
938 documentation for details. By default //TRANSLIT is used, so that invalid
939 characters will be transliterated.
940 $cfg[AvailableCharsets] array
941 Available character sets for MySQL conversion. You can add your own (any of
942 supported by recode/iconv) or remove these which you don't use. Character
943 sets will be shown in same order as here listed, so if you frequently use
944 some of these move them to the top.
945 $cfg[GD2Available] string
946 Specifies whether GD >= 2 is available. If yes it can be used for MIME
947 transformations.
948 Possible values are:
949 + auto - automatically detect, this is a bit expensive operation for php
950 < 4.3.0 so it is preferred to change this according to your server real
951 possibilities
952 + yes - GD 2 functions can be used
953 + no - GD 2 function cannot be used
954 Default is auto.
955 $cfg[LeftWidth] integer
956 Left frame width in pixel. See themes/themename/layout.inc.php.
957 $cfg[LeftBgColor] string [HTML color]
958 $cfg[RightBgColor] string [HTML color]
959 The background colors (HTML) used for both the frames. See themes/themename
960 /layout.inc.php.
961 $cfg[RightBgImage] string
962 The URI of the background image used for the right frame. It must be an
963 absolute URI. See themes/themename/layout.inc.php.
964 $cfg[LeftPointerColor] string [HTML color]
965 The color (HTML) used for the pointer in the left frame (does not work with
966 Netscape 4). See themes/themename/layout.inc.php.
967 $cfg[LeftPointerEnable] boolean
968 A value of TRUE activates the left pointer (when LeftFrameLight is FALSE).
969 $cfg[Border] integer
970 The size of a table's border. See themes/themename/layout.inc.php.
971 $cfg[ThBgcolor] string [HTML color]
972 The color (HTML) used for table headers. See themes/themename/
973 layout.inc.php.
974 $cfg[BgcolorOne] string [HTML color]
975 The color (HTML) #1 for table rows. See themes/themename/layout.inc.php.
976 $cfg[BgcolorTwo] string [HTML color]
977 The color (HTML) #2 for table rows. See themes/themename/layout.inc.php.
978 $cfg[BrowsePointerColor] string [HTML color]
979 $cfg[BrowseMarkerColor] string [HTML color]
980 The colors (HTML) uses for the pointer and the marker in browse mode (does
981 not work with Netscape 4).
982 The former feature highlights the row over which your mouse is passing and
983 the latter lets you visually mark/unmark rows by clicking on them.
984 See themes/themename/layout.inc.php.
985 $cfg[BrowsePointerEnable] boolean
986 Whether to activate the browse pointer or not.
987 $cfg[BrowseMarkerEnable] boolean
988 Whether to activate the browse marker or not.
989 $cfg[TextareaCols] integer
990 $cfg[TextareaRows] integer
991 $cfg[CharTextareaCols] integer
992 $cfg[CharTextareaRows] integer
993 Number of columns and rows for the textareas.
994 This value will be emphasized (*2) for SQL query textareas and (*1.25) for
995 SQL textareas inside the query window.
996 The Char* values are used for CHAR and VARCHAR editing (if configured via
997 $cfg['CharEditing']).
998 $cfg[LongtextDoubleTextarea] boolean
999 Defines whether textarea for LONGTEXT fields should have double size.
1000 $cfg[TextareaAutoSelect] boolean
1001 Defines if the whole textarea of the query box will be selected on click.
1002 $cfg[CtrlArrowsMoving] boolean
1003 Enable Ctrl+Arrows (Option+Arrows in Safari) moving between fields when
1004 editing.
1005 $cfg[LimitChars] integer
1006 Maximal number of Chars showed in any non-numeric field on browse view. Can
1007 be turned off by a toggle button on the browse page.
1008 $cfg[ModifyDeleteAtLeft] boolean $cfg[ModifyDeleteAtRight] boolean
1009 Defines the place where modify and delete links would be put when tables
1010 contents are displayed (you may have them displayed both at the left and at
1011 the right). "Left" and "right" are parsed as "top" and "bottom" with
1012 vertical display mode.
1013 $cfg[DefaultDisplay] string $cfg[HeaderFlipType] string
1014 There are 3 display modes: horizontal, horizontalflipped and vertical.
1015 Define which one is displayed by default. The first mode displays each row
1016 on a horizontal line, the second rotates the headers by 90 degrees, so you
1017 can use descriptive headers even though fields only contain small values
1018 and still print them out. The vertical mode sorts each row on a vertical
1019 lineup.
1020  
1021 The HeaderFlipType can be set to 'css' or 'faked'. When using 'css' the
1022 rotation of the header for horizontalflipped is done via CSS. If set to
1023 'faked' PHP does the transformation for you, but of course this does not
1024 look as good as CSS.
1025 $cfg[DefaultPropDisplay] string
1026 When editing/creating new columns in a table all fields normally get lined
1027 up one field a line. (default: 'horizontal'). If you set this to 'vertical'
1028 you can have each field lined up vertically beneath each other. You can
1029 save up a lot of place on the horizontal direction and no longer have to
1030 scroll.
1031 $cfg[ShowBrowseComments] boolean
1032 $cfg[ShowPropertyComments] boolean
1033 By setting the corresponding variable to TRUE you can enable the display of
1034 column comments in Browse or Property display. In browse mode, the comments
1035 are show inside the header. In property mode, comments are displayed using
1036 a CSS-formatted dashed-line below the name of the field. The comment is
1037 shown as a tool-tip for that field.
1038 $cfg[UploadDir] string
1039 The name of the directory where SQL files have been uploaded by other means
1040 than phpMyAdmin (for example, ftp). Those files are available under a
1041 drop-down box when you click the database name, then the SQL tab.
1042  
1043 If you want different directory for each user, %u will be replaced with
1044 username.
1045  
1046 Please note that the file names must have the suffix ".sql" (or ".sql.bz2"
1047 or ".sql.gz" if support for compressed formats is enabled).
1048  
1049 This feature is useful when your file is too big to be uploaded via HTTP,
1050 or when file uploads are disabled in PHP.
1051  
1052 Please note that if PHP is running in safe mode, this directory must be
1053 owned by the same user as the owner of the phpMyAdmin scripts.
1054  
1055 See also FAQ 1.16 for alternatives.
1056 $cfg[docSQLDir] string
1057 The name of the directory where docSQL files can be uploaded for import
1058 into phpMyAdmin.
1059  
1060 Please note that if PHP is running in safe mode, this directory must be
1061 owned by the same user as the owner of the phpMyAdmin scripts.
1062 $cfg[SaveDir] string
1063 The name of the directory where dumps can be saved.
1064  
1065 If you want different directory for each user, %u will be replaced with
1066 username.
1067  
1068 Please note that the directory has to be writable for user running
1069 webserver.
1070  
1071 Please note that if PHP is running in safe mode, this directory must be
1072 owned by the same user as the owner of the phpMyAdmin scripts.
1073 $cfg[TempDir] string
1074 The name of the directory, where temporary files can be stored.
1075  
1076 This is needed for native MS Excel export, see FAQ 6.23
1077 $cfg[Export] array
1078 In this array are defined default parameters for export, names of items are
1079 similar to texts seen on export page, so you can easily identify what they
1080 mean.
1081 $cfg[Import] array
1082 In this array are defined default parameters for import, names of items are
1083 similar to texts seen on import page, so you can easily identify what they
1084 mean.
1085 $cfg[RepeatCells] integer
1086 Repeat the headers every X cells, or 0 to deactivate.
1087 $cfg[EditInWindow] boolean
1088 $cfg[QueryWindowWidth] integer
1089 $cfg[QueryWindowHeight] integer
1090 $cfg[QueryHistoryDB] boolean
1091 $cfg[QueryWindowDefTab] string
1092 $cfg[QueryHistoryMax] integer
1093 All those variables affect the query window feature. A SQL link or icon is
1094 always displayed on the left panel. If JavaScript is enabled in your
1095 browser, a click on this opens a distinct query window, which is a direct
1096 interface to enter SQL queries. Otherwise, the right panel changes to
1097 display a query box.
1098  
1099 The size of this query window can be customized with $cfg
1100 ['QueryWindowWidth'] and $cfg['QueryWindowWidth'] - both integers for the
1101 size in pixels. Note that normally, those parameters will be modified in
1102 layout.inc.php for the theme you are using.
1103  
1104 If $cfg['EditInWindow'] is set to true, a click on [Edit] from the results
1105 page (in the "Showing Rows" section) opens the query window and puts the
1106 current query inside it. If set to false, clicking on the link puts the SQL
1107 query in the right panel's query box.
1108  
1109 The usage of the JavaScript query window is recommended if you have a
1110 JavaScript enabled browser. Basic functions are used to exchange quite a
1111 few variables, so most 4th generation browsers should be capable to use
1112 that feature. It currently is only tested with Internet Explorer 6 and
1113 Mozilla 1.x.
1114  
1115 If $cfg['QueryHistoryDB'] is set to TRUE, all your Queries are logged to a
1116 table, which has to be created by you (see $cfg['Servers'][$i]['history']).
1117 If set to FALSE, all your queries will be appended to the form, but only as
1118 long as your window is opened they remain saved.
1119  
1120 When using the JavaScript based query window, it will always get updated
1121 when you click on a new table/db to browse and will focus if you click on
1122 "Edit SQL" after using a query. You can suppress updating the query window
1123 by checking the box "Do not overwrite this query from outside the window"
1124 below the query textarea. Then you can browse tables/databases in the
1125 background without losing the contents of the textarea, so this is
1126 especially useful when composing a query with tables you first have to look
1127 in. The checkbox will get automatically checked whenever you change the
1128 contents of the textarea. Please uncheck the button whenever you definitely
1129 want the query window to get updated even though you have made alterations.
1130  
1131 If $cfg['QueryHistoryDB'] is set to TRUE you can specify the amount of
1132 saved history items using $cfg['QueryHistoryMax'].
1133  
1134 The query window also has a custom tabbed look to group the features. Using
1135 the variable $cfg['QueryWindowDefTab'] you can specify the default tab to
1136 be used when opening the query window. It can be set to either 'sql',
1137 'files', 'history' or 'full'.
1138 $cfg[BrowseMIME] boolean
1139 Enable MIME-transformations.
1140 $cfg[MaxExactCount] integer
1141 + For InnoDB tables, determines for how large tables phpMyAdmin should
1142 get the exact row count using SELECT COUNT. If the approximate row
1143 count as returned by SHOW TABLE STATUS is smaller than this value,
1144 SELECT COUNT will be used, otherwise the approximate count will be
1145 used.
1146 + For VIEWs, since obtaining the exact count could have an impact on
1147 performance, this value is the maximum to be displayed.
1148 $cfg[WYSIWYG-PDF] boolean
1149 Utilizes a WYSIWYG editing control to easily place elements of a PDF page.
1150 By clicking on the button 'toggle scratchboard' on the page where you edit
1151 x/y coordinates of those elements you can activate a scratchboard where all
1152 your elements are placed. By clicking on an element, you can move them
1153 around in the pre-defined area and the x/y coordinates will get updated
1154 dynamically. Likewise, when entering a new position directly into the input
1155 field, the new position in the scratchboard changes after your cursor
1156 leaves the input field.
1157 You have to click on the 'OK'-button below the tables to save the new
1158 positions. If you want to place a new element, first add it to the table of
1159 elements and then you can drag the new element around.
1160 By changing the paper size and the orientation you can change the size of
1161 the scratchboard as well. You can do so by just changing the dropdown field
1162 below, and the scratchboard will resize automatically, without interfering
1163 with the current placement of the elements.
1164 If ever an element gets out of range you can either enlarge the paper size
1165 or click on the 'reset' button to place all elements below each other.
1166 NOTE: You have to use a recent browser like IE6 or Mozilla to get this
1167 control to work. The basic Drag&Drop script functionality was kindly
1168 borrowed from www.youngpup.net and is underlying so specific license.
1169 $cfg[NaturalOrder] boolean
1170 Sorts database and table names according to natural order (for example, t1,
1171 t2, t10). Currently implemented in the left panel (Light mode) and in
1172 Database view, for the table list.
1173 $cfg[ShowHttpHostTitle] boolean
1174 Shows the HTTP host name in window's title bar.
1175 $cfg[SetHttpHostTitle] string
1176 If $cfg['ShowHttpHostTitle'] is TRUE, it shows the real HTTP host name,
1177 unless an alternate name is set here.
1178 $cfg[ErrorIconic] boolean
1179 Uses icons for warnings, errors and informations.
1180 $cfg[MainPageIconic] boolean
1181 Uses icons on main page in lists and menu tabs.
1182 $cfg[ReplaceHelpImg] boolean
1183 Shows a help button instead of the "Documentation" message.
1184 $cfg[ThemePath] string
1185 If theme manager is active, use this as the path of the subdirectory
1186 containing all the themes.
1187 $cfg[ThemeManager] boolean
1188 Enables user-selectable themes. See FAQ 2.7.
1189 $cfg[ThemeDefault] string
1190 The default theme (a subdirectory under cfg['ThemePath']).
1191 $cfg[ThemePerServer] boolean
1192 Whether to allow different theme for each server.
1193 $cfg[DefaultQueryTable] string
1194 $cfg[DefaultQueryDatabase] string
1195 Default queries that will be displayed in query boxes when user didn't
1196 specify any. Use %d for database name, %t for table name and %f for a comma
1197 separated list of field names. Note that %t and %f are only applicable to
1198 $cfg['DefaultQueryTable'].
1199 $cfg[SQP]['fmtType'] string [html|none]
1200 The main use of the new SQL Parser is to pretty-print SQL queries. By
1201 default we use HTML to format the query, but you can disable this by
1202 setting this variable to 'none'.
1203 $cfg[SQP]['fmtInd'] float
1204 $cfg[SQP]['fmtIndUnit'] string [em|px|pt|ex]
1205 For the pretty-printing of SQL queries, under some cases the part of a
1206 query inside a bracket is indented. By changing $cfg['SQP']['fmtInd'] you
1207 can change the amount of this indent.
1208 Related in purpose is $cfg['SQP']['fmtIndUnit'] which specifies the units
1209 of the indent amount that you specified. This is used via stylesheets.
1210 $cfg[SQP]['fmtColor'] array of string tuples
1211 This array is used to define the colours for each type of element of the
1212 pretty-printed SQL queries. The tuple format is
1213 class => [HTML colour code | empty string]
1214 If you specify an empty string for the color of a class, it is ignored in
1215 creating the stylesheet. You should not alter the class names, only the
1216 colour strings.
1217 Class name key:
1218 + comment Applies to all comment sub-classes
1219 + comment_mysql Comments as "#...\n"
1220 + comment_ansi Comments as "-- ...\n"
1221 + comment_c Comments as "/*...*/"
1222 + digit Applies to all digit sub-classes
1223 + digit_hex Hexadecimal numbers
1224 + digit_integer Integer numbers
1225 + digit_float Floating point numbers
1226 + punct Applies to all punctuation sub-classes
1227 + punct_bracket_open_round Opening brackets"("
1228 + punct_bracket_close_round Closing brackets ")"
1229 + punct_listsep List item Separator ","
1230 + punct_qualifier Table/Column Qualifier "."
1231 + punct_queryend End of query marker ";"
1232 + alpha Applies to all alphabetic classes
1233 + alpha_columnType Identifiers matching a column type
1234 + alpha_columnAttrib Identifiers matching a database/table/column
1235 attribute
1236 + alpha_functionName Identifiers matching a MySQL function name
1237 + alpha_reservedWord Identifiers matching any other reserved word
1238 + alpha_variable Identifiers matching a SQL variable "@foo"
1239 + alpha_identifier All other identifiers
1240 + quote Applies to all quotation mark classes
1241 + quote_double Double quotes "
1242 + quote_single Single quotes '
1243 + quote_backtick Backtick quotes `
1244 $cfg[SQLValidator]['use'] boolean
1245 phpMyAdmin now supports use of the Mimer SQL Validator service, as
1246 originally published on Slashdot.
1247 For help in setting up your system to use the service, see the FAQ #6.14.
1248 $cfg[SQLValidator]['username'] string
1249 $cfg[SQLValidator]['password'] string
1250 The SOAP service allows you to login with anonymous and any password, so we
1251 use those by default. Instead, if you have an account with them, you can
1252 put your login details here, and it will be used in place of the anonymous
1253 login.
1254 $cfg[DBG]['enable'] boolean
1255 DEVELOPERS ONLY!
1256 Enable the DBG extension for debugging phpMyAdmin. Required for profiling
1257 the code.
1258 For help in setting up your system to this, see the Developers section.
1259 $cfg[DBG]['profile']['enable'] boolean
1260 DEVELOPERS ONLY!
1261 Enable profiling support for phpMyAdmin. This will append a chunk of data
1262 to the end of every page displayed in the main window with profiling
1263 statistics for that page.
1264 You may need to increase the maximum execution time for this to complete
1265 successfully.
1266 $cfg[DBG]['profile']['threshold'] float (units in milliseconds)
1267 DEVELOPERS ONLY!
1268 When profiling data is displayed, this variable controls the threshold of
1269 display for any profiling data, based on the average time each time has
1270 taken. If it is over the threshold it is displayed, otherwise it is not
1271 displayed. This takes a value in milliseconds. In most cases you don't need
1272 to edit this.
1273 $cfg[ColumnTypes] array
1274 All possible types of a MySQL column. In most cases you don't need to edit
1275 this.
1276 $cfg[AttributeTypes] array
1277 Possible attributes for fields. In most cases you don't need to edit this.
1278 $cfg[Functions] array
1279 A list of functions MySQL supports. In most cases you don't need to edit
1280 this.
1281 $cfg[RestrictColumnTypes] array
1282 Mapping of column types to meta types used for preferring displayed
1283 functions. In most cases you don't need to edit this.
1284 $cfg[RestrictFunctions] array
1285 Functions preferred for column meta types as defined in $cfg
1286 ['RestrictColumnTypes']. In most cases you don't need to edit this.
1287 $cfg[DefaultFunctions] array
1288 Functions selected by default when inserting/changing row, Functions are
1289 defined for meta types from $cfg['RestrictColumnTypes'] and for
1290 first_timestamp, which is used for first timestamp column in table.
1291 $cfg[NumOperators] array
1292 Operators available for search operations on numeric and date fields.
1293 $cfg[TextOperators] array
1294 Operators available for search operations on character fields. Note that we
1295 put LIKE by default instead of LIKE %...%, to avoid unintended performance
1296 problems in case of huge tables.
1297 $cfg[EnumOperators] array
1298 Operators available for search operations on enum fields.
1299 $cfg[NullOperators] array
1300 Additional operators available for search operations when the field can be
1301 null.
1302  
1303  
1304 Transformations
1305  
1306 Introduction - Usage - File structure
1307  
1308  
1309 [1. Introduction]
1310  
1311 To enable transformations, you have to setup the column_info table and the
1312 proper directives. Please see the Configuration section on how to do so.
1313  
1314  
1315 You can apply different transformations to the contents of each field. The
1316 transformation will take the content of each field and transform it with
1317 certain rules defined in the selected transformation.
1318  
1319  
1320 Say you have a field 'filename' which contains a filename. Normally you would
1321 see in phpMyAdmin only this filename. Using transformations you can transform
1322 that filename into a HTML link, so you can click inside of the phpMyAdmin
1323 structure on the field's link and will see the file displayed in a new browser
1324 window. Using transformation options you can also specify strings to append/
1325 prepend to a string or the format you want the output stored in.
1326  
1327  
1328 For a general overview of all available transformations and their options, you
1329 can consult your <www.your-host.com>/<your-install-dir>/
1330 transformation_overview.php installation.
1331  
1332  
1333 For a tutorial on how to effectively use transformations, see our Link section
1334 on the official phpMyAdmin homepage.
1335  
1336  
1337 [2. Usage]
1338  
1339 Go to your tbl_properties_structure.php page (i.e. reached through clicking on
1340 the 'Structure' link for a table). There click on "Change" (or change icon) and
1341 there you will see three new fields at the end of the line. They are called
1342 'MIME-type', 'Browser transformation' and 'Transformation options'.
1343  
1344 * The field 'MIME-type' is a dropdown field. You have the options to leave
1345 that field empty or to use 'auto' [this feature is not yet available].
1346 Please note that transformations are inactive as long as no MIME-type is
1347 selected.
1348 * The field 'Browser transformation' is a drop-down field. You can choose
1349 from a hopefully growing amount of pre-defined transformations. See below
1350 for information on how to build your own transformation.
1351 There are global transformations and mimetype-bound transformations. Global
1352 transformations can be used for any mimetype. They will take the mimetype,
1353 if necessary, into regard. Mimetype-bound transformations usually only
1354 operate on a certain mimetype. There are transformations which operate on
1355 the main mimetype (like 'image'), which will most likely take the subtype
1356 into regard, and those who only operate on a specific subtype (like 'image/
1357 jpeg').
1358 You can use transformations on mimetypes for which the function was not
1359 defined for. There is no security check for you selected the right
1360 transformation, so take care of what the output will be like.
1361 * The field 'Transformation options' is a free-type textfield. You have to
1362 enter transform-function specific options here. Usually the transforms can
1363 operate with default options, but it is generally a good idea to look up
1364 the overview to see which options are necessary.
1365 Much like the ENUM/SET-Fields, you have to split up several options using
1366 the format 'a','b','c',...(NOTE THE MISSING BLANKS). This is because
1367 internally the options will be parsed as an array, leaving the first value
1368 the first element in the array, and so forth.
1369 If you want to specify a MIME character set you can define it in the
1370 transformation_options. You have to put that outside of the pre-defined
1371 options of the specific mime-transform, as the last value of the set. Use
1372 the format "'; charset=XXX'". If you use a transform, for which you can
1373 specify 2 options and you want to append a character set, enter "'first
1374 parameter','second parameter','charset=us-ascii'". You can, however use the
1375 defaults for the parameters: "'','','charset=us-ascii'".
1376  
1377  
1378 [3. File structure]
1379  
1380 All mimetypes and their transformations are defined through single files in the
1381 directory 'libraries/transformations/'.
1382  
1383  
1384 They are stored in files to ease up customization and easy adding of new
1385 transformations.
1386  
1387  
1388 Because the user cannot enter own mimetypes, it is kept sure that
1389 transformations always work. It makes no sense to apply a transformation to a
1390 mimetype, the transform-function doesn't know to handle.
1391  
1392  
1393 One can, however, use empty mime-types and global transformations which should
1394 work for many mimetypes. You can also use transforms on a different mimetype
1395 they where built for, but pay attention to option usage as well as what the
1396 transformation does to your field.
1397  
1398  
1399 There is a basic file called 'global.inc.php'. This function can be included by
1400 any other transform function and provides some basic functions.
1401  
1402  
1403 There are 5 possible file names:
1404  
1405 1. A mimetype+subtype transform:
1406  
1407 [mimetype]_[subtype]__[transform].inc.php
1408  
1409 Please not that mimetype and subtype are separated via '_', which shall not
1410 be contained in their names. The transform function/filename may contain
1411 only characters which cause no problems in the file system as well as the
1412 PHP function naming convention.
1413  
1414 The transform function will the be called 'PMA_transform_[mimetype]_
1415 [subtype]__[transform]()'.
1416  
1417 Example:
1418  
1419 text_html__formatted.inc.php
1420 PMA_transform_text_html__formatted()
1421 2. A mimetype (w/o subtype) transform:
1422  
1423 [mimetype]__[transform].inc.php
1424  
1425 Please note that there are no single '_' characters. The transform function
1426 /filename may contain only characters which cause no problems in the file
1427 system as well as the PHP function naming convention.
1428  
1429 The transform function will the be called 'PMA_transform_[mimetype]__
1430 [transform]()'.
1431  
1432 Example:
1433  
1434 text__formatted.inc.php
1435 PMA_transform_text__formatted()
1436 3. A mimetype+subtype without specific transform function
1437  
1438 [mimetype]_[subtype].inc.php
1439  
1440 Please note that there are no '__' characters in the filename. Do not use
1441 special characters in the filename causing problems with the file system.
1442  
1443 No transformation function is defined in the file itself.
1444  
1445 Example:
1446  
1447 text_plain.inc.php
1448 (No function)
1449 4. A mimetype (w/o subtype) without specific transform function
1450  
1451 [mimetype].inc.php
1452  
1453 Please note that there are no '_' characters in the filename. Do not use
1454 special characters in the filename causing problems with the file system.
1455  
1456 No transformation function is defined in the file itself.
1457  
1458 Example:
1459  
1460 text.inc.php
1461 (No function)
1462 5. A global transform function with no specific mimetype
1463  
1464 global__[transform].inc.php
1465  
1466 The transform function will the be called 'PMA_transform_global__
1467 [transform]()'.
1468  
1469 Example:
1470  
1471 global__formatted
1472 PMA_transform_global__formatted()
1473  
1474  
1475 So generally use '_' to split up mimetype and subtype, and '__' to provide a
1476 transform function.
1477  
1478  
1479 All filenames containing no '__' in themselves are not shown as valid transform
1480 functions in the dropdown.
1481  
1482  
1483 Please see the libraries/transformations/TEMPLATE file for adding your own
1484 transform function. See the libraries/transformations/TEMPLATE_MIMETYPE for
1485 adding a mimetype without a transform function. Also note the introduction of a
1486 function description in the language files. For each function a
1487 $strTransformation_[filename without .inc.php] has to exist.
1488  
1489  
1490 You can use the template generator to generate new functions and entries in the
1491 language file.
1492  
1493  
1494 To create a new transform function please see libraries/transformations/
1495 template_generator.sh. To create a new, empty mimetype please see libraries/
1496 transformations/template_generator_mimetype.sh.
1497  
1498  
1499 A transform function always gets passed three variables:
1500  
1501 1. $buffer - Contains the text inside of the column. This is the text, you
1502 want to transform.
1503 2. $options - Contains any user-passed options to a transform function as an
1504 array.
1505 3. $meta - Contains an object with field information to your column. The data
1506 is drawn from the output of the mysql_fetch_field() function. This means,
1507 all object properties described on the manual page are available in this
1508 variable and can be used to transform a field accordingly to unsigned/
1509 zerofill/not_null/... properties.
1510 The $meta->mimetype variable contains the original MIME-type of the field
1511 (i.e. 'text/plain', 'image/jpeg' etc.)
1512  
1513  
1514 FAQ - Frequently Asked Questions
1515  
1516 Server - Configuration - Limitations - Multi-user - Browsers - Usage
1517 tips - Project - Security
1518  
1519  
1520 Please have a look at our Link section on the official phpMyAdmin homepage for
1521 in-depth coverage of phpMyAdmin's features and/or interface.
1522  
1523  
1524 [1. Server]
1525  
1526 [1.1] I'm running PHP 4+ and my server is crashing each time a specific action
1527 is required or phpMyAdmin sends a blank page or a page full of cryptic
1528 characters to my browser, what can I do?
1529  
1530 There are some known PHP bugs with output buffering and compression.
1531 Try to set the $cfg['OBGzip'] directive to FALSE in your config.inc.php file
1532 and the zlib.output_compression directive to Off in your php configuration
1533 file.
1534 Furthermore, we know about such problems connected to the release candidates of
1535 PHP 4.2.0 (tested with PHP 4.2.0 RC1 to RC4) together with MS Internet
1536 Explorer. Please upgrade to the release version PHP 4.2.0.
1537  
1538 [1.2] My Apache server crashes when using phpMyAdmin.
1539  
1540 You should first try the latest versions of Apache (and possibly MySQL).
1541 See also the FAQ 1.1 entry about PHP bugs with output buffering.
1542 If your server keeps crashing, please ask for help in the various Apache
1543 support groups.
1544  
1545 [1.3] I'm running phpMyAdmin with "cookie" authentication mode under PHP 4.2.0
1546 or 4.2.1 loaded as an Apache 2+ module but can't enter the script: I'm always
1547 displayed the login screen.
1548  
1549 This is a known PHP bug (see this bug report) from the official PHP bug
1550 database. It means there is and won't be any phpMyAdmin fix against it because
1551 there is no way to code a fix.
1552  
1553 [1.4] Using phpMyAdmin on IIS, I'm displayed the error message: "The specified
1554 CGI application misbehaved by not returning a complete set of HTTP headers...".
1555  
1556 You just forgot to read the install.txt file from the php distribution. Have a
1557 look at the last message in this bug report from the official PHP bug database.
1558  
1559 [1.5] Using phpMyAdmin on IIS, I'm facing crashes and/or many error messages
1560 with the HTTP or advanced authentication mode.
1561  
1562 This is a known problem with the PHP ISAPI filter: it's not so stable. Please
1563 use instead the cookie authentication mode.
1564  
1565 [1.6] I can't use phpMyAdmin on PWS: nothing is displayed!
1566  
1567 This seems to be a PWS bug. Filippo Simoncini found a workaround (at this time
1568 there is no better fix): remove or comment the DOCTYPE declarations (2 lines)
1569 from the scripts libraries/header.inc.php, libraries/header_printview.inc.php,
1570 index.php, left.php and libraries/common.lib.php.
1571  
1572 [1.7] How can I GZip or Bzip a dump or a CSV export? It does not seem to work.
1573  
1574 These features are based on the gzencode() and bzcompress() PHP functions to be
1575 more independent of the platform (Unix/Windows, Safe Mode or not, and so on).
1576 So, you must have PHP4 >= 4.0.4 and Zlib/Bzip2 support (--with-zlib and
1577 --with-bz2).
1578 We faced PHP crashes when trying to download a dump with MS Internet Explorer
1579 when phpMyAdmin is run with a release candidate of PHP 4.2.0. In this case you
1580 should switch to the release version of PHP 4.2.0.
1581  
1582 [1.8] I cannot insert a text file in a table, and I get an error about safe
1583 mode being in effect.
1584  
1585 Your uploaded file is saved by PHP in the "upload dir", as defined in php.ini
1586 by the variable upload_tmp_dir (usually the system default is /tmp).
1587 We recommend the following setup for Apache servers running in safe mode, to
1588 enable uploads of files while being reasonably secure:
1589  
1590 * create a separate directory for uploads: mkdir /tmp/php
1591 * give ownership to the Apache server's user.group: chown apache.apache /tmp/
1592 php
1593 * give proper permission: chmod 600 /tmp/php
1594 * put upload_tmp_dir = /tmp/php in php.ini
1595 * restart Apache
1596  
1597 [1.9] I'm having troubles when uploading files. In general file uploads don't
1598 work on my system and uploaded files have a Content-Type: header in the first
1599 line.
1600  
1601 It's not really phpMyAdmin related but RedHat 7.0. You have a RedHat 7.0 and
1602 you updated your PHP RPM to php-4.0.4pl1-3.i386.rpm, didn't you?
1603 So the problem is that this package has a serious bug that was corrected ages
1604 ago in PHP (2001-01-28: see PHP's bug tracking system for more details). The
1605 problem is that the bugged package is still available though it was corrected
1606 (see RedHat's BugZilla for more details).
1607 So please download the fixed package (4.0.4pl1-9) and the problem should go
1608 away.
1609 And that fixes the \r\n problem with file uploads!
1610  
1611 [1.10] I'm having troubles when uploading files with phpMyAdmin running on a
1612 secure server. My browser is Internet Explorer and I'm using the Apache server.
1613  
1614 As suggested by "Rob M" in the phpWizard forum, add this line to your
1615 httpd.conf:
1616 SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
1617 It seems to clear up many problems between Internet Explorer and SSL.
1618  
1619 [1.11] I get an 'open_basedir restriction' while uploading a file from the
1620 query box.
1621  
1622 Since version 2.2.4, phpMyAdmin supports servers with open_basedir
1623 restrictions. Assuming that the restriction allows you to open files in the
1624 current directory ('.'), all you have to do is create a 'tmp' directory under
1625 the phpMyAdmin install directory, with permissions 777 and the same owner as
1626 the owner of your phpMyAdmin directory. The uploaded files will be moved there,
1627 and after execution of your SQL commands, removed.
1628  
1629 [1.12] I have lost my MySQL root password, what can I do?
1630  
1631 The MySQL manual explains how to reset the permissions.
1632  
1633 [1.13] I get an error 'No SQL query' when trying to execute a bookmark.
1634  
1635 If PHP does not have read/write access to its upload_tmp_dir, it cannot access
1636 the uploaded query.
1637  
1638 [1.14] I get an error 'No SQL query' when trying to submit a query from the
1639 convenient text area.
1640  
1641 Check the post_max_size directive from your PHP configuration file and try to
1642 increase it.
1643  
1644 [1.15] I have problems with mysql.user field names.
1645  
1646 In older MySQL versions, the User and Password fields were named user and
1647 password. Please modify your field names to align with current standards.
1648  
1649 [1.16] I cannot upload big dump files (memory, http or timeout problems).
1650  
1651 Starting with version 2.7.0, the import engine has been re?written and these
1652 problems should not occur. If possible, upgrade your phpMyAdmin to the latest
1653 version to take advantage of the new import features.
1654  
1655 The first things to check (or ask your host provider to check) are the values
1656 of upload_max_filesize, memory_limit and post_max_size in the php.ini
1657 configuration file. All of these three settings limit the maximum size of data
1658 that can be submitted and handled by PHP. One user also said that post_max_size
1659 and memory_limit need to be larger than upload_max_filesize.
1660  
1661 There exist several workarounds if your upload is too big or your hosting
1662 provider is unwilling to change the settings:
1663  
1664 * Look at the $cfg['UploadDir'] feature. This allows one to upload a file to
1665 the server via scp, ftp, or your favorite file transfer method. PhpMyAdmin
1666 is then able to import the files from the temporary directory. More
1667 information is available in the Configuration section of this document.
1668 * Using a utility (such as BigDump) to split the files before uploading. We
1669 cannot support this or any third party applications, but are aware of users
1670 having success with it.
1671 * If you have shell (command line) access, use MySQL to import the files
1672 directly. You can do this by issuing the "source" command from within
1673 MySQL: source filename.sql.
1674  
1675 [1.17] Which MySQL versions does phpMyAdmin support?
1676  
1677 All MySQL versions from 3.23.32 till 5.0 (except for 4.1.0 and 4.1.1) are fully
1678 supported. Please note that the older your MySQL version is, the more
1679 limitations you will have to face.
1680 phpMyAdmin may connect to your MySQL server using php's classic MySQL extension
1681 as well as the improved MySQL extension (MySQLi) that is available in php 5.0.
1682 Either way, the developers of both extensions recommend to use the classic
1683 extension for MySQL 4.0 and below and MySQLi for MySQL 4.1 and newer.
1684 When compiling php, we strongly recommend that you manually link the MySQL
1685 extension of your choice to a MySQL client library of at least the same minor
1686 version since the one that is bundled with some php distributions is rather old
1687 and might cause problems (see also FAQ 1.17a). If your webserver is running on
1688 a windows system, you might want to try MySQL's Connector/PHP instead of the
1689 MySQL / MySQLi extensions that are bundled with the official php Win32 builds.
1690 MySQL 5.1 is not yet supported.
1691  
1692 [1.17a] I cannot connect to the MySQL server. It always returns the error
1693 message, "Client does not support authentication protocol requested by server;
1694 consider upgrading MySQL client"
1695  
1696 You tried to access MySQL with an old MySQL client library. The version of your
1697 MySQL client library can be checked in your phpinfo() output. In general, it
1698 should have at least the same minor version as your server - as mentioned in
1699 FAQ 1.17.
1700  
1701 This problem is generally caused by using MySQL version 4.1 or newer. MySQL
1702 changed the authentication hash and your PHP is trying to use the old method.
1703 The proper solution is to use the mysqli extension with the proper client
1704 library to match your MySQL installation. Your chosen extension is specified in
1705 $cfg['Servers'][$i]['extension']. More information (and several workarounds)
1706 are located in the MySQL Documentation.
1707  
1708 [1.18] I'm running MySQL <= 4.0.1 having lower_case_table_names set to 1. If I
1709 create a new table with a capital letter in its name it is changed to lowercase
1710 as it should. But if I try to DROP this table MySQL is unable to find the
1711 corresponding file.
1712  
1713 This is a bug of MySQL <= 4.0.1. Please upgrade to at least MySQL 4.0.2 or turn
1714 off your lower_case_table_names directive.
1715  
1716 [1.19] I can't run the "display relations" feature because the script seems not
1717 to know the font face I'm using!
1718  
1719 The "FPDF" library we're using for this feature requires some special files to
1720 use font faces.
1721 Please refers to the FPDF manual to build these files.
1722  
1723 [1.20] I receive the error "cannot load MySQL extension, please check PHP
1724 Configuration".
1725  
1726 To connect to a MySQL server, PHP needs a set of MySQL functions called "MySQL
1727 extension". This extension may be part of the PHP distribution (compiled-in),
1728 otherwise it needs to be loaded dynamically. Its name is probably mysql.so or
1729 php_mysql.dll. phpMyAdmin tried to load the extension but failed.
1730  
1731 Usually, the problem is solved by installing a software package called
1732 "PHP-MySQL" or something similar.
1733  
1734 [1.21] I am running the CGI version of PHP under Unix, and I cannot login using
1735 cookie auth.
1736  
1737 In php.ini, set mysql.max_links higher than 1.
1738  
1739 [1.22] I don't see the "Location of text file" field, so I cannot upload.
1740  
1741 This is most likely because in php.ini, your file_uploads parameter is not set
1742 to "on".
1743  
1744 [1.23] I'm running MySQL on a Win32 machine. Each time I create a new table the
1745 table and field names are changed to lowercase!
1746  
1747 This happens because the MySQL directive lower_case_table_names defaults to 1
1748 (ON) in the Win32 version of MySQL. You can change this behavior by simply
1749 changing the directive to 0 (OFF):
1750 Just edit your my.ini file that should be located in your Windows directory and
1751 add the following line to the group [mysqld]:
1752 set-variable = lower_case_table_names=0
1753 Next, save the file and restart the MySQL service. You can always check the
1754 value of this directive using the query
1755 SHOW VARIABLES LIKE 'lower_case_table_names';
1756  
1757 [1.24] Some characters are being truncated in my queries, or I get characters
1758 randomly added. I am running PHP 4.2.3.
1759  
1760 This is a PHP 4.2.3 bug.
1761  
1762 [1.25] I am running Apache with mod_gzip-1.3.26.1a on Windows XP, and I get
1763 problems, such as undefined variables when I run a SQL query.
1764  
1765 A tip from Jose Fandos: put a comment on the following two lines in httpd.conf,
1766 like this:
1767 # mod_gzip_item_include file \.php$
1768 # mod_gzip_item_include mime "application/x-httpd-php.*"
1769 as this version of mod_gzip on Apache (Windows) has problems handling PHP
1770 scripts. Of course you have to restart Apache.
1771  
1772 [1.26] I just installed phpMyAdmin in my document root of IIS but I get the
1773 error "No input file specified" when trying to run phpMyAdmin.
1774  
1775 This is a permission problem. Right-click on the phpmyadmin folder and choose
1776 properties. Under the tab Security, click on "Add" and select the user
1777 "IUSR_machine" from the list. Now set his permissions and it should work.
1778  
1779 [1.27] I get empty page when I want to view huge page (eg.
1780 db_details_structure.php with plenty of tables).
1781  
1782 This is a PHP bug that occur when GZIP output buffering is enabled. If you turn
1783 off it (by $cfg['OBGzip'] = FALSE in config.inc.php), it should work. This bug
1784 will be fixed in PHP 5.0.0.
1785  
1786 [1.28] My MySQL server sometimes refuses queries and returns the message
1787 'Errorcode: 13'. What does this mean?
1788  
1789 This can happen due to a MySQL bug when having database / table names with
1790 upper case characters although lower_case_table_names is set to 1. To fix this,
1791 turn off this directive, convert all database and table names to lower case and
1792 turn it on again. Alternatively, there's a bug-fix available starting with
1793 MySQL 3.23.56 / 4.0.11-gamma.
1794  
1795 [1.29] When I create a table or modify a field, I get an error and the fields
1796 are duplicated.
1797  
1798 It is possible to configure Apache in such a way that PHP has problems
1799 interpreting .php files.
1800  
1801 The problems occur when two different (and conflicting) set of directives are
1802 used:
1803  
1804 SetOutputFilter PHP
1805 SetInputFilter PHP
1806 &
1807 AddType application/x-httpd-php .php
1808  
1809 In the case we saw, one set of directives was in /etc/httpd/conf/httpd.conf,
1810 while the other set was in /etc/httpd/conf/addon-modules/php.conf.
1811 The recommended way is with AddType, so just comment out the first set of lines
1812 and restart Apache:
1813  
1814 #SetOutputFilter PHP
1815 #SetInputFilter PHP
1816  
1817 [1.30] I get the error "left.php: Missing hash".
1818  
1819 This problem is known to happen when the server is running Turck MMCache but
1820 upgrading MMCache to version 2.3.21 solves the problem.
1821  
1822 [1.31] Does phpMyAdmin support php5?
1823  
1824 Yes.
1825 However, phpMyAdmin needs to be backwards compatible to php4. This is why
1826 phpMyAdmin disables the E_STRICT error_level in error_reporting settings.
1827  
1828 [1.32] Can I use HTTP authentication with IIS?
1829  
1830 Yes. This procedure was tested with phpMyAdmin 2.6.1, PHP 4.3.9 in ISAPI mode
1831 under IIS 5.1.
1832  
1833 1. In your php.ini file, set cgi.rfc2616_headers = 0
1834 2. In Web Site Properties -> File/Directory Security -> Anonymous Access
1835 dialog box, check the Anonymous access checkbox and uncheck any other
1836 checkboxes (i.e. uncheck Basic authentication, Integrated Windows
1837 authentication, and Digest if it's enabled.) Click OK.
1838 3. In Custom Errors, select the range of 401;1 through 401;5 and click the Set
1839 to Default button.
1840  
1841 [1.33] Is there a problem with the mysqli extension when running PHP 5.0.4 on
1842 64-bit systems?
1843  
1844 Yes. This problem affects phpMyAdmin ("Call to undefined function
1845 pma_reloadnavigation"), so upgrade your PHP to the next version.
1846  
1847 [1.34] Can I access directly to database or table pages?
1848  
1849 Yes. Out of the box, you can use URLs like http://server/phpMyAdmin/index.php?
1850 db=database&table=table&target=script. Table and script parts are optional. If
1851 you want http://server/phpMyAdmin/database[/table][/script] URLs, you need to
1852 do some configuration. Following lines apply only for Apache web server. First
1853 make sure, that you have enabled some features within global configuration. You
1854 need Options FollowSymLinks and AllowOverride FileInfo enabled for directory
1855 where phpMyAdmin is installed and you need mod_rewrite to be enabled. Then you
1856 just need to create following .htaccess file in root folder of phpMyAdmin
1857 installation (don't forget to change directory name inside of it):
1858  
1859 RewriteEngine On
1860 RewriteBase /path_to_phpMyAdmin
1861 RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&table=$2&target=$3 [R]
1862 RewriteRule ^([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&target=$2 [R]
1863 RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ index.php?db=$1&table=$2 [R]
1864 RewriteRule ^([a-zA-Z0-9_]+)$ index.php?db=$1 [R]
1865  
1866 [1.35] Can I use HTTP authentication with Apache CGI?
1867  
1868 Yes. However you need to pass authentication variable to CGI using following
1869 rewrite rule:
1870  
1871 RewriteEngine On
1872 RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
1873  
1874 [1.36] I get an error "500 Internal Server Error".
1875  
1876 There can be many explanations to this and a look at your server's error log
1877 file might give a clue.
1878  
1879  
1880 [2. Configuration]
1881  
1882 [2.1] The error message "Warning: Cannot add header information - headers
1883 already sent by ..." is displayed, what's the problem?
1884  
1885 Edit your config.inc.php file and ensure there is nothing (I.E. no blank lines,
1886 no spaces, no characters...) neither before the <?php tag at the beginning,
1887 neither after the ?> tag at the end.
1888  
1889 [2.2] phpMyAdmin can't connect to MySQL. What's wrong?
1890  
1891 Either there is an error with your PHP setup or your username/password is
1892 wrong. Try to make a small script which uses mysql_connect and see if it works.
1893 If it doesn't, it may be you haven't even compiled MySQL support into PHP.
1894  
1895 [2.3] The error message "Warning: MySQL Connection Failed: Can't connect to
1896 local MySQL server through socket '/tmp/mysql.sock' (111)..." is displayed.
1897 What can I do?
1898  
1899  
1900 For RedHat users, Harald Legner suggests this on the mailing list:
1901  
1902 On my RedHat-Box the socket of MySQL is /var/lib/mysql/mysql.sock. In your
1903 php.ini you will find a line
1904 mysql.default_socket = /tmp/mysql.sock
1905 change it to
1906 mysql.default_socket = /var/lib/mysql/mysql.sock
1907 Then restart apache and it will work.
1908  
1909 Here is a fix suggested by Brad Ummer:
1910  
1911 * First, you need to determine what socket is being used by MySQL.
1912 To do this, telnet to your server and go to the MySQL bin directory. In
1913 this directory there should be a file named mysqladmin. Type ./mysqladmin
1914 variables, and this should give you a bunch of info about your MySQL
1915 server, including the socket (/tmp/mysql.sock, for example).
1916 * Then, you need to tell PHP to use this socket.
1917 To do this in phpMyAdmin, you need to complete the socket information in
1918 the config.inc.php.
1919 For example: $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
1920  
1921 Please also make sure that the permissions of this file allow to be
1922 readable by your webserver (i.e. '0755').
1923  
1924 Have also a look at the corresponding section of the MySQL documentation.
1925  
1926 [2.4] Nothing is displayed by my browser when I try to run phpMyAdmin, what can
1927 I do?
1928  
1929 Try to set the $cfg['OBGZip'] directive to FALSE in the phpMyAdmin
1930 configuration file. It helps sometime.
1931 Also have a look at your PHP version number: if it contains "4.0b..." it means
1932 you're running a beta version of PHP. That's not a so good idea, please upgrade
1933 to a plain revision.
1934  
1935 [2.5] Each time I want to insert or change a record or drop a database or a
1936 table, an error 404 (page not found) is displayed or, with HTTP or cookie
1937 authentication, I'm asked to login again. What's wrong?
1938  
1939 Check the value you set for the $cfg['PmaAbsoluteUri'] directive in the
1940 phpMyAdmin configuration file.
1941  
1942 [2.6] I get an "Access denied for user: 'root@localhost' (Using password: YES)
1943 "-error when trying to access a MySQL-Server on a host which is port-forwarded
1944 for my localhost.
1945  
1946 When you are using a port on your localhost, which you redirect via
1947 port-forwarding to another host, MySQL is not resolving the localhost as
1948 expected.
1949 Erik Wasser explains: The solution is: if your host is "localhost" MySQL (the
1950 commandline tool 'mysql' as well) always tries to use the socket connection for
1951 speeding up things. And that doesn't work in this configuration with port
1952 forwarding.
1953 If you enter "127.0.0.1" as hostname, everything is right and MySQL uses the
1954 TCP connection.
1955  
1956 [2.7] Using and creating themes
1957  
1958 Themes are configured with $cfg['ThemePath'], $cfg['ThemeManager'] and $cfg
1959 ['ThemeDefault'].
1960  
1961 Under $cfg['ThemePath'], you should not delete the directory "original" or its
1962 underlying structure, because this is the system theme used by phpMyAdmin.
1963 "original" contains all images and styles, for backwards compatibility and for
1964 all themes that would not include images or css-files.
1965  
1966 If $cfg['ThemeManager'] is enabled, you can select your favorite theme on the
1967 main page. Your selected theme will be stored in a cookie.
1968  
1969  
1970 To create a theme:
1971  
1972 * make a new subdirectory (for example "your_theme_name") under $cfg
1973 ['ThemePath'] (by default themes)
1974 * copy the files and directories from "original" to "your_theme_name"
1975 * edit the css-files in "your_theme_name/css"
1976 * put your new images in "your_theme_name/img"
1977 * edit layout.inc.php in "your_theme_name"
1978 * edit info.inc.php in "your_theme_name" to contain your chosen theme name,
1979 that will be visible in user interface
1980 * make a new screenshot of your theme and save it under "your_theme_name/
1981 screen.png"
1982  
1983 In theme directory there is file info.inc.php which contains theme verbose
1984 name, theme generation and theme version. These versions and generations are
1985 enumerated from 1 and do not have any direct dependence on phpMyAdmin version.
1986 Themes within same generation should be backwards compatible - theme with
1987 version 2 should work in phpMyAdmin requiring version 1. Themes with different
1988 generation are incompatible.
1989  
1990 If you do not want to use your own symbols and buttons, remove the directory
1991 "img" in "your_theme_name". phpMyAdmin will use the default icons and buttons
1992 (from the system-theme "original").
1993  
1994 [2.8] I get "Missing parameters" errors, what can I do?
1995  
1996 Here are a few points to check:
1997  
1998 * In config.inc.php, try to leave the $cfg['PmaAbsoluteUri']directive empty.
1999 See also FAQ 4.7.
2000 * Maybe you have a broken PHP installation or you need to upgrade your Zend
2001 Optimizer. See http://bugs.php.net/bug.php?id=31134.
2002 * If you are using Hardened PHP with the ini directive
2003 varfilter.max_request_variables set to the default (200) or another low
2004 value, you could get this error if your table has a high number of columns.
2005 Adjust this setting accordingly. (Thanks to Klaus Dorninger for the hint).
2006 * In the php.ini directive arg_separator.input, a value of ";" will cause
2007 this error. Replace it with "&;".
2008  
2009  
2010 [3. Known limitations]
2011  
2012 [3.1] When using HTTP authentication, an user who logged out can not relogin in
2013 with the same nick.
2014  
2015 This is related to the authentication mechanism (protocol) used by phpMyAdmin.
2016 To bypass this problem: just close all the opened browser windows and then go
2017 back to phpMyAdmin. You should be able to log in again.
2018  
2019 [3.2] When dumping a large table in compressed mode, I get a memory limit error
2020 or a time limit error.
2021  
2022 Compressed dumps are built in memory and because of this are limited to php's
2023 memory limit. For GZip/BZip2 exports this can be overcome since 2.5.4 using
2024 $cfg['CompressOnFly'] (enabled by default). Zip exports can not be handled this
2025 way, so if you need Zip files for larger dump, you have to use another way.
2026  
2027 [3.3] With InnoDB tables, I lose foreign key relationships when I rename or
2028 alter a table.
2029  
2030 This seems to be a InnoDB bug (fixed in MySQL 3.23.50?).
2031  
2032 [3.4] I am unable to import dumps I created with the mysqldump tool bundled
2033 with the MySQL server distribution.
2034  
2035 The problem is that mysqldump creates invalid comments like this:
2036  
2037 -- MySQL dump 8.22
2038 --
2039 -- Host: localhost Database: database
2040 ---------------------------------------------------------
2041 -- Server version 3.23.54
2042  
2043 The invalid part of the code is the horizontal line made of dashes that appears
2044 once in every dump created with mysqldump. If you want to run your dump you
2045 have to turn it into valid MySQL. This means, you have to add a whitespace
2046 after the first two dashes of the line or add a # before it:
2047 -- -------------------------------------------------------
2048 or
2049 #---------------------------------------------------------
2050  
2051 [3.5] When using nested folders ($cfg['LeftFrameTableSeparator']) there are
2052 some multiple hierarchies displayed in a wrong manner?!
2053  
2054 Please note that you should not use the separating string multiple times
2055 without any characters between them, or at the beginning/end of your table
2056 name. If you have to, think about using another TableSeparator or disabling
2057 that feature
2058  
2059 [3.6] What is currently not supported in phpMyAdmin about InnoDB?
2060  
2061 In Relation view, being able to choose a table in another database, or having
2062 more than one index field in the foreign key.
2063  
2064 In Query-by-example (Query), automatic generation of the query LEFT JOIN from
2065 the foreign table.
2066  
2067 In PDF schema editing, automatic layout.
2068  
2069 [3.7] I have table with many (100+) fields and when I try to browse table I get
2070 series of errors like "Warning: unable to parse url". How can this be fixed?
2071  
2072 Your table neither have a primary key nor an unique one, so we must use a long
2073 expression to identify this row. This causes problems to parse_url function.
2074 The workaround is to create a primary or unique key.
2075  
2076 [3.8] I cannot use (clickable) HTML-forms in fields where I put a
2077 MIME-Transformation onto!
2078  
2079 Due to a surrounding form-container (for multi-row delete checkboxes), no
2080 nested forms can be put inside the table where phpMyAdmin displays the results.
2081 You can, however, use any form inside of a table if keep the parent
2082 form-container with the target to tbl_row_delete.php and just put your own
2083 input-elements inside. If you use a custom submit input field, the form will
2084 submit itself to the displaying page again, where you can validate the
2085 $HTTP_POST_VARS in a transformation. For a tutorial on how to effectively use
2086 transformations, see our Link section on the official phpMyAdmin-homepage.
2087  
2088 [3.9] I get error messages when using "--sql_mode=ANSI" for the MySQL server
2089  
2090 When MySQL is running in ANSI-compatibility mode, there are some major
2091 differences in how SQL is structured (see http://dev.mysql.com/doc/mysql/en/
2092 ANSI_mode.html). Most important of all, the quote-character (") is interpreted
2093 as an identifier quote character and not as a string quote character, which
2094 makes many internal phpMyAdmin operations into invalid SQL statements. There is
2095 no workaround to this behaviour. News to this item will be posted in Bug report
2096 #816858
2097  
2098 [3.10] Homonyms and no primary key: When the results of a SELECT display more
2099 that one column with the same value (for example SELECT lastname from employees
2100 where firstname like 'A%' and two "Smith" values are displayed), if I click
2101 Edit I cannot be sure that I am editing the intended row.
2102  
2103 Please make sure that your table has a primary key, so that phpMyAdmin can use
2104 it for the Edit and Delete links.
2105  
2106 [3.11] The number of records for InnoDB tables is not correct.
2107  
2108 phpMyAdmin uses a quick method to get the row count, and this method only
2109 returns an approximate count in the case of InnoDB tables. See $cfg
2110 ['MaxExactCount'] for a way to modify those results, but this could have a
2111 serious impact on performance.
2112  
2113 [3.12] What are the phpMyAdmin limitations for MySQL 3?
2114  
2115 The number of records in queries containing COUNT and GROUP BY is not correctly
2116 calculated. Also, sorting results of a query like "SELECT * from table GROUP
2117 BY" ... is problematic.
2118  
2119 [3.13] I get an error when entering USE followed by a db name containing an
2120 hyphen.
2121  
2122 The tests I have made with current MySQL 4.1.11 API shows that the API does not
2123 accept this syntax for the USE command. Enclosing the db name with backquotes
2124 works. For further confusion, no backquotes are needed with command-line mysql.
2125  
2126  
2127 [4. ISPs, multi-user installations ]
2128  
2129 [4.1] I'm an ISP. Can I setup one central copy of phpMyAdmin or do I need to
2130 install it for each customer.
2131  
2132 Since version 2.0.3, you can setup a central copy of phpMyAdmin for all your
2133 users. The development of this feature was kindly sponsored by NetCologne GmbH.
2134 This requires a properly setup MySQL user management and phpMyAdmin HTTP or
2135 cookie authentication. See the install section on "Using HTTP authentication".
2136  
2137 [4.2] What's the preferred way of making phpMyAdmin secure against evil access.
2138  
2139 This depends on your system.
2140 If you're running a server which cannot be accessed by other people, it's
2141 sufficient to use the directory protection bundled with your webserver (with
2142 Apache you can use .htaccess files, for example).
2143 If other people have telnet access to your server, you should use phpMyAdmin's
2144 HTTP or cookie authentication features.
2145  
2146 Suggestions:
2147  
2148 * Your config.inc.php file should be chmod 660.
2149 * All your phpMyAdmin files should be chown -R phpmy.apache, where phpmy is a
2150 user whose password is only known to you, and apache is the group under
2151 which Apache runs.
2152 * You should use PHP safe mode, to protect from other users that try to
2153 include your config.inc.php in their scripts.
2154  
2155 [4.3] I get errors about not being able to include a file in /lang or in /
2156 libraries.
2157  
2158 Check php.ini, or ask your sysadmin to check it. The include_path must contain
2159 "." somewhere in it, and open_basedir, if used, must contain "." and "./lang"
2160 to allow normal operation of phpMyAdmin.
2161  
2162 [4.4] phpMyAdmin always gives "Access denied" when using HTTP authentication.
2163  
2164 This could happen for several reasons:
2165  
2166 * $cfg['Servers'][$i]['controluser'] and/or $cfg['Servers'][$i]
2167 ['controlpass'] are wrong.
2168 * The username/password you specify in the login-dialog are invalid.
2169 * You have already setup a security mechanism for the phpMyAdmin-directory,
2170 eg. a .htaccess file. This would interfere with phpMyAdmin's
2171 authentication, so remove it.
2172  
2173 [4.5] Is it possible to let users create their own databases?
2174  
2175 Starting with 2.2.5, in the user management page, you can enter a wildcard
2176 database name for a user (for example "joe%"), and put the privileges you want.
2177 For example, adding SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER
2178 would let a user create/manage his/her database(s).
2179  
2180 [4.6] How can I use the Host-based authentication additions?
2181  
2182 If you have existing rules from an old .htaccess file, you can take them and
2183 add a username between the 'deny'/'allow' and 'from' strings. Using the
2184 username wildcard of '%' would be a major benefit here if your installation is
2185 suited to using it. Then you can just add those updated lines into the $cfg
2186 ['Servers'][$i]['AllowDeny']['rules'] array.
2187  
2188 If you want a pre-made sample, you can try this fragment. It stops the 'root'
2189 user from logging in from any networks other than the private network IP
2190 blocks.
2191 //block root from logging in except from the private networks
2192 $cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
2193 $cfg['Servers'][$i]['AllowDeny']['rules'] = array(
2194 'deny root from all',
2195 'allow root from localhost',
2196 'allow root from 10.0.0.0/8',
2197 'allow root from 192.168.0.0/16',
2198 'allow root from 172.16.0.0/12',
2199 );
2200  
2201 [4.7] Authentication window is displayed more than once, why?
2202  
2203 This happens if you are using a URL to start phpMyAdmin which is different than
2204 the one set in your $cfg['PmaAbsoluteUri']. For example, a missing "www", or
2205 entering with an IP address while a domain name is defined in the config file.
2206  
2207  
2208 [5. Browsers or client OS]
2209  
2210 [5.1] I get an out of memory error, and my controls are non-functional, when
2211 trying to create a table with more than 14 fields.
2212  
2213 We could reproduce this problem only under Win98/98SE. Testing under WinNT4 or
2214 Win2K, we could easily create more than 60 fields.
2215 A workaround is to create a smaller number of fields, then come back to your
2216 table properties and add the other fields.
2217  
2218 [5.2] With Xitami 2.5b4, phpMyAdmin won't process form fields.
2219  
2220 This is not a phpMyAdmin problem but a Xitami known bug: you'll face it with
2221 each script/website that use forms.
2222 Upgrade or downgrade your Xitami server.
2223  
2224 [5.3] I have problems dumping tables with Konqueror (phpMyAdmin 2.2.2).
2225  
2226 With Konqueror 2.1.1: plain dumps, zip and GZip dumps work ok, except that the
2227 proposed file name for the dump is always 'tbl_dump.php'. Bzip2 dumps don't
2228 seem to work.
2229 With Konqueror 2.2.1: plain dumps work; zip dumps are placed into the user's
2230 temporary directory, so they must be moved before closing Konqueror, or else
2231 they disappear. GZip dumps give an error message.
2232 Testing needs to be done for Konqueror 2.2.2.
2233  
2234 [5.4] I can't use the cookie authentication mode because Internet Explorer
2235 never stores the cookies.
2236  
2237 MS Internet Explorer seems to be really buggy about cookies, at least till
2238 version 6. And thanks to Andrew Zivolup we've traced also a PHP 4.1.1 bug in
2239 this area!
2240 Then, if you're running PHP 4.1.1, try to upgrade or downgrade... it may work!
2241  
2242 [5.5] In Internet Explorer 5.0, I get JavaScript errors when browsing my rows.
2243  
2244 Upgrade to at least Internet Explorer 5.5 SP2.
2245  
2246 [5.6] In Internet Explorer 5.0, 5.5 or 6.0, I get an error (like "Page not
2247 found") when trying to modify a row in a table with many fields, or with a text
2248 field
2249  
2250 Your table neither have a primary key nor an unique one, so we must use a long
2251 URL to identify this row. There is a limit on the length of the URL in those
2252 browsers, and this not happen in Netscape, for example. The workaround is to
2253 create a primary or unique key, or use another browser.
2254  
2255 [5.7] I refresh (reload) my browser, and come back to the welcome page.
2256  
2257 Some browsers support right-clicking into the frame you want to refresh, just
2258 do this in the right frame.
2259  
2260 [5.8] With Mozilla 0.9.7 I have problems sending a query modified in the query
2261 box.
2262  
2263 Looks like a Mozilla bug: 0.9.6 was OK. We will keep an eye on future Mozilla
2264 versions.
2265  
2266 [5.9] With Mozilla 0.9.? to 1.0 and Netscape 7.0-PR1 I can't type a whitespace
2267 in the SQL-Query edit area: the page scrolls down.
2268  
2269 This is a Mozilla bug (see bug #26882 at BugZilla).
2270  
2271 [5.10] With Netscape 4.75 I get empty rows between each row of data in a CSV
2272 exported file.
2273  
2274 This is a known Netscape 4.75 bug: it adds some line feeds when exporting data
2275 in octet-stream mode. Since we can't detect the specific Netscape version, we
2276 cannot workaround this bug.
2277  
2278 [5.11] Extended-ASCII characters like German umlauts are displayed wrong.
2279  
2280 Please ensure that you have set your browser's character set to the one of the
2281 language file you have selected on phpMyAdmin's start page. Alternatively, you
2282 can try the auto detection mode that is supported by the recent versions of the
2283 most browsers.
2284  
2285 [5.12] Apple OS X: Safari browser changes special characters to "?".
2286  
2287 This issue has been reported by a OS X user, who adds that Chimera, Netscape
2288 and Mozilla do not have this problem.
2289  
2290 [5.13] With Internet Explorer 5.5 or 6, and HTTP authentication type, I cannot
2291 manage two servers: I login to the first one, then the other one, but if I
2292 switch back to the first, I have to login on each operation.
2293  
2294 This is a bug in Internet Explorer, other browsers do not behave this way.
2295  
2296 [5.14] Using Opera6, I can manage to get to the authentication, but nothing
2297 happens after that, only a blank screen.
2298  
2299 Having $cfg['QueryFrameJS'] set to TRUE, this leads to a bug in Opera6, because
2300 it is not able to interpret frameset definitions written by JavaScript. Please
2301 upgrade to Opera7 at least.
2302  
2303 [5.15] I have display problems with Safari.
2304  
2305 Please upgrade to at least version 1.2.3.
2306  
2307 [5.16] With Internet Explorer, I get "Access is denied" Javascript errors. Or I
2308 cannot make phpMyAdmin work under Windows.
2309  
2310 Please check the following points:
2311  
2312 * Maybe you have defined your PmaAbsoluteUri setting in config.inc.php to an
2313 IP address and you are starting phpMyAdmin with a URL containing a domain
2314 name, or the reverse situation.
2315 * Security settings in IE and/or Microsoft Security Center are too high, thus
2316 blocking scripts execution.
2317 * The Windows Firewall is blocking Apache and MySQL. You must allow http
2318 ports (80 or 443) and MySQL port (usually 3306) in the "in" and "out"
2319 directions.
2320  
2321 [5.17] With Firefox, I cannot delete rows of data or drop a database.
2322  
2323 Many users have confirmed that the Tabbrowser Extensions plugin they installed
2324 in their Firefox is causing the problem.
2325  
2326  
2327 [6. Using phpMyAdmin]
2328  
2329 [6.1] I can't insert new rows into a table / I can't create a table - MySQL
2330 brings up a SQL-error.
2331  
2332 Examine the SQL error with care. Often the problem is caused by specifying a
2333 wrong field-type.
2334 Common errors include:
2335  
2336 * Using VARCHAR without a size argument
2337 * Using TEXT or BLOB with a size argument
2338  
2339 Also, look at the syntax chapter in the MySQL manual to confirm that your
2340 syntax is correct.
2341  
2342 [6.2] When I create a table, I click the Index checkbox for 2 fields and
2343 phpMyAdmin generates only one index with those 2 fields.
2344  
2345 In phpMyAdmin 2.2.0 and 2.2.1, this is the way to create a multi-fields index.
2346 If you want two indexes, create the first one when creating the table, save,
2347 then display the table properties and click the Index link to create the other
2348 index.
2349  
2350 [6.3] How can I insert a null value into my table?
2351  
2352 Since version 2.2.3, you have a checkbox for each field that can be null.
2353 Before 2.2.3, you had to enter "null", without the quotes, as the field's
2354 value. Since version 2.5.5, you have to use the checkbox to get a real NULL
2355 value, so if you enter "NULL" this means you want a literal NULL in the field,
2356 and not a NULL value (this works in PHP4).
2357  
2358 [6.4] How can I backup my database or table?
2359  
2360 Click on a database or table name in the left frame, the properties will be
2361 displayed. Then on the menu, click "Export", you can dump the structure, the
2362 data, or both. This will generate standard SQL statements that can be used to
2363 recreate your database/table.
2364  
2365 You will need to choose "Save as file", so that phpMyAdmin can transmit the
2366 resulting dump to your station. Depending on your PHP configuration, you will
2367 see options to compress the dump. See also the $cfg['ExecTimeLimit']
2368 configuration variable.
2369  
2370 For additional help on this subject, look for the word "dump" in this document.
2371  
2372 [6.5] How can I restore (upload) my database or table using a dump? How can I
2373 run a ".sql" file?
2374  
2375 Click on a database name in the left frame, the properties will be displayed.
2376 Select "Import" from the list of tabs in the right?hand frame (or "SQL" if your
2377 phpMyAdmin version is older than 2.7.0). In the "Location of the text file"
2378 section, type in the path to your dump filename, or use the Browse button. Then
2379 click Go.
2380  
2381 With version 2.7.0, the import engine has been re?written, if possible it is
2382 suggested that you upgrade to take advantage of the new features.
2383  
2384 For additional help on this subject, look for the word "upload" in this
2385 document.
2386  
2387 [6.6] How can I use the relation table in Query-by-example?
2388  
2389 Here is an example with the tables persons, towns and countries, all located in
2390 the database mydb. If you don't have a pma_relation table, create it as
2391 explained in the configuration section. Then create the example tables:
2392  
2393 CREATE TABLE REL_countries (
2394 country_code char(1) NOT NULL default '',
2395 description varchar(10) NOT NULL default '',
2396 PRIMARY KEY (country_code)
2397 ) TYPE=MyISAM;
2398  
2399 INSERT INTO REL_countries VALUES ('C', 'Canada');
2400  
2401 CREATE TABLE REL_persons (
2402 id tinyint(4) NOT NULL auto_increment,
2403 person_name varchar(32) NOT NULL default '',
2404 town_code varchar(5) default '0',
2405 country_code char(1) NOT NULL default '',
2406 PRIMARY KEY (id)
2407 ) TYPE=MyISAM;
2408  
2409 INSERT INTO REL_persons VALUES (11, 'Marc', 'S', '');
2410 INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C');
2411  
2412 CREATE TABLE REL_towns (
2413 town_code varchar(5) NOT NULL default '0',
2414 description varchar(30) NOT NULL default '',
2415 PRIMARY KEY (town_code)
2416 ) TYPE=MyISAM;
2417  
2418 INSERT INTO REL_towns VALUES ('S', 'Sherbrooke');
2419 INSERT INTO REL_towns VALUES ('M', 'Montre'al');
2420  
2421 To setup appropriate links and display information:
2422  
2423 * on table "REL_persons" click Structure, then Relation view
2424 * in Links, for "town_code" choose "REL_towns->code"
2425 * in Links, for "country_code" choose "REL_countries->country_code"
2426 * on table "REL_towns" click Structure, then Relation view
2427 * in "Choose field to display", choose "description"
2428 * repeat the two previous steps for table "REL_countries"
2429  
2430 Then test like this:
2431  
2432 * Click on your db name in the left frame
2433 * Choose "Query"
2434 * Use tables: persons, towns, countries
2435 * Click "Update query"
2436 * In the fields row, choose persons.person_name and click the "Show" tickbox
2437 * Do the same for towns.description and countries.descriptions in the other 2
2438 columns
2439 * Click "Update query" and you will see in the query box that the correct
2440 joins have been generated
2441 * Click "Submit query"
2442  
2443 [6.7] How can I use the "display field" feature?
2444  
2445 Starting from the previous example, create the pma_table_info as explained in
2446 the configuration section, then browse your persons table, and move the mouse
2447 over a town code or country code.
2448  
2449 See also FAQ 6.21 for an additional feature that "display field" enables:
2450 drop-down list of possible values.
2451  
2452 [6.8] How can I produce a PDF schema of my database?
2453  
2454 First the configuration variables "relation", "table_coords" and "pdf_pages"
2455 have to be filled in.
2456  
2457 Then you need to think about your schema layout. Which tables will go on which
2458 pages?
2459  
2460 * Select your database in the left frame.
2461 * Choose "Operations" in the navigation bar at the top.
2462 * Choose "Edit PDF Pages" near the bottom of the page.
2463 * Enter a name for the first PDF page and click Go. If you like, you can use
2464 the "automatic layout," which will put all your linked tables onto the new
2465 page.
2466 * Select the name of the new page (making sure the Edit radio button is
2467 selected) and click Go.
2468 * Select a table from the list, enter its coordinates and click Save.
2469 Coordinates are relative; your diagram will be automatically scaled to fit
2470 the page. When initially placing tables on the page, just pick any
2471 coordinates -- say, 50x50. After clicking Save, you can then use the
2472 graphical editor to position the element correctly.
2473 * When you'd like to look at your PDF, first be sure to click the Save button
2474 beneath the list of tables and coordinates, to save any changes you made
2475 there. Then scroll all the way down, select the PDF options you want, and
2476 click Go.
2477 * Internet Explorer for Windows may suggest an incorrect filename when you
2478 try to save a generated PDF. When saving a generated PDF, be sure that the
2479 filename ends in ".pdf", for example "schema.pdf". Browsers on other
2480 operating systems, and other browsers on Windows, do not have this problem.
2481  
2482 [6.9] phpMyAdmin is changing the type of one of my columns!
2483  
2484 No, it's MySQL that is doing silent column type changing.
2485  
2486 [6.10] When creating a privilege, what happens with underscores in the database
2487 name?
2488  
2489 If you do not put a backslash before the underscore, this is a wildcard grant,
2490 and the underscore means "any character". So, if the database name is
2491 "john_db", the user would get rights to john1db, john2db...
2492  
2493 If you put a backslash before the underscore, it means that the database name
2494 will have a real underscore.
2495  
2496 [6.11] What is the curious symbol o/ in the statistics pages?
2497  
2498 It means "average".
2499  
2500 [6.12] I want to understand some Export options.
2501  
2502 Structure:
2503  
2504 * "Add DROP TABLE" will add a line telling MySQL to drop the table, if it
2505 already exists during the import. It does NOT drop the table after your
2506 export, it only affects the import file.
2507 * "If Not Exists" will only create the table if it doesn't exist. Otherwise,
2508 you may get an error if the table name exists but has a different
2509 structure.
2510 * "Add AUTO_INCREMENT value" ensures that AUTO_INCREMENT value (if any) will
2511 be included in backup.
2512 * "Enclose table and field names with backquotes" ensures that field and
2513 table names formed with special characters are protected.
2514 * "Add into comments" includes column comments, relations, and MIME types set
2515 in the pmadb in the dump as SQL comments (/* xxx */).
2516  
2517 Data:
2518  
2519 * "Complete inserts" adds the column names on every INSERT command, for
2520 better documentation (but resulting file is bigger).
2521 * "Extended inserts" provides a shorter dump file by using only once the
2522 INSERT verb and the table name.
2523 * "Delayed inserts" are best explained in the MySQL manual.
2524 * "Ignore inserts" treats errors as a warning instead. Again, more info is
2525 provided in the MySQL manual, but basically with this selected, invalid
2526 values are adjusted and inserted rather than causing the entire statement
2527 to fail.
2528  
2529 [6.13] I would like to create a database with a dot in its name.
2530  
2531 This is a bad idea, because in MySQL the syntax "database.table" is the normal
2532 way to reference a database and table name. Worse, MySQL will usually let you
2533 create a database with a dot, but then you cannot work with it, nor delete it.
2534  
2535 [6.14] How do I set up the SQL Validator?
2536  
2537 To use it, you need a very recent version of PHP, 4.3.0 recommended, with XML,
2538 PCRE and PEAR support. On your system command line, run "pear install
2539 Net_Socket Net_URL HTTP_Request Mail_Mime Net_DIME SOAP" to get the necessary
2540 PEAR modules for usage.
2541 On a more recent pear version, I had problems with the state of Net_DIME being
2542 beta, so this single command "pear -d preferred_state=beta install -a SOAP"
2543 installed all the needed modules.
2544 If you use the Validator, you should be aware that any SQL statement you submit
2545 will be stored anonymously (database/table/column names, strings, numbers
2546 replaced with generic values). The Mimer SQL Validator itself, is (C) 2001
2547 Upright Database Technology. We utilize it as free SOAP service.
2548  
2549 [6.15] I want to add a BLOB field and put an index on it, but MySQL says "BLOB
2550 column '...' used in key specification without a key length".
2551  
2552 The right way to do this, is to create the field without any indexes, then
2553 display the table structure and use the "Create an index" dialog. On this page,
2554 you will be able to choose your BLOB field, and set a size to the index, which
2555 is the condition to create an index on a BLOB field.
2556  
2557 [6.16] How can I simply move in page with plenty editing fields?
2558  
2559 You can use Ctrl+arrows (Option+Arrows in Safari) for moving on most pages with
2560 many editing fields (table structure changes, row editing, etc.) (must be
2561 enabled in configuration - see. $cfg['CtrlArrowsMoving']). You can also have a
2562 look at the directive $cfg['DefaultPropDisplay'] ('vertical') and see if this
2563 eases up editing for you.
2564  
2565 [6.17] Transformations: I can't enter my own mimetype! WTF is this feature then
2566 useful for?
2567  
2568 Slow down :). Defining mimetypes is of no use, if you can't put transformations
2569 on them. Otherwise you could just put a comment on the field. Because entering
2570 your own mimetype will cause serious syntax checking issues and validation,
2571 this introduces a high-risk false-user-input situation. Instead you have to
2572 initialize mimetypes using functions or empty mimetype definitions.
2573 Plus, you have a whole overview of available mimetypes. Who knows all those
2574 mimetypes by heart so he/she can enter it at will?
2575  
2576 [6.18] Bookmarks: Where can I store bookmarks? Why can't I see any bookmarks
2577 below the query box? What is this variable for?
2578  
2579 Any query you have executed can be stored as a bookmark on the page where the
2580 results are displayed. You will find a button labeled 'Bookmark this query'
2581 just at the end of the page.
2582 As soon as you have stored a bookmark, it is related to the database you run
2583 the query on. You can now access a bookmark dropdown on each page, the query
2584 box appears on for that database.
2585  
2586 Since phpMyAdmin 2.5.0 you are also able to store variables for the bookmarks.
2587 Just use the string /*[VARIABLE]*/ anywhere in your query. Everything which is
2588 put into the value input box on the query box page will replace the string "/*
2589 [VARIABLE]*/" in your stored query. Just be aware of that you HAVE to create a
2590 valid query, otherwise your query won't be even able to be stored in the
2591 database.
2592 Also remember, that everything else inside the /*[VARIABLE]*/ string for your
2593 query will remain the way it is, but will be stripped of the /**/ chars. So you
2594 can use:
2595  
2596 /*, [VARIABLE] AS myname */
2597  
2598 which will be expanded to
2599  
2600 , VARIABLE as myname
2601  
2602 in your query, where VARIABLE is the string you entered in the input box. If an
2603 empty string is provided, no replacements are made.
2604  
2605 A more complex example. Say you have stored this query:
2606  
2607 SELECT Name, Address FROM addresses WHERE 1 /* AND Name LIKE '%[VARIABLE]%' */
2608  
2609 Say, you now enter "phpMyAdmin" as the variable for the stored query, the full
2610 query will be:
2611  
2612 SELECT Name, Address FROM addresses WHERE 1 AND Name LIKE '%phpMyAdmin%'
2613  
2614 You can use multiple occurrences of /*[VARIABLE]*/ in a single query.
2615 NOTE THE ABSENCE OF SPACES inside the "/**/" construct. Any spaces inserted
2616 there will be later also inserted as spaces in your query and may lead to
2617 unexpected results especially when using the variable expansion inside of a
2618 "LIKE ''" expression.
2619 Your initial query which is going to be stored as a bookmark has to yield at
2620 least one result row so you can store the bookmark. You may have that to work
2621 around using well positioned "/**/" comments.
2622  
2623 [6.19] How can I create simple LaTeX document to include exported table?
2624  
2625 You can simply include table in your LaTeX documents, minimal sample document
2626 should look like following one (assuming you have table exported in file
2627 table.tex):
2628  
2629 \documentclass{article} % or any class you want
2630 \usepackage{longtable} % for displaying table
2631 \begin{document} % start of document
2632 \include{table} % including exported table
2633 \end{document} % end of document
2634  
2635 [6.20] In MySQL 4, I see a lot of databases which are not mine, and cannot
2636 access them.
2637  
2638 Upgrading to MySQL 4 usually gives users those global privileges: CREATE
2639 TEMPORARY TABLES, SHOW DATABASES, LOCK TABLES. Those privileges also enable
2640 users to see all the database names. See this bug report.
2641  
2642 So if your users do not need those privileges, you can remove them and their
2643 databases list will shorten.
2644  
2645 [6.21] In edit/insert mode, how can I see a list of possible values for a
2646 field, based on some foreign table?
2647  
2648 You have to setup appropriate links between the tables, and also setup the
2649 "display field" in the foreign table. See FAQ 6.6 for an example. Then, if
2650 there are 200 values or less in the foreign table, a drop-down list of values
2651 will be available. You will see two lists of values, the first list containing
2652 the key and the display field, the second list containing the display field and
2653 the key. The reason for this is to be able to type the first letter of either
2654 the key or the display field.
2655  
2656 For 200 values or more, a distinct window will appear, to browse foreign key
2657 values and choose one.
2658  
2659 [6.22] Bookmarks: Can I execute a default bookmark automatically when entering
2660 Browse mode for a table?
2661  
2662 Yes. If a bookmark has the same label as a table name, it will be executed.
2663  
2664 [6.23] Export: I heard phpMyAdmin can export Microsoft Excel files, how can I
2665 enable that?
2666  
2667 Current version does support direct export to Microsoft Excel and Word versions
2668 2000 and newer. If you need export older versions, you can use CSV suitable for
2669 Microsoft Excel, which works out of the box or you can try native experimental
2670 MS Excel exporter. This export has several problems, most important are
2671 limitation of cell content to 255 chars and no support for charsets, so think
2672 carefully whether you want to enable this.. For enabling this you need to set
2673 $cfg['TempDir'] to place where web server user can write (for example './tmp')
2674 and install PEAR module Spreadsheet_Excel_Writer into php include path. The
2675 installation can be done by following command:
2676  
2677 pear -d preferred_state=beta install -a Spreadsheet_Excel_Writer
2678  
2679 First part of switches set we want to install beta version of that module (no
2680 stable version available yet) and then we tell pear we want to satisfy
2681 dependencies.
2682  
2683 If you are running in PHP safe mode, you will have to set in php.ini the
2684 safe_mode_include_dir to the directory where your PEAR modules are located, for
2685 example:
2686  
2687 safe_mode_include_dir = /usr/local/lib/php
2688  
2689 To create the temporary directory on a UNIX-based system, you can do:
2690  
2691 cd phpMyAdmin
2692 mkdir tmp
2693 chmod o+rwx tmp
2694  
2695 [6.24] Now that phpMyAdmin supports native MySQL 4.1.x column comments, what
2696 happens to my column comments stored in pmadb?
2697  
2698 Automatic migration of a table's pmadb-style column comments to the native ones
2699 is done whenever you enter Structure page for this table.
2700  
2701  
2702 [7. phpMyAdmin project]
2703  
2704 [7.1] I have found a bug. How do I inform developers?
2705  
2706 Our Bug Tracker is located at http://sourceforge.net/projects/phpmyadmin/ under
2707 the Bugs section.
2708  
2709 But please first discuss your bug with other users:
2710 http://sourceforge.net/projects/phpmyadmin/ (and choose Forums)
2711  
2712 [7.2] I want to translate the messages to a new language or upgrade an existing
2713 language, where do I start?
2714  
2715 Always use the current CVS version of your language file. For a new language,
2716 start from english-iso-8859-1.inc.php. If you don't know how to get the CVS
2717 version, please ask one of the developers.
2718 Please note that we try not to use HTML entities like &eacute; in the
2719 translations, since we define the right character set in the file. With HTML
2720 entities, the text on JavaScript messages would not display correctly. However
2721 there are some entities that need to be there, for quotes ,non-breakable
2722 spaces, ampersands, less than, greater than.
2723 You can then put your translations, as a zip file to avoid losing special
2724 characters, on the sourceforge.net translation tracker.
2725 It would be a good idea to subscribe to the phpmyadmin-translators mailing
2726 list, because this is where we ask for translations of new messages.
2727  
2728 [7.3] I would like to help out with the development of phpMyAdmin. How should I
2729 proceed?
2730  
2731 The following method is preferred for new developers:
2732  
2733 1. fetch the current CVS tree over anonymous CVS:
2734 cvs -d:pserver:anonymous@phpmyadmin.cvs.sourceforge.net:/cvsroot/phpmyadmin
2735 login
2736 [Password: simply press the Enter key]
2737 cvs -z3 -d:pserver:anonymous@phpmyadmin.cvs.sourceforge.net:/cvsroot/
2738 phpmyadmin checkout phpMyAdmin
2739 [This will create a new sub-directory named phpMyAdmin]
2740 2. add your stuff
2741 3. put the modified files (tar'ed and gzip'ed) inside the patch tracker of the
2742 phpMyAdmin SourceForge account.
2743  
2744 Write access to the CVS tree is granted only to experienced developers who have
2745 already contributed something useful to phpMyAdmin.
2746 Also, have a look at the Developers section.
2747  
2748  
2749 [8. Security ]
2750  
2751 [8.1] Security alert, dated 2003-06-18.
2752  
2753 Last update of this FAQ: 2003-07-22.
2754  
2755 The phpMyAdmin development team received notice of this security alert: http://
2756 www.securityfocus.com/archive/1/325641.
2757  
2758 The team regrets that the author did not communicate with us before sending
2759 this alert. However, here is our current reply to the points mentioned:
2760  
2761 * "Directory transversal attack"
2762  
2763 This problem had been fixed in version 2.5.0, even if the author reports
2764 the 2.5.2 development version as vulnerable, which we could not reproduce.
2765  
2766 * "Remote local file retrieving"
2767  
2768 This is a misleading title, as the author tells in his text: "Note that you
2769 can't request files ( only dirs )".
2770  
2771 * "Remote internal directory listing"
2772  
2773 It was possible to retrieve the list of phpMyAdmin's directory (which we
2774 doubt can cause any damage), but we fixed this in the 2.5.2 version.
2775  
2776 * "XSS and Path disclosures"
2777  
2778 Most of the XSS problems have been fixed in version 2.5.0. The rest have
2779 been fixed in the 2.5.2 version.
2780  
2781 We believe that the Path disclosures problems have also been fixed in
2782 version 2.5.2.
2783  
2784 * "Information encoding weakness"
2785  
2786 We believe that an exploit for this weakness would be difficult to achieve.
2787 However version 2.5.2 now encrypts the password with the well-known
2788 blowfish algorithm.
2789  
2790  
2791 [8.2] Security alert, dated 2004-06-29.
2792  
2793 Last update of this FAQ: 2004-06-30.
2794  
2795 The phpMyAdmin development team received notice of this security alert: http://
2796 securityfocus.com/archive/1/367486/2004-06-26/2004-07-02/0
2797  
2798 We would like to put emphasis on the disappointment we feel when a bugreporter
2799 does not contact the authors of a software first, before posting any exploits.
2800 The common way to report this, is to give the developers a reasonable amount of
2801 time to respond to an exploit before it is made public.
2802  
2803 We acknowledge that phpMyAdmin versions 2.5.1 to 2.5.7 are vulnerable to this
2804 problem, if each of the following conditions are met:
2805  
2806 * The Web server hosting phpMyAdmin is not running in safe mode.
2807 * In config.inc.php, $cfg['LeftFrameLight'] is set to FALSE (the default
2808 value of this parameter is TRUE).
2809 * There is no firewall blocking requests from the Web server to the attacking
2810 host.
2811  
2812  
2813 Version 2.5.7-pl1 was released with a fix for this vulnerability.
2814  
2815 [8.3] About new security alerts
2816  
2817 Please refer to http://www.phpmyadmin.net for the complete list of security
2818 alerts.
2819  
2820  
2821 Developers Information
2822  
2823 phpMyAdmin is Open Source, so you're invited to contribute to it. Many great
2824 features have been written by other people and you too can help to make
2825 phpMyAdmin a useful tool.
2826  
2827 If you're planning to contribute source, please read the following information:
2828  
2829 * All files include libraries/header.inc.php (layout),. libraries/
2830 common.lib.php (common functions) and config.inc.php.
2831 Only configuration data should go in config.inc.php. Please keep it free
2832 from other code.
2833 Commonly used functions should be added to libraries/common.lib.php and
2834 more specific ones may be added within a library stored into the libraries
2835 sub-directory.
2836 * Obviously, you're free to use whatever coding style you want. But please
2837 try to keep your code as simple as possible: beginners are using phpMyAdmin
2838 as an example application.
2839 As far as possible, we want the scripts to be XHTML1.0 and CSS2 compliant
2840 on one hand, they fit the PEAR coding standards on the other hand. Please
2841 pay attention to this.
2842 * Please try to keep up the file-naming conventions. Table-related stuff goes
2843 to tbl_*.php, db-related code to db_*.php, server-related tools to
2844 server_*.php and so on.
2845 * Please don't use verbose strings in your code, instead add the string (at
2846 least) to english-iso-8859-1.inc.php and print() it out.
2847 * If you want to be really helpful, write an entry for the ChangeLog.
2848 * The DBG extension (PHP Debugger DBG) is now supported by phpMyAdmin for
2849 developers to better debug and profile their code.
2850 Please see the $cfg['DBG']* configuration options for more information.
2851 This is in memoriam of the Space Shuttle Columbia (STS-107) which was lost
2852 during its re-entry into Earth's atmosphere and in memory of the brave men
2853 and women who gave their lives for the people of Earth.
2854  
2855  
2856 Credits
2857  
2858  
2859 phpMyAdmin - Credits
2860 ====================
2861  
2862 CREDITS, in chronological order
2863 -------------------------------
2864  
2865 - Tobias Ratschiller <tobias_at_ratschiller.com>
2866 * creator of the phpmyadmin project
2867 * maintainer from 1998 to summer 2000
2868  
2869 - Marc Delisle <Marc.Delisle_at_cegepsherbrooke.qc.ca>
2870 * multi-language version
2871 * various fixes and improvements
2872 * SQL analyser (most of it)
2873 * current project maintainer
2874  
2875 - Olivier Mu:ller <om_at_omnis.ch>
2876 * started SourceForge phpMyAdmin project in March 2001
2877 * sync'ed different existing CVS trees with new features and bugfixes
2878 * multi-language improvements, dynamic language selection
2879 * current project maintainer
2880 * many bugfixes and improvements
2881  
2882 - Loi:c Chapeaux <lolo_at_phpheaven.net>
2883 * rewrote and optimized javascript, DHTML and DOM stuff
2884 * rewrote the scripts so they fit the PEAR coding standards and
2885 generate XHTML1.0 and CSS2 compliant codes
2886 * improved the language detection system
2887 * many bugfixes and improvements
2888  
2889 - Robin Johnson <robbat2_at_users.sourceforge.net>
2890 * database maintenance controls
2891 * table type code
2892 * Host authentication IP Allow/Deny
2893 * DB-based configuration (Not completed)
2894 * SQL parser and pretty-printer
2895 * SQL validator
2896 * many bugfixes and improvements
2897  
2898 - Armel Fauveau <armel.fauveau_at_globalis-ms.com>
2899 * bookmarks feature
2900 * multiple dump feature
2901 * gzip dump feature
2902 * zip dump feature
2903  
2904 - Geert Lund <glund_at_silversoft.dk>
2905 * various fixes
2906 * moderator of the phpMyAdmin former users forum at phpwizard.net
2907  
2908 - Korakot Chaovavanich <korakot_at_iname.com>
2909 * "insert as new row" feature
2910  
2911 - Pete Kelly <webmaster_at_trafficg.com>
2912 * rewrote and fix dump code
2913 * bugfixes
2914  
2915 - Steve Alberty <alberty_at_neptunlabs.de>
2916 * rewrote dump code for PHP4
2917 * mySQL table statistics
2918 * bugfixes
2919  
2920 - Benjamin Gandon <gandon_at_isia.cma.fr>
2921 * main author of the version 2.1.0.1
2922 * bugfixes
2923  
2924 - Alexander M. Turek <me_at_derrabus.de>
2925 * MySQL 4.0 / 4.1 / 5.0 compatibility
2926 * abstract database interface (PMA_DBI) with MySQLi support
2927 * privileges administration
2928 * XML exports
2929 * various features and fixes
2930 * German language file updates
2931  
2932 - Mike Beck <mike.beck_at_web.de>
2933 * automatic joins in QBE
2934 * links column in printview
2935 * Relation view
2936  
2937 - Michal ?iha? <michal_at_cihar.com>
2938 * enhanced index creation/display feature
2939 * feature to use a different charset for HTML than for MySQL
2940 * improvements of export feature
2941 * various features and fixes
2942 * Czech language file updates
2943  
2944 - Christophe Gesche' from the "MySQL Form Generator for PHPMyAdmin"
2945 (http://sourceforge.net/projects/phpmysqlformgen/)
2946 * suggested the patch for multiple table printviews
2947  
2948 - Garvin Hicking <me_at_supergarv.de>
2949 * built the patch for vertical display of table rows
2950 * built the Javascript based Query window + SQL history
2951 * Improvement of column/db comments
2952 * (MIME)-Transformations for columns
2953 * Use custom alias names for Databases in left frame
2954 * hierarchical/nested table display
2955 * PDF-scratchboard for WYSIWYG-distribution of PDF relations
2956 * new icon sets
2957 * vertical display of column properties page
2958 * some bugfixes, features, support, German language additions
2959  
2960 - Yukihiro Kawada <kawada_at_den.fujifilm.co.jp>
2961 * japanese kanji encoding conversion feature
2962  
2963 - Piotr Roszatycki <d3xter_at_users.sourceforge.net> and Dan Wilson
2964 * the Cookie authentication mode
2965  
2966 - Axel Sander <n8falke_at_users.sourceforge.net>
2967 * table relation-links feature
2968  
2969 - Maxime Delorme <delorme.maxime_at_free.fr>
2970 * PDF schema output, thanks also to Olivier Plathey for the
2971 "FPDF" library (see http://www.fpdf.org/) and Steven Wittens
2972 for the "UFPDF" library (see http://www.acko.net/node/56).
2973  
2974 - Olof Edlund <olof.edlund_at_upright.se>
2975 * SQL validator server
2976  
2977 - Ivan R. Lanin <ivanlanin_at_users.sourceforge.net>
2978 * phpMyAdmin logo (until June 2004)
2979  
2980 - Mike Cochrane <mike_at_graftonhall.co.nz>
2981 * blowfish library from the Horde project
2982  
2983 - Marcel Tschopp <ne0x_at_users.sourceforge.net>
2984 * mysqli support
2985 * many bugfixes and improvements
2986  
2987 - Michael Keck <mkkeck_at_users.sourceforge.net>
2988 * redesign for 2.6.0
2989 * phpMyAdmin sailboat logo (June 2004)
2990  
2991 - Mathias Landha:usser
2992 * Representation at conferences
2993  
2994 - Sebastian Mendel <cybot_tm_at_users.sourceforge.net>
2995 * interface improvements
2996 * various bugfixes
2997  
2998 And also to the following people who have contributed minor changes,
2999 enhancements, bugfixes or support for a new language since version 2.1.0:
3000  
3001 Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita,
3002 Pe'ter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow,
3003 Mats Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kla:ger,
3004 Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg, Andreas Pauley,
3005 Bernard M. Piller, Laurent Haas, "Sakamoto", Yuval Sarna,
3006 www.securereality.com.au, Alexis Soulard, Alvar Soome, Siu Sun, Peter Svec,
3007 Michael Tacelosky, Rachim Tamsjadi, Kositer Uros,
3008 Lui's V., Martijn W. van der Lee,
3009 Algis Vainauskas, Daniel Villanueva, Vinay, Ignacio Vazquez-Abrams, Chee Wai,
3010 Jakub Wilk, Thomas Michael Winningham, Vilius Zigmantas, "Manuzhai".
3011  
3012  
3013 Original Credits of Version 2.1.0
3014 ---------------------------------
3015  
3016 This work is based on Peter Kuppelwieser's MySQL-Webadmin. It was his idea
3017 to create a web-based interface to MySQL using PHP3. Although I have not
3018 used any of his source-code, there are some concepts I've borrowed from
3019 him. phpMyAdmin was created because Peter told me he wasn't going to
3020 further develop his (great) tool.
3021 Thanks go to
3022 - Amalesh Kempf <ak-lsml_at_living-source.com> who contributed the
3023 code for the check when dropping a table or database. He also suggested
3024 that you should be able to specify the primary key on tbl_create.php3. To
3025 version 1.1.1 he contributed the ldi_*.php3-set (Import text-files) as
3026 well as a bug-report. Plus many smaller improvements.
3027 - Jan Legenhausen <jan_at_nrw.net>: He made many of the changes that
3028 were introduced in 1.3.0 (including quite significant ones like the
3029 authentication). For 1.4.1 he enhanced the table-dump feature. Plus
3030 bug-fixes and help.
3031 - Marc Delisle <DelislMa_at_CollegeSherbrooke.qc.ca> made phpMyAdmin
3032 language-independent by outsourcing the strings to a separate file. He
3033 also contributed the French translation.
3034 - Alexandr Bravo <abravo_at_hq.admiral.ru> who contributed
3035 tbl_select.php3, a feature to display only some fields from a table.
3036 - Chris Jackson <chrisj_at_ctel.net> added support for MySQL
3037 functions in tbl_change.php3. He also added the
3038 "Query by Example" feature in 2.0.
3039 - Dave Walton <walton_at_nordicdms.com> added support for multiple
3040 servers and is a regular contributor for bug-fixes.
3041 - Gabriel Ash <ga244_at_is8.nyu.edu> contributed the random access
3042 features for 2.0.6.
3043 The following people have contributed minor changes, enhancements, bugfixes
3044 or support for a new language:
3045 Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas Kleemann,
3046 Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel Piankov,
3047 Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein, Jannis Hermanns,
3048 G. Wieggers.
3049  
3050 And thanks to everyone else who sent me email with suggestions, bug-reports
3051 and or just some feedback.
3052  
3053  
3054 Valid XHTML 1.0! Valid CSS!
3055