update
[phpmyadmin/crack.git] / Documentation.html
blob3f495be5b4bf56d9c78508ae356e5e948a1ef63f
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
4 <!-- $Id$ -->
5 <!--
6 vim: expandtab ts=4 sw=4 sts=4 tw=78
7 -->
9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
11 <title>phpMyAdmin 2.4.0-rc3 - Documentation</title>
12 <link rel="stylesheet" type="text/css" href="docs.css" />
13 </head>
15 <body>
16 <a name="top"></a><br />
18 <div class="header">
19 <hr noshade="noshade" width="100%" />
20 <a href="#top">Top</a> &nbsp;-&nbsp;
21 <a href="#require">Requirements</a> &nbsp;-&nbsp;
22 <a href="#intro">Introduction</a> &nbsp;-&nbsp;
23 <a href="#setup">Installation</a> &nbsp;-&nbsp;
24 <a href="#config">Configuration</a> &nbsp;-&nbsp;
25 <a href="#faq">FAQ</a> &nbsp;-&nbsp;
26 <a href="#developers">Developers</a> &nbsp;-&nbsp;
27 <a href="#credits">Credits</a> &nbsp;-&nbsp;
28 <a href="translators.html">Translators</a>
29 <hr noshade="noshade" width="100%" />
30 </div>
32 <h1>phpMyAdmin 2.4.0-rc3 Documentation</h1>
35 <!-- TOP MENU -->
36 <ul>
37 <li>
38 <a href="http://www.phpmyadmin.net/">
39 Sourceforge phpMyAdmin project page&nbsp;&nbsp;&nbsp;[ http://www.phpmyadmin.net/ ]
40 </a>
41 </li>
42 <li>
43 Local documents:
44 <ul>
45 <li>Version history: <a href="ChangeLog">ChangeLog</a></li>
46 <li>General notes: <a href="README">README</a></li>
47 <li>License: <a href="LICENSE">LICENSE</a></li>
48 </ul>
49 </li>
50 <li>
51 Documentation version:
52 <i>$Id$</i>
53 </li>
54 </ul>
57 <!-- REQUIREMENTS -->
58 <a name="require"></a><br />
59 <h2>Requirements</h2>
61 <ul>
62 <li>
63 PHP3 or PHP4: phpMyAdmin widely uses the 'str_replace()' php function
64 that was added in PHP&nbsp;3.0.6, but was buggy up until
65 PHP&nbsp;3.0.8.
66 Then <span class="important">you should not run this script with
67 PHP3&nbsp;&lt;&nbsp;3.0.8</span>.<br />
68 PHP also needs to be <span class="important">compiled with MySQL
69 support</span>;
70 </li>
71 <li>
72 MySQL (tested with 3.21.x, 3.22.x, 3.23.x and 4.0.x);<br />
73 <span class="important">Note: Because of a major change in the definition
74 syntax of string field types, this version of phpMyAdmin probably won't
75 work correctly with MySQL&nbsp;&gt;=&nbsp;4.1.0!</span>
76 </li>
77 <li>
78 a web-browser (doh!).
79 </li>
80 </ul>
83 <!-- INTRODUCTION -->
84 <a name="intro"></a><br />
85 <h2>Introduction</h2>
87 <p>
88 phpMyAdmin can manage a whole MySQL server (needs a super-user) as well as
89 a single database. To accomplish the latter you'll need a properly set up
90 MySQL user who can read/write only the desired database. It's up to you to
91 look up the appropriate part in the MySQL manual.<br />
92 Currently phpMyAdmin can:
93 </p>
95 <ul>
96 <li>create and drop databases</li>
97 <li>create, copy, drop, rename and alter tables</li>
98 <li>do table maintenance</li>
99 <li>delete, edit and add fields</li>
100 <li>execute any SQL-statement, even batch-queries</li>
101 <li>manage keys on fields</li>
102 <li>load text files into tables</li>
103 <li>create (*) and read dumps of tables</li>
104 <li>export (*) data to CSV, XML and Latex formats</li>
105 <li>administer multiple servers</li>
106 <li>manage MySQL users and privileges</li>
107 <li>check referential integrity</li>
108 <li>using Query-by-example (QBE), create complex queries automatically connecting required tables</li>
109 <li>create PDF graphics of your Database layout</li>
110 <li>search globally in a database or a subset of it</li>
111 <li>
112 communicate in
113 <a href="./translators.html">42 different languages</a>
114 </li>
115 </ul>
117 <p class="footnote">
118 (*)&nbsp;
119 phpMyAdmin can compress (Zip, GZip -RFC 1952- or Bzip2 formats) dumps
120 and CSV exports if you use PHP4&nbsp;>=&nbsp;4.0.4 with Zlib support
121 (<tt>--with-zlib</tt>) and/or Bzip2 support (<tt>--with-bz2</tt>).
122 </p>
125 <!-- INSTALLATION -->
126 <a name="setup"></a><br />
127 <h2>Installation</h2>
130 <span class="important">NOTE: phpMyAdmin does not apply any special security
131 methods to the MySQL database server. It is still the sysadmin's job to
132 grant permissions on the MySQL databases properly. </span>phpMyAdmin's
133 &quot;Privileges&quot; page can be used for this.
134 </p>
137 <span class="important">Warning for Mac users:</span>if you are on a MacOS
138 version before OS X, Stuffit unstuffs with Mac formats.<br />
139 So you'll have to resave as in Bbedit to unix style ALL phpMyAdmin scripts
140 before uploading them to your server, as PHP seems not to like Mac-style
141 end of lines character (&quot;<tt>\r</tt>&quot;).
142 </p>
145 <span class="important">Documentation warning:</span> when you see in this
146 document a <i>.php3</i> file extension, please transpose to <i>.php</i>
147 if you are using a kit with files having this extension.
148 </p>
150 <p><b>Quick Install:</b></p>
151 <ol>
152 <li> Choose and download a distribution kit with the files having the
153 extension (<i>.php3</i> or <i>.php</i>) depending on the way your
154 web/PHP server interprets those extensions.</li>
155 <li> Untar or unzip the distribution (be sure to unzip the subdirectories):
156 <tt>tar -xzvf phpMyAdmin_x.x.x.tar.gz</tt> in your webserver's
157 document root. If you don't have direct access to your document root,
158 put the files in a directory on your local machine, and, after step 3,
159 transfer the directory on your web server using, for example, ftp.</li>
160 <li> Open the file config.inc.php3 in your favourite editor and change
161 the values for host, user, password and authentication mode to fit
162 your environment. Here, &quot;host&quot; means the MySQL server.
163 Also insert the correct value for <tt>$cfg['PmaAbsoluteUri']</tt>.
164 Have a look at
165 <a href="#config">Configuration section</a> for an
166 explanation of all values.</li>
167 <li> It is recommended that you protect the directory in which you
168 installed phpMyAdmin (unless it's on a closed intranet, or you wish to
169 use http or cookie authentication), for example with HTTP-AUTH (in a
170 <i>.htaccess</i> file). See the
171 <a href="#faq">FAQ section</a> for additional
172 information.</li>
173 <li> Open the file
174 <i>&lt;www.your-host.com&gt;/&lt;your-install-dir&gt;/index.php3</i>
175 in your browser. phpMyAdmin should now display a welcome screen
176 and your databases, or a login dialog if using http or cookie
177 authentication mode.</li>
178 </ol>
180 <p><b>Upgrading from an older version:</b></p>
181 <ul>
182 <li>Please do not copy your older config.inc.php3 over the new one: it may
183 offer new configuration variables, and the new version may depend on
184 these for normal behavior. It is suggested instead to insert your site
185 values in the new one.</li>
186 </ul>
188 <p><b>Using authentication modes:</b></p>
189 <ul>
190 <li>Http and cookie authentication modes are recommended in a <b>multi-user
191 environment</b> where you want to give users access to their own
192 database and don't want them to play around with others.
193 <br />
194 Nevertheless be aware that MS Internet Explorer seems to be really
195 buggy about cookies, at least till version 6. And php 4.1.1 is also a
196 bit buggy in this area!<br />
197 Even in a <b>single-user environment</b>, you might prefer to use
198 http or cookie mode so that your user/password pair are not in clear
199 in the configuration file.<br /><br /></li>
201 <li>Http and cookie authentication modes are more secure: the MySQL
202 password does not need to be set in the phpMyAdmin configuration file
203 (except for the &quot;controluser&quot; -see the
204 <a href="#config">Configuration section</a>).
205 <br />
206 However, keep in mind that the password travels in plain text, unless
207 you are using the https protocol.
208 <br />
209 In cookie mode, we send the password in a temporary cookie, so most
210 browsers should not store the password in their cookie file.
211 <br /><br /></li>
213 <li>
214 For 'http' and 'cookie' modes, phpMyAdmin needs a controluser that has
215 <b>only</b> the <tt>SELECT</tt> privilege on the <i>mysql.user (all
216 columns except &quot;Password&quot;)</i>, <i>mysql.db (all columns)</i>
217 &amp; <i>mysql.tables_priv (all columns except &quot;Grantor&quot;
218 &amp; &quot;Timestamp&quot;) </i>tables.<br />
219 You must specify the details for the controluser in the
220 <i>config.inc.php3</i> file under the
221 <tt>$cfg['Servers'][$i]['controluser']</tt>&amp;
222 <tt>$cfg['Servers'][$i]['controlpass']</tt> settings.<br />
223 This example assumes you want to use <tt>pma</tt> as the controluser
224 and <tt>pmapass</tt> as the controlpass, but <b>this is only an example:
225 use something else in your file:</b>
226 <pre>
228 GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
229 GRANT SELECT (Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv,
230 Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv,
231 Grant_priv, References_priv, Index_priv, Alter_priv)
232 ON mysql.user TO 'pma'@'localhost';
233 GRANT SELECT ON mysql.db TO 'pma'@'localhost';
234 GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
235 ON mysql.tables_priv TO 'pma'@'localhost';
237 </pre>
238 ... and if you want to use the many new relation and bookmark
239 features:
240 <pre>
242 GRANT SELECT, INSERT, UPDATE, DELETE ON &lt;pma_db&gt; TO 'pma'@'localhost';
243 </pre>
244 (this of course requires you to have a special DB for
245 phpMyAdmin, the contents will be explained later)
246 </li>
247 <li>
248 Then each of the <i>true</i> users should be granted a set of
249 privileges on a set of particular databases. Normally you shouldn't
250 give global privileges to an ordinary user, unless you understand
251 the impact of those privileges (for example, you are creating
252 a superuser).<br />
253 For example, to grant the user <i>real_user</i> with
254 all privileges on the database <i>user_base</i>:<br />
255 &nbsp;&nbsp;&nbsp;<tt>GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';</tt>
256 <br />
257 What the user may now do is controlled entirely by the MySQL user
258 management system.<br />
259 With http or cookie auth mode, you don't need to fill the user/password
260 fields inside the <tt>$cfg['Servers']</tt> array.<br />
261 </li>
262 </ul>
264 <p><b>'http' authentication mode:</b></p>
265 <ul>
266 <li>Was called 'advanced' in versions before 2.2.3.</li>
267 <li>Introduced in 1.3.0, it uses Basic HTTP authentication method and
268 allows you to login as any valid MySQL user.</li>
269 <li>Is only supported with PHP running as an Apache module, not with
270 cgi.</li>
271 </ul>
273 <p><b>'cookie' authentication mode:</b></p>
274 <ul>
275 <li>You can use this method as a replacement for the http
276 authentication (for example, if you're running IIS).
277 </li>
278 <li>Obviously, the user must enable cookies in the browser.</li>
279 <li>With this mode, the use can truly logout of phpMyAdmin and login back
280 with the same username.</li>
281 </ul>
283 <p><b>'config' authentication mode:</b></p>
284 <ul>
285 <li>This mode is the less secure one because it requires you to fill the
286 <tt>$cfg['Servers'][$i]['user']</tt> and
287 <tt>$cfg['Servers'][$i]['password']</tt> fields.<br />
288 But you don't need to setup a &quot;controluser&quot; here:
289 using the <tt>$cfg['Servers'][$i]['only_db']</tt> might be enough.</li>
290 <li>In the ISP FAQ section, there is an entry explaining how to protect
291 your configuration file.<br /></li>
292 <li>For additional security in this mode, you may wish to consider the
293 Host authentication <tt>$cfg['Servers'][$i]['AllowDeny']['order']</tt>
294 and <tt>$cfg['Servers'][$i]['AllowDeny']['rules']</tt> configuration
295 directives.</li>
296 </ul>
299 <!-- CONFIGURATION -->
300 <a name="config"></a><br />
301 <h2>Configuration</h2>
304 <span class="important">Warning for Mac users:</span> php seems not to like
305 Mac end of lines character (&quot;<tt>\r</tt>&quot;). So ensure you choose
306 the option that allows to use the *nix end of line character
307 (&quot;<tt>\n</tt>&quot;) in your text editor before registering a script
308 you have modified.
309 </p>
311 <p>All configurable data is placed in <i>config.inc.php3</i>.</p>
312 <dl>
313 <dt><b>$cfg['PmaAbsoluteUri']</b> string</dt>
314 <dd>
315 Sets here the complete url (with full path) to your phpMyAdmin version.
316 E.g. <tt>http://www.your_web.net/path_to_your_phpMyAdmin_directory/</tt>.
317 <br /><br />
318 phpMyAdmin needs this setting, because of requirements of the HTTP
319 protocol, explained in RFC2616, section 14.30.
320 <br /><br />
321 Don't forget the slash at the end of your url. The url must contain
322 characters that are valid for a url, and on some servers, the path
323 is case-sensitive.
324 <br /><br />
325 Starting with version 2.3.0, you can try to leave this parameter
326 empty, because the program tries to auto-detect its proper value.
327 Additional details are in the configuration file.
328 <br /><br />
329 Alternatively, this setting can be dynamically completed. For example,
330 you can try to use such a kind of code:
331 <pre>
332 $cfg['PmaAbsoluteUri'] = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://'
333 . $_SERVER['HTTP_HOST']
334 . (!empty($_SERVER['SERVER_PORT']) ? ':' . $_SERVER['SERVER_PORT'] : '')
335 . substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')+1);
339 $cfg['PmaAbsoluteUri'] = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://'
340 . $_SERVER['SERVER_NAME']
341 . (!empty($_SERVER['SERVER_PORT']) ? ':' . $_SERVER['SERVER_PORT'] : '')
342 . substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/')+1);
343 </pre>
344 Please note that the <tt>$_SERVER</tt> array doesn't exist in
345 PHP&nbsp;&lt;&nbsp;4.1.0. Try to replace <tt>$_SERVER</tt> by
346 <tt>$HTTP_SERVER_VARS</tt> or <tt>$GLOBALS</tt> in this case.
347 <br /><br />
348 </dd>
349 <dt><b>$cfg['PmaAbsoluteUri_DisableWarning']</b> boolean</dt>
350 <dd>
351 By default, when you leave $cfg['PmaAbsoluteUri'] empty, and the system
352 detects your absolute URI automatically, we display a warning to remind
353 you. If you have tested the automatic detection, and it works perfectly
354 for your setup, then you can set this variable to squelch the warning.
355 <br /><br />
356 </dd>
358 <dt><b>$cfg['PmaNoRelation_DisableWarning']</b> boolean</dt>
359 <dd>
360 Starting with version 2.3.0 phpMyAdmin offers a lot of features to work
361 with master / foreign - tables (see
362 <a href="#pmadb">$cfg['Servers'][$i]['pmadb']</a>).
363 <br />
364 If you tried to set this up and it does not work for you, have a look on
365 the &quot;Structure&quot; page of one database where you would like to
366 use it. You will find a link that will analyze why those features have
367 been disabled.<br />
368 If you do not want to use those features set this variable to
369 <tt>TRUE</tt> to stop this message from appearing.
370 <br /><br />
371 </dd>
373 <dt><b>$cfg['Servers']</b> array</dt>
374 <dd>
375 Since version 1.4.2, phpMyAdmin supports the administration of multiple
376 MySQL servers.
377 Therefore, a $cfg['Servers']-array has been added which contains
378 the login information for the different servers. The first
379 <tt>$cfg['Servers'][$i]['host']</tt> contains the hostname of the first
380 server, the second <tt>$cfg['Servers'][$i]['host']</tt> the hostname of
381 the second server, etc.
382 If you have only one server to administer, simply leave free the
383 hostname of the other $cfg['Server']-entries.
384 <br /><br />
385 </dd>
387 <dt><b>$cfg['Servers'][$i]['host']</b> string</dt>
388 <dd>
389 The hostname of your $i-th MySQL-server. E.g. localhost.
390 <br /><br />
391 </dd>
393 <dt><b>$cfg['Servers'][$i]['port']</b> string</dt>
394 <dd>
395 The port-number of your $i-th MySQL-server. Default is 3306 (leave
396 blank).
397 <br /><br />
398 </dd>
400 <dt><b>$cfg['Servers'][$i]['socket']</b> string</dt>
401 <dd>
402 The path to the socket to use. Leave blank for default.<br />
403 To use the socket feature you must run php 3.0.10 or more.
404 <br /><br />
405 </dd>
407 <dt><b>$cfg['Servers'][$i]['connect_type']</b> string</dt>
408 <dd>
409 What type connection to use with the MySQL server. Your options are
410 <tt>'socket'</tt> &amp; <tt>'tcp'</tt>. It defaults to 'tcp' as that
411 is nearly guarenteed to be available on all MySQL servers, while
412 sockets are not supported on some platforms.
413 <br /><br />
414 To use the socket mode, your MySQL server must be on the same machine
415 as the Web server.
416 <br /><br />
417 </dd>
419 <dt><b>$cfg['Servers'][$i]['compress']</b> boolean</dt>
420 <dd>
421 Wheather to use a compressed protocol for the MySQL server connection
422 or not (experimental).<br />
423 This feature requires PHP&nbsp;&gt;=&nbsp;4.3.0.
424 </dd>
426 <dt>
427 <b>$cfg['Servers'][$i]['controluser']</b> string<br />
428 <b>$cfg['Servers'][$i]['controlpass']</b> string
429 </dt>
430 <dd>
431 When using http or cookie authentication modes (or 'config'
432 authentication mode since phpMyAdmin 2.2.1), you need to supply the
433 details of a MySQL account that has <tt>SELECT</tt> privilege on the
434 <i>mysql.user (all columns except &quot;Password&quot;)</i>,
435 <i>mysql.db (all columns)</i> &amp; <i>mysql.tables_priv (all columns
436 except &quot;Grantor&quot; &amp; &quot;Timestamp&quot;) </i>tables.
437 This account is used to check what databases the user will see at
438 login.<br />
439 Please see the <a href="#setup">install section</a>
440 on &quot;Using http authentication&quot; for more information.
441 <br /><br />
442 Note that if you try login to phpMyAdmin with this
443 &quot;controluser&quot;, you could get some errors, depending the exact
444 privileges you gave to the &quot;controluser&quot;. phpMyAdmin does not
445 support a direct login with the &quot;controluser&quot;.
446 <br /><br />
447 In versions before 2.2.5, those were called
448 &quot;stduser/stdpass&quot;.
449 <br /><br />
450 </dd>
452 <dt><b>$cfg['Servers'][$i]['auth_type']</b> string <tt>['http'|'cookie'|'config']</tt></dt>
453 <dd>
454 Whether config or cookie or http authentication should be used for this
455 server.
457 <ul>
458 <li>
459 'config' authentication
460 (<tt>$auth_type&nbsp;=&nbsp;'config'</tt>) is the plain old
461 way: username and password are stored in
462 <i>config.inc.php3</i>.
463 </li>
464 <li>
465 'cookie' authentication mode
466 (<tt>$auth_type&nbsp;=&nbsp;'cookie'</tt>) as introduced in
467 2.2.3 allows you to log in as any valid MySQL user with the
468 help of... cookies. Log name and password are stored in
469 cookies during the session and password is deleted when it
470 ends.
471 </li>
472 <li>
473 'http' authentication (was called 'advanced' in older versions)
474 (<tt>$auth_type&nbsp;=&nbsp;'http'</tt>) as introduced in 1.3.0
475 allows you to log in as any valid MySQL user via HTTP-Auth.
476 </li>
477 </ul><br />
479 Please see the install section on &quot;Using authentication modes&quot;
480 for more information.
481 <br /><br />
482 </dd>
484 <dt>
485 <b>$cfg['Servers'][$i]['user']</b> string<br />
486 <b>$cfg['Servers'][$i]['password']</b> string
487 </dt>
488 <dd>
489 The user/password-pair which phpMyAdmin will use to connect to this
490 MySQL-server. This user/password pair is not needed when http or cookie
491 authentication is used, and should be empty.<br /><br />
492 </dd>
494 <dt><b>$cfg['Servers'][$i]['only_db']</b> string or array</dt>
495 <dd>
496 If set to a(an array of) database name(s), only this(these) database(s)
497 will be shown to the user. Since phpMyAdmin 2.2.1, this/these
498 database(s) name(s) may contain MySQL wilcards characters
499 (&quot;_&quot; and &quot;%&quot;): if you want to use literal instances
500 of these characters, escape them (ie use <tt>'my\_db'</tt> and not
501 <tt>'my_db'</tt>).<br />
502 This setting is an efficient way to lower the server charge since the
503 latter does not need to send MySQL requests to build the available
504 database list. But <span class="important">it does not replace the
505 privileges rules of the MySQL database server</span>. If set, it just
506 means only these databases will be displayed but
507 <span class="important">not at all other databases can't be used.</span>
508 <br /><br />
509 </dd>
511 <dt><b>$cfg['Servers'][$i]['verbose']</b> string</dt>
512 <dd>
513 Only useful when using phpMyAdmin with multiple server entries. If set,
514 this string will be displayed instead of the hostname in the pulldown
515 menu on the main page. This can be useful if you want to show only
516 certain databases on your system, for example.
517 <br /><br />
518 </dd>
520 <dt>
521 <a name="pmadb"></a><br />
522 <b>$cfg['Servers'][$i]['pmadb']</b> string
523 </dt>
524 <dd>
525 Starting with version 2.3.0 phpMyAdmin offers a lot of features
526 to work with master / foreign - tables. To use those as well as
527 the bookmark feature you need special tables with a
528 predefined structure, which we explain below.<br />
529 If you are the only user of this phpMyAdmin installation, you can
530 use your current database to store those special tables; in this
531 case, just put your current database name in
532 <tt>$cfg['Servers'][$i]['pmadb']</tt>.
533 <br /><br />
534 If you are setting up a multi-user phpMyAdmin installation,
535 you will need to create a new db and setup special privileges,
536 so, as superuser:
537 <br /><br />
538 <ul>
539 <li>
540 create a new database for phpmyadmin:<br />
541 <tt>&nbsp;&nbsp;CREATE DATABASE phpmyadmin;</tt><br />
542 Note that &quot;controluser&quot; must have
543 <tt>SELECT, INSERT, UPDATE</tt> and <tt>DELETE</tt>
544 privileges on this database. Here is a query to set up
545 those privileges (using &quot;phpmyadmin&quot;
546 as the database name, and &quot;pma&quot; as the
547 controluser):<br />
548 <tt>
549 &nbsp;&nbsp;GRANT SELECT,INSERT,UPDATE,DELETE ON phpmyadmin.* to 'pma'@'localhost';
550 </tt><br />
551 do <b>not</b> give any other user rights on this database.
552 </li>
553 <li>
554 enter the databasename in <tt>$cfg['Servers'][$i]['pmadb']</tt>
555 </li>
556 </ul><br />
557 </dd>
559 <dt>
560 <a name="bookmark"></a><br />
561 <b>$cfg['Servers'][$i]['bookmarktable']</b> string
562 </dt>
563 <dd>
564 Since release 2.2.0 phpMyAdmin allows to bookmark queries. This can be
565 useful for queries you often run.<br /><br />
567 To allow the usage of this functionality you have to:
568 <ul>
569 <li>set up &quot;pmadb&quot; as described above</li>
570 <li>within this database create a table following this scheme:
571 <br />
572 <tt>
573 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE `PMA_bookmark` (<br />
574 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id int(11) DEFAULT '0' NOT NULL auto_increment,<br />
575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbase varchar(255) NOT NULL,<br />
576 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user varchar(255) NOT NULL,<br />
577 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label varchar(255) NOT NULL,<br />
578 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query text NOT NULL,<br />
579 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (id)<br />
580 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM COMMENT='Bookmarks';<br />
581 </tt>
582 </li>
583 <li>enter the tablename in
584 <tt>$cfg['Servers'][$i]['bookmarktable']</tt></li>
585 </ul><br />
586 </dd>
588 <dt>
589 <a name="relation"></a><br />
590 <b>$cfg['Servers'][$i]['relation']</b> string
591 </dt>
592 <dd>
593 Since release 2.2.4 you can describe, in a special 'relation' table,
594 which field is a key in another table (a foreign key). phpMyAdmin
595 currently uses this to
596 <ul>
597 <li>
598 make clickable, when you browse the master table, the data values
599 that point to the foreign table;
600 </li>
601 <li>
602 display in an optional tooltip the &quot;display field&quot;
603 when browsing the master table, if you move the mouse to a column
604 containing a foreign key (use also the 'table_info' table);
605 </li>
606 <li>
607 display links on the table properties page, to check referential
608 integrity (display missing foreign keys) for each described key;
609 </li>
610 <li>
611 in query-by-example, create automatic joins (see an example in
612 the FAQ, section &quot;Using phpMyAdmin&quot;);
613 </li>
614 <li>
615 enable you to get a PDF schema of your database (also uses the
616 table_coords table).
617 </li>
618 </ul>
619 <br />
621 The keys can be numeric or character.
622 <br /><br />
624 To allow the usage of this functionality the superuser has to:
625 <ul>
626 <li>set up &quot;pmadb&quot; as described above</li>
627 <li>
628 within this database create a table following this scheme:
629 <br />
630 <tt>
631 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE `PMA_relation` (<br />
632 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`master_db` varchar(64) NOT NULL default '',<br />
633 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`master_table` varchar(64) NOT NULL default '',<br />
634 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`master_field` varchar(64) NOT NULL default '',<br />
635 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`foreign_db` varchar(64) NOT NULL default '',<br />
636 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`foreign_table` varchar(64) NOT NULL default '',<br />
637 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`foreign_field` varchar(64) NOT NULL default '',<br />
638 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (`master_db`, `master_table`, `master_field`),<br />
639 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEY foreign_field (foreign_db, foreign_table)<br />
640 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM COMMENT='Relation table';<br />
641 </tt>
642 </li>
643 <li>
644 put the relation table name in
645 <tt>$cfg['Servers'][$i]['relation']</tt>
646 </li>
647 <li>
648 now as normal user open phpMyAdmin and for each one of your
649 tables where you want to use this feature, click
650 &quot;Structure/Relation view/&quot; and choose foreign fields.
651 </li>
652 </ul><br />
653 Please note that in the current (2.3.0) version, <tt>master_db</tt>
654 must be the same as <tt>foreign_db</tt>. Those fields have been put in
655 future development of the cross-db relations.<br /><br />
656 </dd>
658 <dt>
659 <a name="table_info"></a><br />
660 <b>$cfg['Servers'][$i]['table_info']</b> string
661 </dt>
662 <dd>
663 Since release 2.3.0 you can describe, in a special 'table_info'
664 table, which field is to be displayed as a tooltip when moving the
665 cursor over the corresponding key.
666 <br />
667 This configuration variable will hold the name of this special
668 table.
669 To allow the usage of this functionality the superuser has to:
670 <ul>
671 <li>set up &quot;pmadb&quot; as described above</li>
672 <li>within this database create a table following this scheme:
673 <br />
674 <tt>
675 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE `PMA_table_info` (<br />
676 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`db_name` varchar(64) NOT NULL default '',<br />
677 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`table_name` varchar(64) NOT NULL default '',<br />
678 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`display_field` varchar(64) NOT NULL default '',<br />
679 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (`db_name`, `table_name`)<br />
680 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM COMMENT='Table information for phpMyAdmin';<br />
681 </tt>
682 </li>
683 <li>
684 put the table name in
685 <tt>$cfg['Servers'][$i]['table_info']</tt>
686 </li>
687 <li>
688 then for each table where you want to use this feature,
689 click &quot;Structure/Relation view/Choose field to display&quot;
690 to choose the field.
691 </li>
692 </ul><br />
693 Usage tip: <a href="#faqdisplay">Display field</a>.
694 <br /><br />
695 </dd>
697 <dt>
698 <a name="table_coords"></a><br />
699 <b>$cfg['Servers'][$i]['table_coords']</b> string<br />
700 <b>$cfg['Servers'][$i]['pdf_pages']</b> string
701 </dt>
702 <dd>
703 Since release 2.3.0 you can have phpMyAdmin create PDF pages showing
704 the relations between your tables. To do this it needs two tables
705 &quot;pdf_pages&quot; (storing information about the available pdf
706 pages) and &quot;table_coords&quot; (storing coordinates where each
707 table will be placed on a PDF schema output).
708 <br /><br />
709 You must be using the &quot;relation&quot; feature and have a table of
710 PDF pages (see <tt>$cfg['Servers'][$i]['pdf_pages']</tt>) to create PDF
711 output.
712 <br /><br />
713 To allow the usage of this functionality the superuser has to:
714 <ul>
715 <li>set up &quot;pmadb&quot; as described above</li>
716 <li>
717 within this database create a table following this scheme:
718 <br />
719 <tt>
720 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE `PMA_table_coords` (<br />
721 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`db_name` varchar(64) NOT NULL default '',<br />
722 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`table_name` varchar(64) NOT NULL default '',<br />
723 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`pdf_page_number` int NOT NULL default '0',<br />
724 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`x` float unsigned NOT NULL default '0',<br />
725 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`y` float unsigned NOT NULL default '0',<br />
726 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (`db_name`, `table_name`, `pdf_page_number`)<br />
727 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM COMMENT='Table coordinates for phpMyAdmin PDF output';<br />
728 </tt>
729 </li>
730 <li>
731 also within this database create:<br />
732 <tt>
733 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE `PMA_pdf_pages` (<br />
734 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`db_name` varchar(64) NOT NULL default '',<br />
735 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`page_nr` int(10) unsigned NOT NULL auto_increment,<br />
736 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`page_descr` varchar(50) NOT NULL default '',<br />
737 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (page_nr),<br />
738 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEY (db_name)<br />
739 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM COMMENT='PDF Relationpages for PMA';<br />
740 </tt>
741 </li>
742 <li>
743 put the first table name in
744 <tt>$cfg['Servers'][$i]['table_coords']</tt>
745 and the second table name in
746 <tt>$cfg['Servers'][$i]['pdf_pages']</tt>
747 </li>
748 </ul><br />
749 Usage tips: <a href="#faqpdf">PDF output</a>.
750 <br /><br />
751 </dd>
753 <dt>
754 <a name="col_com"></a><br />
755 <b>$cfg['Servers'][$i]['column_comments']</b> string
756 </dt>
757 <dd>
758 Since release 2.3.0 you can store comments to describe each column
759 for each table. These will then be shown on the &quot;printview&quot;.
760 <br />
761 To allow the usage of this functionality the superuser has to:
762 <ul>
763 <li>set up &quot;pmadb&quot; as described above</li>
764 <li>
765 within this database create a table following this scheme:
766 <br />
767 <tt>
768 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE `PMA_column_comments` (<br />
769 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id int(5) unsigned NOT NULL auto_increment,<br />
770 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db_name varchar(64) NOT NULL default '',<br />
771 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table_name varchar(64) NOT NULL default '',<br />
772 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;column_name varchar(64) NOT NULL default '',<br />
773 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`comment` varchar(255) NOT NULL default '',<br />
774 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (id),<br />
775 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UNIQUE KEY db_name (db_name, table_name, column_name)<br />
776 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM COMMENT='Comments for Columns';<br />
777 </tt>
778 </li>
779 <li>
780 put the table name in
781 <tt>$cfg['Servers'][$i]['column_comments']</tt>
782 </li>
783 </ul><br />
784 </dd>
786 <dt>
787 <b>$cfg['Servers'][$i]['AllowDeny']['order']</b> string
788 </dt>
789 <dd>
790 If your rule order is empty, then IP authentication is disabled.
791 <br /><br />
792 If your rule order is set to <tt>'deny,allow'</tt> then the system
793 applies all deny rules followed by allow rules.
794 Access is allowed by default. Any client which does not match a Deny
795 command or does match an Allow command will be allowed access to the
796 server.
797 <br /><br />
798 If your rule order is set to <tt>'allow,deny'</tt> then the system
799 applies all allow rules followed by deny rules. Access is denied by
800 default. Any client which does not match an Allow directive or does
801 match a Deny directive will be denied access to the server.
802 <br /><br />
803 If your rule order is set to 'explicit', the authentication is
804 performed in a similar fashion to rule order 'deny,allow', with the
805 added restriction that your host/username combination <b>must</b> be
806 listed in the <i>allow</i> rules, and not listed in the <i>deny</i>
807 rules. This is the <b>most</b> secure means of using Allow/Deny rules,
808 and was available in Apache by specifying allow and deny rules without
809 setting any order.
810 <br /><br />
811 </dd>
813 <dt>
814 <b>$cfg['Servers'][$i]['AllowDeny']['rules']</b> array of strings
815 </dt>
816 <dd>
817 The general format for the rules is as such:<br />
818 <tt>
819 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
820 &lt;'allow' | 'deny'&gt; &lt;username&gt; [from] &lt;ipmask&gt;
821 </tt>
822 <br /><br />
824 If you wish to match all users, it is possible to use a <tt>'%'</tt> as
825 a wildcard in the <i>username</i> field.<br />
826 There are a few shortcuts you can use in the <i>ipmask</i> field as
827 well:<br />
828 <tt>
829 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'all' -&gt; 0.0.0.0/0<br />
830 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'localhost' -&gt; 127.0.0.1/8
831 </tt>
832 <br /><br />
834 Having an empty rule list is equivalent to either using
835 <tt>'allow % from all'</tt> if your rule order is set to
836 <tt>'deny,allow'</tt> or <tt>'deny % from all'</tt> if your rule order
837 is set to <tt>'allow,deny'</tt> or <tt>'explicit'</tt>.
838 <br /><br />
840 For the IP matching system, the following work:<br />
841 <tt>xxx.xxx.xxx.xxx</tt> (an exact IP address)<br />
842 <tt>xxx.xxx.xxx.[yyy-zzz]</tt> (an IP address range)<br />
843 <tt>xxx.xxx.xxx.xxx/nn</tt> (CIDR, Classless Inter-Domain Routing type IP addresses)<br />
844 But the following does not work:<br />
845 <tt>xxx.xxx.xxx.xx[yyy-zzz]</tt> (partial IP address range)
846 <br /><br />
847 </dd>
849 <dt><b>$cfg['ServerDefault']</b> integer</dt>
850 <dd>
851 If you have more than one server configured, you can set
852 <tt>$cfg['ServerDefault']</tt> to any one of them to autoconnect to
853 that server when phpMyAdmin is started, or set it to 0 to be given a
854 list of servers without logging in.<br />
855 If you have only one server configured, <tt>$cfg['ServerDefault']</tt>
856 MUST be set to that server.
857 <br /><br />
858 </dd>
860 <dt><b>$cfg['OBGzip'] </b>boolean</dt>
861 <dd>
862 Defines whether to use gzip output buffering for increased
863 speed in HTTP transfers.
864 <br /><br />
865 </dd>
867 <dt><b>$cfg['PersistentConnections'] </b>boolean</dt>
868 <dd>
869 Whether persistent connections should be used or not (mysql_connect or
870 mysql_pconnect).
871 <br /><br />
872 </dd>
874 <dt><b>$cfg['ExecTimeLimit'] </b>integer [number of seconds]</dt>
875 <dd>
876 Set the number of seconds a script is allowed to run. If seconds is set
877 to zero, no time limit is imposed.<br />
878 This setting is used while importing/exporting dump files but has no
879 effect when PHP is running in safe mode.
880 <br /><br />
881 </dd>
883 <dt><b>$cfg['SkipLockedTables'] </b>boolean</dt>
884 <dd>
885 Mark used tables and make it possible to show databases with locked
886 tables (since 3.23.30).
887 <br /><br />
888 </dd>
890 <dt><b>$cfg['ShowSQL'] </b>boolean</dt>
891 <dd>
892 Defines whether sql-queries generated by phpMyAdmin should be displayed
893 or not.
894 <br /><br />
895 </dd>
897 <dt><b>$cfg['AllowUserDropDatabase'] </b>boolean</dt>
898 <dd>
899 Defines whether normal users (non-administrator) are allowed to
900 delete their own database or not. If set as FALSE, the link &quot;Drop
901 Database&quot; will not be shown, and even a &quot;DROP DATABASE
902 mydatabase&quot; will be rejected. Quite practical for ISP's with many
903 customers.
904 <br /><br />
905 </dd>
907 <dt><b>$cfg['Confirm'] </b>boolean</dt>
908 <dd>
909 Whether a warning (&quot;Are your really sure..&quot;) should be
910 displayed when you're about to loose data.
911 <br /><br />
912 </dd>
914 <dt><b>$cfg['LoginCookieRecall'] </b>boolean</dt>
915 <dd>
916 Define whether the previous login should be recalled or not in cookie
917 authentication mode.
918 <br /><br />
919 </dd>
921 <dt><b>$cfg['UseDbSearch'] </b>boolean</dt>
922 <dd>
923 Define whether the "search string inside database" is enabled or not.
924 <br /><br />
925 </dd>
927 <dt><b>$cfg['LeftFrameLight']</b> boolean</dt>
928 <dd>
929 Defines whether to use select-based menu and display only the current
930 tables in the left frame (smaller page).
931 <br /><br />
932 </dd>
934 <dt><b>$cfg['ShowTooltip'] </b>boolean</dt>
935 <dd>
936 Defines whether to display table comment as tooltip in left frame or
937 not.
938 <br /><br />
939 </dd>
941 <dt><b>$cfg['ShowStats'] </b>boolean</dt>
942 <dd>
943 Defines whether to display space usage and statistics about databases
944 and tables or not.<br />
945 Note that statistics requires at least MySQL 3.23.3 and that, at this
946 date, MySQL doesn't return such information for Berkeley DB tables.
947 <br /><br />
948 </dd>
950 <dt>
951 <b>$cfg['ShowMysqlInfo'] </b>boolean<br />
952 <b>$cfg['ShowMysqlVars'] </b>boolean<br />
953 <b>$cfg['ShowPhpInfo'] </b>boolean<br />
954 <b>$cfg['ShowChgPassword'] </b>boolean
955 </dt>
956 <dd>
957 Defines whether to display the &quot;MySQL runtime information&quot;,
958 &quot;MySQL system variables&quot;, &quot;PHP information&quot; and
959 &quot;Change password &quot; links or not for simple users at the
960 starting main (right) frame. This setting does not check MySQL commands
961 entered directly.
962 <br /><br />
964 Please note that to block the usage of phpinfo() in scripts, you
965 have to put this in your php.ini:<br />
966 &nbsp;&nbsp;&nbsp;&nbsp;<tt>disable_functions = phpinfo()</tt>
967 <br /><br />
969 Also note that enabling the &quot;Change password &quot; link has no
970 effect with &quot;config&quot; authentication mode: because of the hard
971 coded password value in the configuration file, end users can't be
972 allowed to change their passwords.
973 <br /><br />
974 </dd>
976 <dt><b>$cfg['SuggestDBName']</b> boolean</dt>
977 <dd>
978 Defines whether to suggest a database name on the
979 &quot;Create Database&quot; form or to keep the textfield empty.
980 <br /><br />
981 </dd>
983 <dt><b>$cfg['ShowBlob'] </b>boolean</dt>
984 <dd>
985 Defines whether <tt>BLOB</tt> fields are shown when browsing a table's
986 content or not.
987 <br /><br />
988 </dd>
990 <dt><b>$cfg['NavigationBarIconic'] </b>boolean</dt>
991 <dd>
992 Defines whether navigation bar buttons contain text or symbols only.
993 <br /><br />
994 </dd>
996 <dt><b>$cfg['ShowAll'] </b>boolean</dt>
997 <dd>
998 Defines whether an user should be displayed a
999 &quot;show all (records)&quot; button in browse mode or not.
1000 <br /><br />
1001 </dd>
1003 <dt><b>$cfg['MaxRows'] </b>integer</dt>
1004 <dd>
1005 Number of rows displayed when browsing a resultset. If the resultset
1006 contains more rows, Previous/Next links will be shown.
1007 <br /><br />
1008 </dd>
1010 <dt><b>$cfg['Order'] </b>string [<tt>DESC</tt>|<tt>ASC</tt>|<tt>SMART</tt>]</dt>
1011 <dd>
1012 Defines whether fields are displayed in ascending (<tt>ASC</tt>) order,
1013 in descending (<tt>DESC</tt>) order or in a &quot;smart&quot;
1014 (<tt>SMART</tt>) order -ie descending order for fields of type TIME,
1015 DATE, DATETIME &amp; TIMESTAMP, ascending order else- by default.
1016 <br /><br />
1017 </dd>
1019 <dt><b>$cfg['ProtectBinary'] </b>boolean or string</dt>
1020 <dd>
1021 Defines whether <tt>BLOB</tt> or <tt>BINARY</tt> fields are protected
1022 from edition when browsing a table's content or not.
1023 Valid values are:<br />
1024 - <tt>FALSE</tt> to allow edition of all fields;<br />
1025 - <tt>blob</tt> to allow edition of all fields except <tt>BLOBS</tt>;
1026 <br />
1027 - <tt>all</tt> to disallow edition of all <tt>BINARY</tt> or
1028 <tt>BLOB</tt> fields.
1029 <br /><br />
1030 </dd>
1032 <dt><b>$cfg['ShowFunctionFields'] </b>boolean</dt>
1033 <dd>
1034 Defines whether MySQL functions fields should be displayed or not in
1035 edit/insert mode.
1036 <br /><br />
1037 </dd>
1039 <dt><b>$cfg['CharEditing'] </b>string</dt>
1040 <dd>
1041 Defines which type of editing controls should be used for CHAR and
1042 VARCHAR fields. Possible values are:
1043 <ul>
1044 <li>
1045 input - this allows to limit size of text to size of field in
1046 MySQL, but has problems with newlines in fields
1047 </li>
1048 <li>
1049 textarea - no problems with newlines in fields, but also no
1050 length limitations
1051 </li>
1052 </ul>
1053 Default is old behavior so input.
1054 <br /><br />
1055 </dd>
1057 <dt>
1058 <b>$cfg['ZipDump'] </b>boolean<br />
1059 <b>$cfg['GZipDump'] </b>boolean<br />
1060 <b>$cfg['BZipDump'] </b>boolean
1061 </dt>
1062 <dd>
1063 Defines whether to allow the use of zip/gzip/bzip compression when
1064 creating a dump file or not.
1065 <br /><br />
1066 </dd>
1068 <dt><b>$cfg['DefaultTabDatabase'] </b>string</dt>
1069 <dd>
1070 Defines the tab displayed by default on database view. Possible
1071 values: &quot;db_details_structure.php3&quot;,
1072 &quot;db_details.php3&quot; or &quot;db_search.php3&quot;.
1073 <br /><br />
1074 </dd>
1076 <dt><b>$cfg['DefaultTabTable'] </b>string</dt>
1077 <dd>
1078 Defines the tab displayed by default on table view. Possible
1079 values: &quot;tbl_properties_structure.php3&quot;,
1080 &quot;tbl_properties.php3&quot;, &quot;tbl_select.php3&quot; or
1081 &quot;tbl_change.php3&quot;.
1082 <br /><br />
1083 </dd>
1085 <dt><b>$cfg['MySQLManualBase']</b> string</dt>
1086 <dd>
1087 If set to an URL which points to the MySQL documentation (type depends
1088 on <tt>$cfg['MySQLManualType']</tt>), appropriate help links are
1089 generated.
1090 <br />
1091 See <a href="http://www.mysql.com/documentation/index.html">MySQL
1092 Documentation page</a> for more information about MySQL manuals and
1093 their types.
1094 <br /><br />
1095 </dd>
1097 <dt><b>$cfg['MySQLManualType']</b> string</dt>
1098 <dd>
1099 Type of MySQL documentation:
1100 <ul>
1101 <li>old - old style used in phpMyAdmin 2.3.0 and sooner</li>
1102 <li>searchable - &quot;Searchable, with user comments&quot;</li>
1103 <li>chapters - &quot;HTML, one page per chapter&quot;</li>
1104 <li>big - &quot;HTML, all on one page&quot;</li>
1105 <li>none - do not show documentation links</li>
1106 </ul>
1107 <br /><br />
1108 </dd>
1110 <dt><b>$cfg['DefaultLang'] </b>string</dt>
1111 <dd>
1112 Defines the default language to use, if not browser-defined or
1113 user-defined.<br />
1114 See the <i>select_lang.inc.php3</i> script to know the valid values for
1115 this setting.
1116 <br /><br />
1117 </dd>
1119 <dt><b>$cfg['Lang'] </b>string</dt>
1120 <dd>
1121 Force: always use this language (must be defined in the
1122 <i>select_lang.inc.php3</i> script).
1123 <br /><br />
1124 </dd>
1126 <dt><b>$cfg['DefaultCharset'] </b>string</dt>
1127 <dd>
1128 Default charset to use for recoding of MySQL queries. This must be
1129 enabled and it's described by <tt>$cfg['AllowAnywhereRecoding']</tt>
1130 option.<br />
1131 You can give here any charset which is in
1132 <tt>$cfg['AvailableCharsets']</tt> array and this is just default
1133 choice, user can select any of them.
1134 <br /><br />
1135 </dd>
1137 <dt><b>$cfg['AllowAnywhereRecoding'] </b>boolean</dt>
1138 <dd>
1139 Allow charset recoding of MySQL queries. You need recode or iconv
1140 support (compiled in or module) in php to allow MySQL queries recoding
1141 and used language file must have it enabled (by default only these
1142 which are in unicode, just to avoid losing some characters).
1143 <br /><br />
1144 </dd>
1146 <dt><b>$cfg['RecodingEngine'] </b>string</dt>
1147 <dd>
1148 You can select here which functions will be used for charset
1149 conversion.
1150 Possible values are:<br />
1151 <ul>
1152 <li>auto - automatically use available one (first is tested
1153 iconv, then recode)</li>
1154 <li>iconv - use iconv or libiconv functions</li>
1155 <li>recode - use recode_string function</li>
1156 </ul>
1157 Default is auto.
1158 <br /><br />
1159 </dd>
1161 <dt><b>$cfg['AvailableCharsets'] </b>array</dt>
1162 <dd>
1163 Available charsets for MySQL conversion. You can add your own (any of
1164 supported by recode/iconv) or remove these which you don't use.
1165 Charsets will be shown in same order as here listed, so if you
1166 frequently use some of these move them to the top.
1167 <br /><br />
1168 </dd>
1170 <dt><b>$cfg['LeftWidth'] </b>integer</dt>
1171 <dd>
1172 Left frame width in pixel.
1173 <br /><br />
1174 </dd>
1176 <dt>
1177 <b>$cfg['LeftBgColor'] </b>string [HTML color]<br />
1178 <b>$cfg['RightBgColor'] </b>string [HTML color]
1179 </dt>
1180 <dd>
1181 The background colors (HTML) used for both the frames.
1182 <br /><br />
1183 </dd>
1185 <dt>
1186 <b>$cfg['RightBgImage'] </b>string
1187 </dt>
1188 <dd>
1189 The URI of the background image used for the right frame. It can be
1190 absolute as well as relative from your phpMyAdmin directory.
1191 </dd>
1193 <dt><b>$cfg['LeftPointerColor'] </b>string [HTML color]</dt>
1194 <dd>
1195 The color (HTML) used for the pointer in the left frame (does not work
1196 with NS4).
1197 <br /><br />
1198 </dd>
1200 <dt><b>$cfg['Border'] </b>integer</dt>
1201 <dd>
1202 The size of a table's border.
1203 <br /><br />
1204 </dd>
1206 <dt><b>$cfg['ThBgcolor'] </b>string [HTML color]</dt>
1207 <dd>
1208 The color (HTML) used for table headers.
1209 <br /><br />
1210 </dd>
1212 <dt><b>$cfg['BgcolorOne'] </b>string [HTML color]</dt>
1213 <dd>
1214 The color (HTML) #1 for table rows.
1215 <br /><br />
1216 </dd>
1218 <dt><b>$cfg['BgcolorTwo'] </b>string [HTML color]</dt>
1219 <dd>
1220 The color (HTML) #2 for table rows.
1221 <br /><br />
1222 </dd>
1224 <dt>
1225 <b>$cfg['BrowsePointerColor'] </b>string [HTML color]<br />
1226 <b>$cfg['BrowseMarkerColor'] </b>string [HTML color]
1227 </dt>
1228 <dd>
1229 The colors (HTML) uses for the pointer and the marker in browse mode
1230 (does not work with NS4).<br />
1231 The former feature highlights the row over which your mouse is passing
1232 and the latter lets you visually mark/unmark rows by clicking on
1233 them.<br />
1234 You can disable both of these features by emptying the respective
1235 directive.
1236 <br /><br />
1237 </dd>
1239 <dt>
1240 <b>$cfg['TextareaCols'] </b>integer<br />
1241 <b>$cfg['TextareaRows'] </b>integer<br />
1242 <b>$cfg['CharTextareaCols'] </b>integer<br />
1243 <b>$cfg['CharTextareaRows'] </b>integer
1244 </dt>
1245 <dd>
1246 Number of columns and rows for the textareas.<br />
1247 This value will be emphasized (*2) for sql query textareas.<br />
1248 The Char* values are used for CHAR and VARCHAR editing (if configured
1249 via $cfg['CharEditing']).
1250 <br /><br />
1251 </dd>
1253 <dt>
1254 <b>$cfg['TextareaAutoSelect'] </b>boolean<br />
1255 </dt>
1256 <dd>
1257 Defines if the whole textarea of the query box will be selected on
1258 click.
1259 <br /><br />
1260 </dd>
1262 <dt><b>$cfg['LimitChars'] </b>integer</dt>
1263 <dd>
1264 Maximal number of Chars showed in a <tt>TEXT</tt> OR a <tt>BLOB</tt>
1265 field on browse view. Can be turned off by a toggle button on the
1266 browse page.
1267 <br /><br />
1268 </dd>
1270 <dt>
1271 <b>$cfg['ModifyDeleteAtLeft'] </b>boolean<br />
1272 <b>$cfg['ModifyDeleteAtRight'] </b>boolean
1273 </dt>
1274 <dd>
1275 Defines the place where modify and delete links would be put when
1276 tables contents are displayed (you may have them displayed both at the
1277 left and at the right).
1278 &quot;Left&quot; and &quot;right&quot; are parsed as &quot;top&quot;
1279 and &quot;bottom&quot; with vertical display mode.
1280 <br /><br />
1281 </dd>
1283 <dt><b>$cfg['DefaultDisplay'] </b>string</dt>
1284 <dd>
1285 There are 2 display modes: horizontal and vertical. Define which one is
1286 displayed by default.
1287 <br /><br />
1288 </dd>
1290 <dt><b>$cfg['UploadDir'] </b>string</dt>
1291 <dd>
1292 The name of the directory, ending with a slash, where SQL files have
1293 been uploaded by other means than phpMyAdmin (for example, ftp).
1294 Those files are available under a drop-down box when you click the
1295 database name, then the SQL tab.
1296 <br /><br />
1297 Please note that the file names must have the suffix &quot;.sql&quot;.
1298 <br /><br />
1299 This feature is useful when your file is too big to be uploaded via
1300 HTTP, or when file uploads are disabled in PHP.
1301 <br /><br />
1302 Please note that if PHP is running in safe mode, this directory must
1303 be owned by the same user as the owner of the phpMyAdmin scripts.
1304 <br /><br />
1305 </dd>
1307 <dt><b>$cfg['RepeatCells'] </b>integer</dt>
1308 <dd>
1309 Repeat the headers every X cells, or 0 to deactivate.
1310 <br /><br />
1311 </dd>
1313 <dt><b>$cfg['SQP']['enable']</b> boolean</dt>
1314 <dd>
1315 As of phpMyAdmin 2.3.0, we now have a fully functional SQL Parser system.
1316 It is enabled by default, as it is used to format the SQL queries.
1317 <br />
1318 As of 2.3.1, it will become an integral part of phpMyAdmin, as it will
1319 analyze certain queries to improve the behavior of phpMyAdmin. But as
1320 it is very new, and not yet heavily used, we offer you an option to
1321 turn it off.
1322 <br /><br />
1323 </dd>
1325 <dt><b>$cfg['SQP']['fmtType']</b> string [<tt>html</tt>|<tt>none</tt>]</dt>
1326 <dd>
1327 The main use of the new SQL Parser is to pretty-print SQL queries. By
1328 default we use HTML to format the query, but you can disable this by
1329 setting this varible to <tt>'none'</tt>
1330 <br /><br />
1331 </dd>
1333 <dt><b>$cfg['SQP']['fmtInd']</b> float<br />
1334 <b>$cfg['SQP']['fmtIndUnit']</b> string [<tt>em</tt>|<tt>px</tt>|<tt>pt</tt>|<tt>ex</tt>]</dt>
1335 <dd>
1336 For the pretty-printing of SQL queries, under some cases the part of a
1337 query inside a bracket is indented. By changing
1338 <tt>$cfg['SQP']['fmtInd']</tt> you can change the amount of this indent.
1339 <br />Related in purpose is <tt>$cfg['SQP']['fmtIndUnit']</tt> which
1340 specifies the units of the indent amount that you specified. This is
1341 used via stylesheets.
1342 <br /><br />
1343 </dd>
1345 <dt><b>$cfg['SQP']['fmtColor']</b> array of string tuples</dt>
1346 <dd>
1347 This array is used to define the colours for each type of element of
1348 the pretty-printed SQL queries. The tuple format is<br />
1349 <i>class</i> =&gt; [<i>HTML colour code</i> | <i>empty string</i>]<br />
1350 If you specify an empty string for the color of a class, it is ignored
1351 in creating the stylesheet.
1352 You should not alter the class names, only the colour strings.<br />
1353 <b>Class name key:</b><br />
1354 <ul>
1355 <li><b>comment</b> Applies to all comment sub-classes</li>
1356 <li><b>comment_mysql</b> Comments as <tt>"#...\n"</tt></li>
1357 <li><b>comment_ansi</b> Comments as <tt>"-- ...\n"</tt></li>
1358 <li><b>comment_c</b> Comments as <tt>"/*...*/"</tt></li>
1359 <li><b>digit</b> Applies to all digit sub-classes</li>
1360 <li><b>digit_hex</b> Hexadecimal numbers</li>
1361 <li><b>digit_integer</b> Integer numbers</li>
1362 <li><b>digit_float</b> Floating point numbers</li>
1363 <li><b>punct</b> Applies to all punctuation sub-classes</li>
1364 <li><b>punct_bracket_open_round</b> Opening brackets<tt>"("</tt></li>
1365 <li><b>punct_bracket_close_round</b> Closing brackets <tt>")"</tt></li>
1366 <li><b>punct_listsep</b> List item seperator <tt>","</tt></li>
1367 <li><b>punct_qualifier</b> Table/Column Qualifer <tt>"."</tt> </li>
1368 <li><b>punct_queryend</b> End of query marker <tt>";"</tt></li>
1369 <li><b>alpha</b> Applies to all alphabetic classes</li>
1370 <li><b>alpha_columnType</b> Identifers matching a column type</li>
1371 <li><b>alpha_columnAttrib</b> Identifers matching a database/table/column attribute</li>
1372 <li><b>alpha_functionName</b> Identifiers matching a MySQL function name</li>
1373 <li><b>alpha_reservedWord</b> Identifiers matching any other reserved word</li>
1374 <li><b>alpha_variable</b> Identifers matching a SQL variable <tt>"@foo"</tt></li>
1375 <li><b>alpha_identifier</b> All other identifiers</li>
1376 <li><b>quote</b> Applies to all quotation mark classes</li>
1377 <li><b>quote_double</b> Double quotes <tt>"</tt></li>
1378 <li><b>quote_single</b> Single quotes <tt>'</tt></li>
1379 <li><b>quote_backtick</b> Backtick quotes <tt>`</tt></li>
1380 </ul><br />
1381 </dd>
1383 <dt><b>$cfg['SQLValidator']['use']</b> boolean</dt>
1384 <dd>
1385 phpMyAdmin now supports use of the <a href="http://developer.mimer.com/validator/index.htm">Mimer SQL Validator</a> service,
1386 as originally published on
1387 <a href="http://developers.slashdot.org/article.pl?sid=02/02/19/1720246">Slashdot</a>.
1388 <br />
1389 For help in setting up your system to use the service, see the
1390 <a href="#faqsqlvalidator">FAQ #6.14</a>.
1391 <br /><br />
1392 </dd>
1394 <dt><b>$cfg['SQLValidator']['username']</b> string<br />
1395 <b>$cfg['SQLValidator']['password']</b> string</dt>
1396 <dd>
1397 The SOAP service allows you to login with <tt>anonymous</tt>
1398 and any password, so we use those by default.. Instead, if
1399 you have an account with them, you can put your login details
1400 here, and it will be used in place of the anonymous login.
1401 <br /><br />
1402 </dd>
1404 <dt><b>$cfg['DBG']['enable']</b> boolean</dt>
1405 <dd>
1406 <b>DEVELOPERS ONLY!</b><br />
1407 Enable the DBG extension for debugging phpMyAdmin. Required for profiling
1408 the code.
1409 <br />
1410 For help in setting up your system to this, see the
1411 <a href="#developersdbg">Developers</a> section.
1412 </dd>
1414 <dt><b>$cfg['DBG']['profile']['enable']</b> boolean</dt>
1415 <dd>
1416 <b>DEVELOPERS ONLY!</b><br />
1417 Enable profiling support for phpMyAdmin. This will append a chunk of data
1418 to the end of every page displayed in the main window with profiling
1419 statistics for that page.<br />
1420 You may need need to increase the maximum execution time for this to
1421 complete successfully.
1422 </dd>
1424 <dt><b>$cfg['DBG']['profile']['threshold']</b> float (units in milliseconds)</dt>
1425 <dd>
1426 <b>DEVELOPERS ONLY!</b><br />
1427 When profiling data is displayed, this variable controls the threshold of
1428 display for any profiling data, based on the average time each time has
1429 taken. If it is over the threshold it is displayed, otherwise it is not
1430 displayed. This takes a value in milliseconds. In most cases you don't need
1431 to edit this.
1432 </dd>
1434 <dt><b>$cfg['ColumnTypes'] </b>array</dt>
1435 <dd>
1436 All possible types of a MySQL column. In most cases you don't need to
1437 edit this.
1438 <br /><br />
1439 </dd>
1441 <dt><b>$cfg['AttributeTypes'] </b>array</dt>
1442 <dd>
1443 Possible attributes for fields. In most cases you don't need to edit
1444 this.
1445 <br /><br />
1446 </dd>
1448 <dt><b>$cfg['Functions'] </b>array</dt>
1449 <dd>
1450 A list of functions MySQL supports. In most cases you don't need to
1451 edit this.
1452 <br /><br />
1453 </dd>
1455 </dl>
1458 <!-- FAQ -->
1459 <a name="faq"></a><br />
1460 <h2>FAQ - Frequently Asked Questions</h2>
1463 <a href="#faqserver">Server</a> &nbsp;-&nbsp;
1464 <a href="#faqconfig">Configuration</a> &nbsp;-&nbsp;
1465 <a href="#faqlimitations">Limitations</a> &nbsp;-&nbsp;
1466 <a href="#faqmultiuser">Multi-user</a> &nbsp;-&nbsp;
1467 <a href="#faqbrowsers">Browsers</a> &nbsp;-&nbsp;
1468 <a href="#faqusing">Usage tips</a> &nbsp;-&nbsp;
1469 <a href="#faqproject">Project</a>
1470 </p>
1472 <a name="faqserver"></a><br />
1473 <h3>[1. Server]</h3>
1475 <h4>
1476 [1.1] I'm running php 4+ and my server is crashing each time a specific
1477 action is required or phpMyAdmin sends a blank page or a page full of
1478 cryptic characters to my browser, what can I do?
1479 </h4>
1481 There are some known php bugs with output buffering and compression.<br />
1482 Try to set the <tt>$cfg['OBGzip']</tt> directive to <tt>FALSE</tt> in your
1483 <i>config.inc.php or .php3</i> file and the
1484 <tt>zlib.output_compression</tt> directive to <tt>Off</tt> in your php
1485 configuration file.<br />
1486 Furthermore, we know about such problems connected to the release
1487 candidates of php 4.2.0 (tested with php 4.2.0 RC1 to RC4) together with
1488 MS Internet Explorer. Please upgrade to the release version php 4.2.0.
1489 </p>
1491 <h4>
1492 [1.2] My Apache server crashes when using phpMyAdmin.
1493 </h4>
1495 You should first try the latest versions of Apache (and possibly MySQL).
1496 <br />
1497 See also the other FAQ entry about php bugs with output buffering.
1498 <br />
1499 If your server keeps crashing, please ask for help in the various
1500 Apache support groups.
1501 </p>
1503 <h4>
1504 [1.3] I'm running phpMyAdmin with "cookie" authentication mode under
1505 PHP 4.2.0 or 4.2.1 loaded as an Apache 2+ module but can't enter the
1506 script: I'm always displayed the login screen.
1507 </h4>
1509 This is a known PHP bug (see this
1510 <a href="http://bugs.php.net/bug.php?id=16626">bug report</a>) from the
1511 official php bug database. It means there is and won't be any phpMyAdmin
1512 fix against it because there is no way to code a fix.
1513 </p>
1515 <h4>
1516 [1.4] Using phpMyAdmin on IIS, I'm displayed the error message:
1517 &quot;The specified CGI application misbehaved by not returning a
1518 complete set of HTTP headers...&quot;.
1519 </h4>
1521 You just forgot to read the <i>install.txt</i> file from the php
1522 distribution. Have a look at the last message in this
1523 <a href="http://bugs.php.net/bug.php?id=12061">bug report</a> from the
1524 official php bug database.
1525 </p>
1527 <h4>
1528 [1.5] Using phpMyAdmin on IIS, I'm facing crashes and/or many error
1529 messages with the http or advanced authentication mode.
1530 </h4>
1532 This is a known problem with the php ISAPI filter: it's not so stable. For
1533 some more information and complete testings see the messages posted by
1534 Andr&eacute; B. aka &quot;djdeluxe76&quot; in
1535 <a href="http://www.phpwizard.net/phorum/read.php?f=1&amp;i=6624&amp;t=6300">this&nbsp;thread</a>
1536 from the phpWizard forum.<br />
1537 Please use instead the cookie authentication mode.
1538 </p>
1540 <h4>
1541 [1.6] I can't use phpMyAdmin on PWS: nothing is displayed!</h4>
1543 This seems to be a PWS bug. Filippo Simoncini found a workaroud (at this
1544 time there is no better fix): remove or comment the <tt>DOCTYPE</tt>
1545 declarations (2 lines) from the scripts <i>header.inc.php3</i>,
1546 <i>header_printview.inc.php3</i>, <i>index.php3</i>, <i>left.php3</i> and
1547 <i>libraries/common.lib.php3</i>.
1548 </p>
1550 <h4>
1551 [1.7] How can I GZip or Bzip a dump or a CSV export. It does not seem to
1552 work.
1553 </h4>
1555 These features are based on the <tt>gzencode()</tt> and
1556 <tt>bzcompress()</tt> php functions to be more independent of the platform
1557 (Unix/Windows, Safe Mode or not, and so on).
1558 So, you must have PHP4&nbsp;>=&nbsp;4.0.4 and Zlib/Bzip2 support
1559 (<tt>--with-zlib</tt> and <tt>--with-bz2</tt>).<br />
1560 We faced php crashes when trying to download a dump with MS Internet
1561 Explorer when phpMyAdmin is run with a release candidate of php 4.2.0. In
1562 this case you should switch to the release version of php 4.2.0.
1563 </p>
1565 <h4>
1566 [1.8] I cannot insert a text file in a table, and I get an error about
1567 safe mode being in effect.
1568 </h4>
1570 Your uploaded file is saved by PHP in the &quot;upload dir&quot;, as
1571 defined in <i>php.ini</i> by the variable <tt>upload_tmp_dir</tt> (usually
1572 the system default is <i>/tmp</i>).
1573 <br />
1574 We recommend the following setup for Apache servers running in safe mode,
1575 to enable uploads of files while being reasonably secure:
1576 </p>
1577 <ul>
1578 <li>create a separate directory for uploads:
1579 <tt>mkdir /tmp/php</tt></li>
1580 <li>give ownership to the Apache server's user.group:
1581 <tt>chown apache.apache /tmp/php</tt></li>
1582 <li>give proper permission: <tt>chmod 600 /tmp/php</tt></li>
1583 <li>put <tt>upload_tmp_dir = /tmp/php</tt> in php.ini</li>
1584 <li>restart Apache</li>
1585 </ul>
1587 <h4>
1588 [1.9] I'm having troubles when uploading files. In general file uploads
1589 don't work on my system and uploaded files have a <tt>Content-Type:</tt>
1590 header in the first line.
1591 </h4>
1593 It's not really phpMyAdmin related but RedHat 7.0. You have a RedHat 7.0
1594 and you updated your php rpm to php-4.0.4pl1-3.i386.rpm, didn't you?
1595 <br />
1596 So the problem is that this package has a serious bug that was corrected
1597 ages ago in php (2001-01-28: see
1598 <a href="http://www.php.net/bugs.php?id=8966">php's bug tracking system</a>
1599 for more details). The problem is that the bugged package is still
1600 available though it was corrected (see
1601 <a href="http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=24933">redhat's bugzilla</a>
1602 for more details).
1603 <br />
1604 So please download
1605 <a href="http://www.redhat.com/swr/i386/php-4.0.4pl1-9.i386.html">the fixed package (4.0.4pl1-9)</a>
1606 and the problem should go away.
1607 <br />
1608 And that fixes the \r\n problem with file uploads!
1609 </p>
1611 <h4>
1612 [1.10] I'm having troubles when uploading files with phpMyAdmin running
1613 on a secure server. My browser is Internet Explorer and I'm using the
1614 Apache server.
1615 </h4>
1617 As suggested by &quot;Rob M&quot; in the phpWizard forum, add this line to
1618 your <i>httpd.conf</i>:<br />
1619 &nbsp;&nbsp;&nbsp;&nbsp;<tt>SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown</tt><br />
1620 It seems to clear up many problems between IE and SSL.
1621 </p>
1623 <h4>
1624 [1.11] I get an 'open_basedir restriction' while uploading a file from
1625 the query box.
1626 </h4>
1628 Since version 2.2.4, phpMyAdmin supports servers with open_basedir
1629 restrictions. Assuming that the restriction allows you to open files in the
1630 current directory ('.'), all you have to do is create a 'tmp' directory
1631 under the phpMyAdmin install directory, with permissions 777 and the same
1632 owner as the owner of your phpMyAdmin directory. The uploaded files will
1633 be moved there, and after execution of your SQL commands, removed.
1634 </p>
1636 <h4>
1637 [1.12] I have lost my MySQL root password, what can I do?
1638 </h4>
1640 The MySql manual explains how to
1641 <a href="http://www.mysql.com/doc/R/e/Resetting_permissions.html">
1642 reset the permissions</a>.
1643 </p>
1645 <h4>
1646 [1.13] I get an error 'No SQL query' when trying to execute a bookmark.
1647 </h4>
1649 If PHP does not have read/write access to its <tt>upload_tmp_dir</tt>, it
1650 cannot access the uploaded query.
1651 </p>
1653 <h4>
1654 [1.14] I get an error 'No SQL query' when trying to submit a query from
1655 the convenient text area.
1656 </h4>
1658 Check the <tt>post_max_size</tt> directive from your php configuration file
1659 and try to increase it.
1660 </p>
1662 <h4>
1663 [1.15] I have problems with <i>mysql.user</i> field names.
1664 </h4>
1666 In older MySQL versions, the <tt>User</tt> and <tt>Password</tt> fields
1667 were named <tt>user</tt> and <tt>password</tt>. Please modify your field
1668 names to align with current standards.
1669 </p>
1670 <h4>
1671 [1.16] I cannot upload big dump files.
1672 </h4>
1674 The first things to check (or ask your host provider to check) are the
1675 values of <tt>upload_max_filesize</tt>, <tt>memory_limit</tt> and
1676 <tt>post_max_size</tt> in the <i>php.ini</i> configuration file.
1677 <br />
1678 All of these three settings limit the maximum size of data that can be
1679 submitted and handled by php. One user also said that post_max_size
1680 and memory_limit need to be larger than upload_max_filesize.
1681 </p>
1683 <h4>
1684 [1.17] Does phpMyAdmin support MySQL&nbsp;4.1?
1685 </h4>
1687 Because of a major change in the definition syntax of string field types,
1688 this version of phpMyAdmin probably won't work correctly with
1689 MySQL&nbsp;&gt;=&nbsp;4.1.0! We will work on the support as soon as
1690 MySQL&nbsp;4.1.0 is released.
1691 </p>
1693 <h4>
1694 [1.18] I'm running MySQL&nbsp;&lt;=&nbsp;4.0.1 having
1695 <tt>lower_case_table_names</tt> set to 1. If I create a new table with a
1696 capital letter in its name it is changed to lowercase as it should. But
1697 if I try to DROP this table MySQL is unable to find the corresponding
1698 file.
1699 </h4>
1701 This is a bug of MySQL&nbsp;&lt;=&nbsp;4.0.1. Please upgrade to at least
1702 MySQL&nbsp;4.0.2 or turn off your <tt>lower_case_table_names</tt>
1703 directive.
1704 </p>
1706 <h4>
1707 [1.19] I can't run the &quot;display relations&quot; feature because the
1708 script seems not to know the font face I'm using!
1709 </h4>
1711 The &quot;FPDF&quot; library we're using for this feature requires some
1712 special files to use font faces.<br />
1713 Please refers to the
1714 <a href="http://www.fpdf.org/" target="_blank">FPDF manual</a> to build
1715 these files.
1716 </p>
1718 <a name="faqmysql"></a><br />
1719 <h4>
1720 [1.20] I receive the error &quot;cannot load MySQL extension, please
1721 check PHP Configuration&quot;.
1722 </h4>
1724 To connect to a MySQL server, PHP needs a set of MySQL functions called
1725 &quot;MySQL extension&quot;.
1726 This extension may be part of the PHP server (compiled-in), otherwise it
1727 needs to be loaded dynamically. Its name is probably <i>mysql.so</i> or
1728 <i>mysql.dll</i>. phpMyAdmin tried to load the extension but failed.
1729 <br /><br />
1730 Usually, the problem is solved by installing a software package called
1731 &quot;PHP-MySQL&quot; or something similar.
1732 </p>
1734 <h4>
1735 [1.21] I am running the CGI version of PHP under Unix, and I cannot
1736 login using cookie auth.
1737 </h4>
1739 In <i>php.ini</i>, set <tt>mysql.max_links</tt> higher than 1.
1740 </p>
1742 <h4>
1743 [1.22] I don't see the &quot;Location of text file&quot; field, so
1744 I cannot upload.
1745 </h4>
1747 This is most likely because in <i>php.ini</i>, your <tt>file_uploads</tt>
1748 parameter is not set to &quot;on&quot;.
1749 </p>
1751 <h4>
1752 [1.23] I'm running MySQL on a Win32 machine. Each time I create a new
1753 table the table and field names are changed to lowercase!
1754 </h4>
1756 This happens because the MySQL directive <tt>lower_case_table_names</tt>
1757 defaults to 1 (<tt>ON</tt>) in the Win32 version of MySQL. You can change
1758 this behavior by simply changing the directive to 0 (<tt>OFF</tt>):<br />
1759 Just edit you <tt>my.ini</tt> file that should be located in your Windows
1760 directory and add the following line:<br />
1761 <tt>set-variable = lower-case-table-names=0</tt><br />
1762 Next, save the file and restart the MySQL service. You can always check the
1763 value of this directive using the query<br />
1764 <tt>SHOW VARIABLES LIKE 'lower_case_table_names';</tt>
1765 </p>
1767 <h4>
1768 [1.24] Some characters are being truncated in my queries, or I get
1769 characters randomly added. I am running PHP 4.2.3.
1770 </h4>
1772 This is a
1773 <a href="http://bugs.php.net/bug.php?id=19404">PHP 4.2.3 bug</a>.
1774 </p>
1776 <h4>
1777 [1.25] I am running Apache with mod_gzip-1.3.26.1a on Windows XP,
1778 and I get problems, such as undefined variables when I run a SQL query.
1779 </h4>
1781 A tip from Jose Fandos: put a comment on the following two lines
1782 in httpd.conf, like this:<br />
1783 <tt># mod_gzip_item_include file \.php$</tt><br />
1784 <tt># mod_gzip_item_include mime "application/x-httpd-php.*"</tt><br />
1785 as this version of mod_gzip on Apache (Windows) has problems handling
1786 php scripts. Of course you have to restart Apache.
1787 </p>
1789 <h4>
1790 [1.26] I just installed phpMyAdmin in my document root of IIS but
1791 I get the error &quot;No input file specified&quot; when trying to
1792 run phpMyAdmin.
1793 </h4>
1795 This is a permission problem. Right-click on the phpmyadmin folder
1796 and choose properties. Under the tab Security, click on &quot;Add&quot;
1797 and select the user &quot;IUSER_machine&quot; from the list. Now set his
1798 permissions and it should work.
1799 </p>
1801 <h4>
1802 [1.27] I get empty page when I want to view huge page (eg.
1803 db_details_structure.php3 with plenty of dabases).
1804 </h4>
1806 This is a <a href="http://bugs.php.net/21079">PHP bug</a> that occur when
1807 GZIP output buffering enabled. If you turn off it (by <code>$cfg['OBGzip']
1808 = FALSE</code> in config.inc.php3), it should work. This bug will be fixed
1809 in PHP 5.0.0.
1810 </p>
1812 <h4>
1813 [1.28] My MySQL server sometimes refuses queries and returns the message
1814 'Errorcode: 13'. What does this mean?
1815 </h4>
1817 This can happen due to a MySQL bug when having database / table names with
1818 upper case characters although <tt>lower_case_table_names</tt> is set to 1.
1819 To fix this, turn off this directive, convert all database and table names
1820 to lower case and turn it on again. Alternatively, there's a bugfix
1821 available starting with MySQL&nbsp;3.23.56 / 4.0.11-gamma.
1822 </p>
1824 <a name="faqconfig"></a><br />
1825 <h3>[2. Configuration]</h3>
1827 <h4>
1828 [2.1] The error message &quot;Warning: Cannot add header information -
1829 headers already sent by ...&quot; is displayed, what's the problem?
1830 </h4>
1832 Edit your <i>config.inc.php or .php3</i> file and ensure there is nothing
1833 (ie no blank lines, no spaces, no characters...) neither before the
1834 <tt>&lt;?php</tt> tag at the beginning, neither after the <tt>?&gt;</tt>
1835 tag at the end.
1836 </p>
1838 <h4>
1839 [2.2] phpMyAdmin can't connect to MySQL. What's wrong?
1840 </h4>
1842 Either there is an error with your PHP setup or your username/password is
1843 wrong. Try to make a small script which uses mysql_connect and see if it
1844 works. If it doesn't, it may be you haven't even compiled MySQL support
1845 into PHP.
1846 </p>
1848 <h4>
1849 [2.3] The error message &quot;Warning: MySQL Connection Failed: Can't
1850 connect to local MySQL server through socket '/tmp/mysql.sock'
1851 (111)...&quot; is displayed. What can I do?
1852 </h4>
1853 <p><br />
1854 For RedHat users, Harald Legner suggests this on the mailing list:
1855 <br /><br />
1856 On my RedHat-Box the socket of mysql is <i>/var/lib/mysql/mysql.sock</i>.
1857 In your php.ini you will find a line
1858 <br />
1859 &nbsp;&nbsp;&nbsp;&nbsp;<tt>mysql.default_socket = /tmp/mysql.sock</tt>
1860 <br />
1861 change it to
1862 <br />
1863 &nbsp;&nbsp;&nbsp;&nbsp;<tt>mysql.default_socket = /var/lib/mysql/mysql.sock</tt>
1864 <br />
1865 Then restart apache and it will work.
1866 <br /><br />
1867 Here is a fix suggested by Brad Ummer in the phpwizard forum:
1868 </p>
1869 <ul>
1870 <li>
1871 First, you need to determine what socket is being used by MySQL.
1872 <br />
1873 To do this, telnet to your server and go to the MySQL bin directory. In
1874 this directory there should be a file named <i>mysqladmin</i>. Type
1875 <tt>./mysqladmin variables</tt>, and this should give you a bunch of
1876 info about your MySQL server, including the socket
1877 (<i>/tmp/mysql.sock</i>, for example).
1878 </li>
1879 <li>
1880 Then, you need to tell PHP to use this socket.<br />Assuming you are
1881 using PHP 3.0.10 or better, you can specify the socket to use when you
1882 open the connection. To do this in phpMyAdmin, you need to complete the
1883 socket information in the config.inc.php3.<br />
1884 For example:
1885 <tt>$cfg['Servers'][$i]['socket']&nbsp;=&nbsp;'/tmp/mysql.sock';</tt>
1886 </li>
1887 </ul>
1889 Have also a look at the
1890 <a href="http://www.mysql.com/doc/C/a/Can_not_connect_to_server.html" target="_blank">
1891 corresponding section of the MySQL documentation</a>.
1892 </p>
1894 <h4>
1895 [2.4] Nothing is displayed by my browser when I try to run phpMyAdmin,
1896 what can I do?
1897 </h4>
1899 Try to set the <tt>$cfg['OBGZip']</tt> directive to <tt>FALSE</tt> in the
1900 phpMyAdmin configuration file. It helps sometime.<br />
1901 Also have a look at your php version number: if it contains
1902 &quot;4.0b...&quot; it means you're running a beta version of PHP. That's
1903 not a so good idea, please upgrade to a plain revision.
1904 </p>
1906 <h4>
1907 [2.5] Each time I want to insert or change a record or drop a database
1908 or a table, an error 404 (page not found) is displayed or, with http or
1909 cookie authentication, I'm asked to login again. What's wrong?
1910 </h4>
1912 Check the value you set for the <tt>$cfg['PmaAbsoluteUri']</tt> directive
1913 in the phpMyAdmin configuration file.
1914 </p>
1917 <a name="faqlimitations"></a><br />
1918 <h3>[3. Known limitations]</h3>
1919 <a name="login_bug"></a><br />
1920 <h4>
1921 [3.1] When using http authentication, an user who logged out can not
1922 relog in with the same nick.
1923 </h4>
1925 This is related to the authentication mechanism (protocol) used by
1926 phpMyAdmin. We plan to change it as soon as we may find enough free time
1927 to do it, but you can bypass this problem: just close all the opened
1928 browser windows and then go back to phpMyAdmin. You should be able to
1929 logs in again.
1930 </p>
1932 <h4>
1933 [3.2] When dumping a large table in compressed mode, I get a memory
1934 limit error or a time limit error.
1935 </h4>
1937 As of version 2.2.4, we build the compressed dump in memory, so large
1938 tables dumps may hang. The only alternative we can think about (using
1939 system calls to mysqldump then gzip or bzip2) would not be applicable in
1940 environments where PHP is in safe mode: access to system programs is
1941 is limited by the system administrator, and time limit is enforced.
1942 </p>
1944 <h4>
1945 [3.3] With InnoDB tables, I lose foreign key relationships when I rename
1946 or alter a table.
1947 </h4>
1949 This seems to be a InnoDB bug (fixed in MySQL 3.23.50?). However, keep in
1950 mind that phpMyAdmin as of version 2.3.0 does not support InnoDB.
1951 </p>
1953 <h4>
1954 [3.4] I am unable to import dumps I created with the mysqldump tool
1955 bundled with the MySQL server distribution.
1956 </h4>
1958 The problem is that mysqldump creates invalid comments like this:
1959 </p>
1960 <pre>
1961 -- MySQL dump 8.22
1963 -- Host: localhost Database: database
1964 ---------------------------------------------------------
1965 -- Server version 3.23.54
1966 </pre>
1968 The invalid part of the code is the horizontal line made of dashes that
1969 appears once in every dump created with mysqldump. If you want to run your
1970 dump you have to turn it into valid MySQL. This means, you have to add a
1971 whitespace after the first to dashes of the line or add a # before it:
1972 <br />
1973 <code>
1974 -- -------------------------------------------------------<br />
1975 </code>
1976 or<br />
1977 <code>
1978 #---------------------------------------------------------
1979 </code>
1980 </p>
1983 <a name="faqmultiuser"></a><br />
1984 <h3>[4. ISPs, multi-user installations ]</h3>
1986 <h4>
1987 [4.1] I'm an ISP. Can I setup one central copy of phpMyAdmin or do I
1988 need to install it for each customer.
1989 </h4>
1991 Since version 2.0.3, you can setup a central copy of phpMyAdmin for all
1992 your users. The development of this feature was kindly sponsored by
1993 NetCologne GmbH.
1994 This requires a properly setup MySQL user management and phpMyAdmin
1995 http or cookie authentication. See the install section on
1996 &quot;Using http authentication&quot;.
1997 </p>
1999 <h4>
2000 [4.2] What's the preferred way of making phpMyAdmin secure against evil
2001 access.
2002 </h4>
2004 This depends on your system.<br />
2005 If you're running a server which cannot be accessed by other people, it's
2006 sufficient to use the directory protection bundled with your webserver
2007 (with Apache you can use <i>.htaccess</i> files, for example).<br />
2008 If other people have telnet access to your server, you should use
2009 phpMyAdmin's http authentication feature.
2010 <br /><br />
2011 Suggestions:
2012 </p>
2013 <ul>
2014 <li>
2015 Your <i>config.inc.php3</i> file should be <tt>chmod 660</tt>.
2016 </li>
2017 <li>
2018 All your phpMyAdmin files should be chown phpmy.apache, where phpmy
2019 is a user whose password is only known to you, and apache is the
2020 group under which Apache runs.
2021 </li>
2022 <li>
2023 You should use PHP safe mode, to protect from other users that try
2024 to include your <i>config.inc.php3</i> in their scripts.
2025 </li>
2026 </ul>
2028 <h4>
2029 [4.3] I get errors about not being able to include a file in
2030 <i>/lang</i> or in <i>/libraries</i>.
2031 </h4>
2033 Check <i>php.ini</i>, or ask your sysadmin to check it. The
2034 <tt>include_path</tt> must contain &quot;.&quot; somewhere in it, and
2035 <tt>open_basedir</tt>, if used, must contain &quot;.&quot; and
2036 &quot;./lang&quot; to allow normal operation of phpMyAdmin.
2037 </p>
2038 <h4>
2039 [4.4] phpMyAdmin always gives &quot;Access denied&quot; when using http
2040 authentication.
2041 </h4>
2043 This could happen for several reasons:
2044 </p>
2045 <ul>
2046 <li>
2047 <tt>$cfg['Servers'][$i]['controluser']</tt> and/or
2048 <tt>$cfg['Servers'][$i]['controlpass']</tt> are wrong.
2049 </li>
2050 <li>
2051 The username/password you specify in the login-dialog are invalid.
2052 </li>
2053 <li>
2054 You have already setup a security mechanism for the
2055 phpMyAdmin-directory, eg. a .htaccess file. This would interfere with
2056 phpMyAdmin's authentication, so remove it.
2057 </li>
2058 </ul>
2060 <h4>
2061 [4.5] Is it possible to let users create their own databases?
2062 </h4>
2064 Starting with 2.2.5, in the user management page, you can enter a wildcard
2065 database name for a user, and put the privileges you want. For example,
2066 adding <tt>SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER</tt>
2067 would let a user create/manage his/her database(s).
2068 </p>
2070 <h4>
2071 [4.6] How can I use the Host-based authentication additions?
2072 </h4>
2074 If you have existing rules from an old .htaccess file, you can take them
2075 and add a username between the <tt>'deny'</tt>/<tt>'allow'</tt> and
2076 <tt>'from'</tt> strings. Using the username wildcard of <tt>'%'</tt> would
2077 be a major benefit here if your installation is suited to using it. Then
2078 you can just add those updated lines into the
2079 <tt>$cfg['Servers'][$i]['AllowDeny']['rules']</tt> array.
2080 <br /><br />
2081 If you want a pre-made sample, you can try this fragment. It stops the
2082 'root' user from logging in from any networks other than the private
2083 network IP blocks.
2084 <br />
2085 <tt>
2086 &nbsp;&nbsp;&nbsp;&nbsp;//block root from logging in except from the private networks<br />
2087 &nbsp;&nbsp;&nbsp;&nbsp;$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';<br />
2088 &nbsp;&nbsp;&nbsp;&nbsp;$cfg['Servers'][$i]['AllowDeny']['rules'] = array(<br />
2089 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'deny root from all',<br />
2090 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'allow root from localhost',<br />
2091 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'allow root from 10.0.0.0/8',<br />
2092 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'allow root from 192.168.0.0/16',<br />
2093 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'allow root from 172.16.0.0/12',<br />
2094 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
2095 </tt>
2096 </p>
2098 <a name="faqbrowsers"></a><br />
2099 <h3>[5. Browsers or client OS]</h3>
2101 <h4>
2102 [5.1] I get an out of memory error, and my controls are non-functional,
2103 when trying to create a table with more than 14 fields.
2104 </h4>
2106 We could reproduce this problem only under Win98/98SE. Testing under
2107 WinNT4 or Win2K, we could easily create more than 60 fields.
2108 <br />
2109 A workaround is to create a smaller number of fields, then come back to
2110 your table properties and add the other fields.
2111 </p>
2113 <h4>
2114 [5.2] With Xitami 2.5b4, phpMyAdmin won't process form fields.
2115 </h4>
2117 This is not a phpMyAdmin problem but a Xitami known bug: you'll face it
2118 with each script/website that use forms.<br />
2119 Upgrade or downgrade your Xitami server.
2120 </p>
2122 <h4>
2123 [5.3] I have problems dumping tables with Konqueror (phpMyAdmin 2.2.2).
2124 </h4>
2126 With Konqueror 2.1.1: plain dumps, zip and gzip dumps work ok, except that
2127 the proposed file name for the dump is always 'tbl_dump.php'. Bzip2 dumps
2128 don't seem to work.<br />
2130 With Konqueror 2.2.1: plain dumps work; zip dumps are placed into
2131 the user's temporary directory, so they must be moved before closing
2132 Konqueror, or else they disappear. Gzip dumps give an error message.<br />
2134 Testing needs to be done for Konqueror 2.2.2.<br />
2135 </p>
2137 <h4>
2138 [5.4] I can't use the cookie authentication mode because Internet
2139 Explorer never stores the cookies.
2140 </h4>
2142 MS Internet Explorer seems to be really buggy about cookies, at least till
2143 version 6. And thanks to Andrew Zivolup we've traced also a php 4.1.1 bug
2144 in this area!
2145 <br />
2146 Then, if you're running php 4.1.1, try to upgrade or downgrade... it may
2147 work!
2148 </p>
2150 <h4>
2151 [5.5] In Internet Explorer 5.0, I get Javascript errors when browsing my
2152 rows.
2153 </h4>
2155 Upgrade to at least Internet Explorer 5.5 SP2.<br />
2156 </p>
2158 <h4>
2159 [5.6] In Internet Explorer 5.0, 5.5 or 6.0, I get an error when trying
2160 to modify a row in a table with many fields, or with a text field
2161 </h4>
2163 Your table neither have a primary key nor an unique one, so we must use a
2164 long URL to identify this row. There is a limit on the lenght of the URL in
2165 those browsers, and this not happen in Netscape, for example. The
2166 workaround is to create a primary or unique key, or use another browser.
2167 <br />
2168 </p>
2170 <h4>
2171 [5.7] I refresh (reload) my browser, and come back to the welcome
2172 page.
2173 </h4>
2175 Some browsers support right-clicking into the frame you want to refresh,
2176 just do this in the right frame.<br />
2177 </p>
2179 <h4>
2180 [5.8] With Mozilla 0.9.7 I have problems sending a query modified in the
2181 query box.
2182 </h4>
2184 Looks like a Mozilla bug: 0.9.6 was ok. We will keep an eye on future
2185 Mozilla versions.<br />
2186 </p>
2188 <h4>
2189 [5.9] With Mozilla 0.9.? to 1.0 and Netscape 7.0-PR1 I can't type a
2190 whitespace in the SQL-Query edit area: the page scrolls down.
2191 </h4>
2193 This is a Mozilla bug (see bug #26882 at
2194 <a href="http://bugzilla.mozilla.org/" target="_blank">Bugzilla</a>).<br />
2195 </p>
2197 <h4>
2198 [5.10] With Netscape 4.75 I get empty rows between each row of data in a
2199 CSV exported file.
2200 </h4>
2202 This is a known Netscape 4.75 bug: it adds some line feeds when exporting
2203 data in octet-stream mode. Since we can't detect the specific Netscape
2204 version, we cannot workaround this bug.
2205 </p>
2207 <h4>
2208 [5.11] Extended-ASCII characters like German umlauts are displayed
2209 wrong.
2210 </h4>
2212 Please ensure that you have set your browser's charset to the one of the
2213 language file you have selected on phpMyAdmin's start page.
2214 Alternatively, you can try the auto detection mode that is supported by the
2215 recent versions of the most browsers.
2216 </p>
2218 <h4>
2219 [5.12] Apple OS X: Safari browser changes special characters to
2220 &quot;?&quot;.
2221 </h4>
2223 This issue has been reported by a OS X user, who adds that Chimera,
2224 Netscape and Mozilla do not have this problem.
2225 </p>
2227 <h4>
2228 [5.13] With Internet Explorer 5.5 or 6, and http authentication type,
2229 I cannot manage two servers: I login to the first one, then the other one,
2230 but if I switch back to the first, I have to login on each operation.
2231 </h4>
2233 This is a bug in Internet Explorer, other browsers do not behave this way.
2234 </p>
2236 <a name="faqusing"></a><br />
2237 <h3>[6. Using phpMyAdmin]</h3>
2239 <h4>
2240 [6.1] I can't insert new rows into a table / I can't create a table
2241 - MySQL brings up a SQL-error.
2242 </h4>
2244 Examine the SQL error with care. Often the problem is caused by
2245 specifying a wrong field-type.<br />
2246 Common errors include:
2247 </p>
2248 <ul>
2249 <li>Using <tt>VARCHAR</tt> without a size argument</li>
2250 <li>Using <tt>TEXT</tt> or <tt>BLOB</tt> with a size argument</li>
2251 </ul>
2253 Also, look at the syntax chapter in the MySQL manual to confirm that your
2254 syntax is correct.
2255 </p>
2257 <h4>
2258 [6.2] When I create a table, I click the Index checkbox for 2 fields and
2259 phpMyAdmin generates only one index with those 2 fields.
2260 </h4>
2262 In phpMyAdmin 2.2.0 and 2.2.1, this is the way to create a multi-fields
2263 index. If you want two indexes, create the first one when creating the
2264 table, save, then display the table properties and click the Index link to
2265 create the other index.
2266 </p>
2268 <h4>
2269 [6.3] How can I insert a null value into my table?
2270 </h4>
2272 Since version 2.2.3, you have a checkbox for each field that can be null.
2273 Before 2.2.3, you had to enter &quot;null&quot;, without the quotes, as the
2274 field's value.
2275 </p>
2277 <h4>
2278 [6.4] How can I backup my database or table?
2279 </h4>
2281 Click on a database or table name in the left frame, the properties will be
2282 displayed. Then on the menu, click &quot;Export&quot;, you can dump
2283 the structure, the data, or both. This will generate standard SQL
2284 statements that can be used to recreate your database/table.
2285 <br /><br />
2286 You will need to choose &quot;Save as file&quot;, so that phpMyAdmin can
2287 transmit the resulting dump to your station. Depending on your PHP
2288 configuration, you will see options to compress the dump. See also the
2289 <tt>$cfg['ExecTimeLimit']</tt> configuration variable.
2290 <br /><br />
2291 For additional help on this subject, look for the word &quot;dump&quot; in
2292 this document.
2293 </p>
2295 <h4>
2296 [6.5] How can I restore (upload) my database or table using a dump?
2297 How can I run a &quot;.sql&quot; file.
2298 </h4>
2300 Click on a database name in the left frame, the properties will be
2301 local displayed. Then in the &quot;Run SQL query&quot; section, type in
2302 your dump filename, or use the Browse button. Then click Go.
2303 <br /><br />
2304 For additional help on this subject, look for the word &quot;upload&quot;
2305 in this document.
2306 </p>
2308 <h4>
2309 [6.6] How can I use the relation table in Query-by-example?
2310 </h4>
2312 Here is an example with the tables persons, towns and countries, all
2313 located in the database mydb. If you don't have a <tt>PMA_relation</tt>
2314 table, create it as explained in the configuration section. Then create the
2315 example tables:
2316 <br /><br />
2317 <tt>
2318 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE REL_countries (<br />
2319 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;country_code char(1) NOT NULL default '',<br />
2320 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;description varchar(10) NOT NULL default '',<br />
2321 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (country_code)<br />
2322 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM;<br />
2323 <br />
2324 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO REL_countries VALUES ('C', 'Canada');<br />
2325 <br />
2326 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE REL_persons (<br />
2327 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id tinyint(4) NOT NULL auto_increment,<br />
2328 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;person_name varchar(32) NOT NULL default '',<br />
2329 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;town_code varchar(5) default '0',<br />
2330 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;country_code char(1) NOT NULL default '',<br />
2331 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (id)<br />
2332 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM;<br />
2333 <br />
2334 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO REL_persons VALUES (11, 'Marc', 'S', '');<br />
2335 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C');<br />
2336 <br />
2337 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE REL_towns (<br />
2338 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;town_code varchar(5) NOT NULL default '0',<br />
2339 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;description varchar(30) NOT NULL default '',<br />
2340 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (town_code)<br />
2341 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM;<br />
2342 <br />
2343 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO REL_towns VALUES ('S', 'Sherbrooke');<br />
2344 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO REL_towns VALUES ('M', 'Montr&eacute;al');<br />
2345 <br />
2346 </tt>
2347 To setup appropriate links and display information:
2348 </p>
2349 <ul>
2350 <li>on table &quot;REL_persons&quot; click Structure, then Relation view</li>
2351 <li>in Links, for &quot;town_code&quot; choose &quot;REL_towns-&gt;code&quot;</li>
2352 <li>in Links, for &quot;country_code&quot; choose &quot;REL_countries-&gt;country_code&quot;</li>
2353 <li>on table &quot;REL_towns&quot; click Structure, then Relation view</li>
2354 <li>in &quot;Choose field to display&quot;, choose &quot;description&quot;</li>
2355 <li>repeat the two previous steps for table &quot;REL_countries&quot;</li>
2356 </ul>
2359 Then test like this:
2360 </p>
2361 <ul>
2362 <li>Click on your db name in the left frame</li>
2363 <li>Choose &quot;Query&quot;</li>
2364 <li>Use tables: persons, towns, countries</li>
2365 <li>Click &quot;Update query&quot;</li>
2366 <li>In the fields row, choose persons.person_name and click the
2367 &quot;Show&quot; tickbox </li>
2368 <li>Do the same for towns.description and countries.descriptions in the
2369 other 2 columns</li>
2370 <li>Click &quot;Update query&quot; and you will see in the query box that
2371 the correct joins have been generated</li>
2372 <li>Click &quot;Submit query&quot;</li>
2373 </ul>
2374 <br />
2376 <a name="faqdisplay"></a><br />
2377 <h4>
2378 [6.7] How can I use the &quot;display field&quot; feature?
2379 </h4>
2381 Starting from the previous example, create the PMA_table_info as explained
2382 in the configuration section, then browse your persons table,
2383 and move the mouse over a town code or country code.
2384 </p>
2386 <a name="faqpdf"></a><br />
2387 <h4>
2388 [6.8] How can I produce a PDF schema of my database?
2389 </h4>
2391 First you have to fill the &quot;relation&quot;, &quot;table_coords&quot;
2392 and &quot;pdf_pages&quot; configuration variables.
2393 <br /><br />
2394 Then, think about your schema layout: which tables will go on which pages.
2395 </p>
2396 <ul>
2397 <li>Click on your db name in the left frame</li>
2398 <li>Choose &quot;Structure&quot; in the navigation on top</li>
2399 <li>Choose &quot;Edit PDF Pages&quot; which should be somewhere at the
2400 bottom of the page</li>
2401 <li>Enter the name for a first pdf page and submit</li>
2402 <li>Choose this page to edit</li>
2403 <li>Now add a table you want to show on this page and it's coordinates and
2404 submit<br />
2405 First you will have to guess this coordinates of course, so just expect
2406 to have an area of about 297 * 210 and put the tables coordinates
2407 somewhere in there, you will be able to have a look at what happened
2408 and change them later.<br />
2409 For example, x=100 and y=200 means that the table will be at 200 mm
2410 down and 100 mm right from the upper left corner.<br />
2411 Actually if you have a width of more than 300 or a height of more than
2412 200 than it will automatically be scaled but 300*100 is a good start to
2413 have an idea of what coordinates to use.</li>
2414 <li>After every table you submitted you will have the possibility to submit
2415 more tables</li>
2416 <li>When you have entered enough tables Click on your db name in the left
2417 frame again</li>
2418 <li>Now, again at the bottom of the page you should be able to choose
2419 &quot;Display PDF schema&quot;<br />
2420 For testing it might be useful to show the grid as well, so you can see
2421 the coordinates used.<br />
2422 Maybe also choose color and submit.</li>
2423 <li>Save the file he will offer you to something like <i>Schema.pdf</i>
2424 (Internet Explorer has some bug there which might make it offer it
2425 without an extension. Under Windows it is important to have the
2426 extension &quot;.pdf&quot;, under other OSes you should be fine just
2427 saving the file under the name it offers).</li>
2428 </ul>
2430 <h4>
2431 [6.9] phpMyAdmin is changing the type of one of my columns!
2432 </h4>
2434 No, it's MySQL that is doing
2435 <a href="http://www.mysql.com/doc/S/i/Silent_column_changes.html">silent column type changing</a>.
2436 </p>
2438 <a name="underscore"></a><br />
2439 <h4>
2440 [6.10] My database has an underscore in it's name, and when I grant
2441 privileges to a user for this database, a backslash is added before the
2442 underscore.
2443 </h4>
2445 This is normal and means that the grant is done only for this database. If
2446 there was no backslash, this would be a wildcard grant, and the
2447 underscore would mean &quot;any character&quot;. So, if the database name
2448 is &quot;john_db&quot;, the user would get rights to john1db, john2db...
2449 instead of just john_db.<br /><br />
2450 If you really want to grant using a wildcard, there is a dialog box &quot;
2451 Database (wildcards allowed)&quot; for this.
2452 </p>
2454 <h4>
2455 [6.11] What is the curious symbol &oslash; in the statistics pages?
2456 </h4>
2458 It means &quot;average&quot;.
2459 </p>
2461 <a name="faqexport"></a><br />
2462 <h4>
2463 [6.12] I want to understand some Export options.
2464 </h4>
2466 &quot;Complete inserts&quot; adds the column names on every INSERT command,
2467 for better documentation (but resulting file is bigger).<br />
2468 &quot;Extended inserts&quot; provides a shorter dump file by using only
2469 once the INSERT verb and the table name.<br />
2470 &quot;Enclose table and field names with backquotes&quot; ensures that
2471 field and table names formed with special characters are protected.<br />
2472 </p>
2474 <h4>
2475 [6.13] I would like to create a database with a dot in its name.
2476 </h4>
2478 This is a bad idea, because in MySQL the syntax &quot;database.table&quot;
2479 is the normal way to reference a database and table name. Worse, MySQL
2480 will usually let you create a database with a dot, but then you cannot
2481 work with it, nor delete it.<br />
2482 </p>
2484 <a name="faqsqlvalidator"></a><br />
2485 <h4>
2486 [6.14] How do I set up the SQL validator?
2487 </h4>
2489 To use it, you need a very recent version of PHP, 4.3.0 recommended, with
2490 XML, PCRE and PEAR support. On your system command line, run
2491 <tt>"pear install Net_Socket Net_URL HTTP_Request Mail_Mime Net_DIME
2492 SOAP"</tt> to get the nessecary PEAR modules for usage.
2493 <br />
2494 If you use it, you should be aware that any SQL statement you
2495 submit will be stored anonymously (database/table/column names,
2496 strings, numbers replaced with generic values). The Mimer SQL
2497 Validator itself, is &copy; 2001 Upright Database Technology.
2498 We utilize it as free SOAP service.
2499 </p>
2501 <h4>
2502 [6.15] I want to add a BLOB field and put an index on it, but MySQL
2503 says &quot;BLOB column '...' used in key specification without a key
2504 length&quot;.
2505 </h4>
2507 The right way to do this, is to create the field without any indexes,
2508 then display the table structure and use the &quot;Create an index&quot;
2509 dialog. On this page, you will be able to choose your BLOB field, and
2510 set a size to the index, which is the condition to create an index on
2511 a BLOB field.
2512 <br />
2513 </p>
2515 <h4>
2516 [6.16] How can I simply move in page with plenty editing fields?
2517 </h4>
2519 You can use Ctrl+arrows for moving on most pages with plenty editing
2520 fields (table structure changes, row editing, etc.).
2521 <br />
2522 </p>
2524 <a name="faqproject"></a><br />
2525 <h3>[7. phpMyAdmin project]</h3>
2527 <h4>
2528 [7.1] I have found a bug. How do I inform developers?
2529 </h4>
2531 Our Bug Tracker is located at
2532 <a href="http://sourceforge.net/projects/phpmyadmin/">http://sourceforge.net/projects/phpmyadmin/</a>
2533 under the Bugs section.
2534 <br /><br />
2535 But please first discuss your bug with other users:
2536 <br />
2537 <a href="http://sourceforge.net/projects/phpmyadmin/">
2538 http://sourceforge.net/projects/phpmyadmin/</a> (and choose Forums)
2539 </p>
2541 <h4>
2542 [7.2] I want to translate the messages to a new language or upgrade an
2543 existing language, where do I start?
2544 </h4>
2546 Always use the current cvs version of your language file.
2547 For a new language, start from <i>english-iso-8859-1.inc.php3</i>. If you
2548 don't know how to get the cvs version, please ask one of the developers.
2549 <br />
2550 Please note that we try not to use html entities like &amp;eacute; in
2551 the translations, since we define the right character set in the file.
2552 With html entities, the text on javascript messages would not
2553 display correctly.
2554 However there are some entities that need to be there, for quotes
2555 ,non-breakable spaces, ampersands, less than, greater than.
2556 <br />
2557 You can then put your translations, as a zip file to avoid losing special
2558 characters, on the sourceforge.net translation tracker.
2559 <br />
2560 It would be a good idea to subscribe to the phpmyadmin-translators mailing
2561 list, because this is where we ask for translations of new messages.
2562 <br />
2563 </p>
2565 <h4>
2566 [7.3] I would like to help out with the development of phpMyAdmin. How
2567 should I proceed?
2568 </h4>
2570 The following method is preferred for new developers:
2571 </p>
2572 <ol>
2573 <li>
2574 fetch the current CVS tree over anonymous CVS:<br />
2575 <tt>cvs -d:pserver:anonymous@cvs.phpmyadmin.sourceforge.net:/cvsroot/phpmyadmin login</tt><br />
2576 [Password: simply press the Enter key]<br />
2577 <tt>cvs -z3 -d:pserver:anonymous@cvs.phpmyadmin.sourceforge.net:/cvsroot/phpmyadmin checkout phpMyAdmin</tt><br />
2578 [This will create a new sub-directory named phpMyAdmin]
2579 </li>
2580 <li>
2581 add your stuff
2582 </li>
2583 <li>
2584 put the modified files (tar'ed and gzip'ed) inside the patch tracker of
2586 <a href="http://sourceforge.net/projects/phpmyadmin/" target="_blank">phpMyAdmin SourceForge account</a>.
2587 </li>
2588 </ol>
2590 Write access to the CVS tree is granted only to experienced developers who
2591 have already contributed something useful to phpMyAdmin.<br />
2592 Also, have a look at the
2593 <a href="#developers">Developers section</a>.
2594 </p>
2598 <!-- DEVELOPERS -->
2599 <a name="developers"></a><br />
2600 <h2>Developers Information</h2>
2603 phpMyAdmin is Open Source, so you're invited to contribute to it. Many
2604 great features have been written by other people and you too can help to
2605 make phpMyAdmin a useful tool.
2606 </p>
2609 If you're planning to contribute source, please read the following
2610 information:
2611 </p>
2612 <ul>
2613 <li>
2614 All files include <i>header.inc.php3</i> (layout),
2615 <i>libraries/common.lib.php3</i> (common functions) and
2616 <i>config.inc.php3</i>.
2617 <br />
2618 All configuration data belongs in <i>config.inc.php3</i>. Please keep
2619 it free from other code.
2620 <br />
2621 Commonly used functions should be added to
2622 <i>libraries/common.lib.php3</i> and more specific ones may be added
2623 within a library stored into the <i>libraries</i> sub-directory.
2624 </li>
2625 <li>
2626 Obviously, you're free to use whatever coding style you want. But
2627 please try to keep your code as simple as possible: beginners are
2628 using phpMyAdmin as an example application.<br />
2629 As far as possible, we want the scripts to be XHTML1.0 and CSS2
2630 compliant on one hand, they fit the
2631 <a href="http://pear.php.net/" target="_blank">PEAR coding standards</a>
2632 on the other hand. Please pay attention to this.
2633 </li>
2634 <li>
2635 Please try to keep up the file-naming conventions. Table-related stuff
2636 goes to <i>tbl_*.php3</i>, db-related code to <i>db_*.php3</i>,
2637 server-related tools to <i>server_*.php3</i> and so on.
2638 </li>
2639 <li>
2640 Please don't use verbose strings in your code, instead add the string
2641 (at least) to <i>english-iso-8859-1.inc.php3</i> and print() it out.
2642 </li>
2643 <li>
2644 If you want to be really helpful, write an entry for the ChangeLog.
2645 </li>
2646 <li id="developersdbg">
2647 The DBG extension (<a href="http://dd.cron.ru/dbg/" target="_blank">PHP
2648 Debugger DBG</a>) is now supported by phpMyAdmin for developers to
2649 better debug and profile their code.<br />
2650 Please see the <tt>$cfg['DBG']*</tt> configuration options for more
2651 information.<br />
2652 This is in memorium of the Space Shuttle Columbia (STS-107) which was
2653 lost during its re-entry into Earth's atmosphere and in memory of the
2654 brave men and women who gave their lives for the people of Earth.
2655 </li>
2657 </ul>
2659 <!-- CREDITS -->
2660 <a name="credits"></a><br />
2661 <h2>Credits</h2>
2663 <pre>
2665 phpMyAdmin - Credits
2666 ====================
2668 CREDITS, in chronological order
2669 -------------------------------
2671 - Tobias Ratschiller &lt;tobias.ratschiller_at_maguma.com&gt;
2672 * creator of the phpmyadmin project
2673 * maintainer from 1998 to summer 2000
2675 - Marc Delisle &lt;DelislMa_at_CollegeSherbrooke.qc.ca&gt;
2676 * multi-language version
2677 * various fixes and improvements
2678 * project co-administrator
2680 - Olivier M&uuml;ller &lt;om_at_omnis.ch&gt;
2681 * started SourceForge phpMyAdmin project in March 2001
2682 * sync'ed different existing CVS trees with new features and bugfixes
2683 * multi-language improvements, dynamic language selection
2684 * current project maintainer
2685 * many bugfixes and improvements
2687 - Lo&iuml;c Chapeaux &lt;lolo_at_phpheaven.net&gt;
2688 * rewrote and optimized javascript, DHTML and DOM stuff
2689 * rewrote the scripts so they fit the PEAR coding standards and
2690 generate XHTML1.0 and CSS2 compliant codes
2691 * improved the language detection system
2692 * many bugfixes and improvements
2694 - Robin Johnson &lt;robbat2_at_users.sourceforge.net&gt;
2695 * database maintence controls
2696 * table type code
2697 * Host authentication IP Allow/Deny
2698 * DB-based configuration (Not completed)
2699 * SQL parser
2700 * SQL validator
2701 * many bugfixes and improvements
2703 - Armel Fauveau &lt;armel.fauveau_at_globalis-ms.com&gt;
2704 * bookmarks feature
2705 * multiple dump feature
2706 * gzip dump feature
2707 * zip dump feature
2709 - Geert Lund &lt;glund_at_silversoft.dk&gt;
2710 * various fixes
2711 * moderator of the phpMyAdmin users forum at phpwizard.net
2713 - Korakot Chaovavanich &lt;korakot_at_iname.com&gt;
2714 * &quot;insert as new row&quot; feature
2716 - Pete Kelly &lt;webmaster_at_trafficg.com&gt;
2717 * rewrote and fix dump code
2718 * bugfixes
2720 - Steve Alberty &lt;alberty_at_neptunlabs.de&gt;
2721 * rewrote dump code for PHP4
2722 * mySQL table statistics
2723 * bugfixes
2725 - Benjamin Gandon &lt;gandon_at_isia.cma.fr&gt;
2726 * main author of the version 2.1.0.1
2727 * bugfixes
2729 - Alexander M. Turek &lt;rabus_at_bugfixes.info&gt;
2730 * XML exports
2731 * MySQL 4 related features
2732 * various small features and fixes
2733 * German language file updates
2735 - Mike Beck &lt;mike.beck_at_ibmiller.de&gt;
2736 * automatic joins in QBE
2737 * links column in printview
2738 * Relation view
2740 - Michal Cihar &lt;nijel_at_users.sourceforge.net&gt;
2741 * enhanced index creation/display feature
2742 * feature to use a different charset for HTML than for MySQL
2743 * Czech language file updates
2745 - Christophe Gesch&eacute; from the &quot;MySQL Form Generator for PHPMyAdmin&quot;
2746 (http://sourceforge.net/projects/phpmysqlformgen/)
2747 * suggested the patch for multiple table printviews
2749 - Garvin Hicking &lt;hicking_at_faktor-e.de&gt;
2750 * built the patch for vertical display of table rows
2752 - Yukihiro Kawada &lt;kawada_at_den.fujifilm.co.jp&gt;
2753 * japanese kanji encoding conversion feature
2755 - Piotr Roszatycki &lt;d3xter_at_users.sourceforge.net&gt; and Dan Wilson
2756 * the Cookie authentication mode
2758 - Axel Sander &lt;n8falke_at_users.sourceforge.net&gt;
2759 * table relation-links feature
2761 - Maxime Delorme &lt;delorme.maxime_at_free.fr&gt;
2762 * PDF schema output, thanks also to Olivier Plathey for the
2763 &quot;FPDF&quot; library (see http://www.fpdf.org/).
2765 - Olof Edlund &lt;olof.edlund_at_upright.se&gt;
2766 * SQL validator server
2768 - Ivan R. Lanin &lt;ivanlanin_at_users.sourceforfe.net&gt;
2769 * phpMyAdmin logo
2771 And also to the following people who have contributed minor changes,
2772 enhancements, bugfixes or support for a new language since version 2.1.0:
2774 Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita,
2775 P&eacute;ter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow,
2776 Mats Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kl&auml;ger,
2777 Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg, Andreas Pauley,
2778 Bernard M. Piller, Laurent Haas, &quot;Sakamoto&quot;, Yuval Sarna,
2779 www.securereality.com.au, Alvar Soome, Siu Sun, Peter Svec, Michael Tacelosky,
2780 Rachim Tamsjadi, Kositer Uros, Luís V., Martijn W. van der Lee,
2781 Algis Vainauskas, Daniel Villanueva, Vinay, Ignacio Vazquez-Abrams, Chee Wai,
2782 Jakub Wilk, Thomas Michael Winningham, Vilius Zigmantas.
2785 Original Credits of Version 2.1.0
2786 ---------------------------------
2788 This work is based on Peter Kuppelwieser's MySQL-Webadmin. It was his idea
2789 to create a web-based interface to MySQL using PHP3. Although I have not
2790 used any of his source-code, there are some concepts I've borrowed from
2791 him. phpMyAdmin was created because Peter told me he wasn't going to
2792 further develop his (great) tool.
2793 Thanks go to
2794 - Amalesh Kempf &lt;ak-lsml_at_living-source.com&gt; who contributed the
2795 code for the check when dropping a table or database. He also suggested
2796 that you should be able to specify the primary key on tbl_create.php3. To
2797 version 1.1.1 he contributed the ldi_*.php3-set (Import text-files) as
2798 well as a bug-report. Plus many smaller improvements.
2799 - Jan Legenhausen &lt;jan_at_nrw.net&gt;: He made many of the changes that
2800 were introduced in 1.3.0 (including quite significant ones like the
2801 authentication). For 1.4.1 he enhanced the table-dump feature. Plus
2802 bug-fixes and help.
2803 - Marc Delisle &lt;DelislMa_at_CollegeSherbrooke.qc.ca&gt; made phpMyAdmin
2804 language-independent by outsourcing the strings to a separate file. He
2805 also contributed the French translation.
2806 - Alexandr Bravo &lt;abravo_at_hq.admiral.ru&gt; who contributed
2807 tbl_select.php3, a feature to display only some fields from a table.
2808 - Chris Jackson &lt;chrisj_at_ctel.net&gt; added support for MySQL
2809 functions in tbl_change.php3. He also added the
2810 &quot;Query by Example&quot; feature in 2.0.
2811 - Dave Walton &lt;walton_at_nordicdms.com&gt; added support for multiple
2812 servers and is a regular contributor for bug-fixes.
2813 - Gabriel Ash &lt;ga244_at_is8.nyu.edu&gt; contributed the random access
2814 features for 2.0.6.
2815 The following people have contributed minor changes, enhancements, bugfixes
2816 or support for a new language:
2817 Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas Kleemann,
2818 Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel Piankov,
2819 Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein, Jannis Hermanns,
2820 G. Wieggers.
2822 And thanks to everyone else who sent me email with suggestions, bug-reports
2823 and or just some feedback.
2824 </pre>
2828 <a name="bottom"></a><br />
2829 <p align="right">
2830 <a href="http://validator.w3.org/check/referer" target="w3c">
2831 <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" border="0" height="31" width="88" /></a>
2832 &nbsp;&nbsp;&nbsp;&nbsp;
2833 <a href="http://jigsaw.w3.org/css-validator/" target="w3c">
2834 <img src="http://www.w3.org/Icons/valid-css" alt="Valid CSS!" border="0" width="88" height="31" /></a>
2835 </p>
2837 </body>
2838 </html>