Fixed bug.
[phpmyadmin/crack.git] / Documentation.html
blob814b8bef291482877153c3763f93dcd20721cd36
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.1-dev - 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.1-dev 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_info']</b> string
756 </dt>
757 <dd>
758 <!-- This part requires a content update! -->
759 Since release 2.3.0 you can store comments to describe each column
760 for each table. These will then be shown on the &quot;printview&quot;.
761 <br />
762 To allow the usage of this functionality the superuser has to:
763 <ul>
764 <li>set up &quot;pmadb&quot; as described above</li>
765 <li>
766 within this database create a table following this scheme:
767 <br />
768 <tt>
769 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE `PMA_column_info` (<br />
770 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id int(5) unsigned NOT NULL auto_increment,<br />
771 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db_name varchar(64) NOT NULL default '',<br />
772 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table_name varchar(64) NOT NULL default '',<br />
773 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;column_name varchar(64) NOT NULL default '',<br />
774 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`comment` varchar(255) NOT NULL default '',<br />
775 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (id),<br />
776 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UNIQUE KEY db_name (db_name, table_name, column_name)<br />
777 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM COMMENT='Comments for Columns';<br />
778 </tt>
779 </li>
780 <li>
781 put the table name in
782 <tt>$cfg['Servers'][$i]['column_info']</tt>
783 </li>
784 </ul><br />
785 </dd>
787 <dt>
788 <b>$cfg['Servers'][$i]['AllowDeny']['order']</b> string
789 </dt>
790 <dd>
791 If your rule order is empty, then IP authentication is disabled.
792 <br /><br />
793 If your rule order is set to <tt>'deny,allow'</tt> then the system
794 applies all deny rules followed by allow rules.
795 Access is allowed by default. Any client which does not match a Deny
796 command or does match an Allow command will be allowed access to the
797 server.
798 <br /><br />
799 If your rule order is set to <tt>'allow,deny'</tt> then the system
800 applies all allow rules followed by deny rules. Access is denied by
801 default. Any client which does not match an Allow directive or does
802 match a Deny directive will be denied access to the server.
803 <br /><br />
804 If your rule order is set to 'explicit', the authentication is
805 performed in a similar fashion to rule order 'deny,allow', with the
806 added restriction that your host/username combination <b>must</b> be
807 listed in the <i>allow</i> rules, and not listed in the <i>deny</i>
808 rules. This is the <b>most</b> secure means of using Allow/Deny rules,
809 and was available in Apache by specifying allow and deny rules without
810 setting any order.
811 <br /><br />
812 </dd>
814 <dt>
815 <b>$cfg['Servers'][$i]['AllowDeny']['rules']</b> array of strings
816 </dt>
817 <dd>
818 The general format for the rules is as such:<br />
819 <tt>
820 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
821 &lt;'allow' | 'deny'&gt; &lt;username&gt; [from] &lt;ipmask&gt;
822 </tt>
823 <br /><br />
825 If you wish to match all users, it is possible to use a <tt>'%'</tt> as
826 a wildcard in the <i>username</i> field.<br />
827 There are a few shortcuts you can use in the <i>ipmask</i> field as
828 well:<br />
829 <tt>
830 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'all' -&gt; 0.0.0.0/0<br />
831 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'localhost' -&gt; 127.0.0.1/8
832 </tt>
833 <br /><br />
835 Having an empty rule list is equivalent to either using
836 <tt>'allow % from all'</tt> if your rule order is set to
837 <tt>'deny,allow'</tt> or <tt>'deny % from all'</tt> if your rule order
838 is set to <tt>'allow,deny'</tt> or <tt>'explicit'</tt>.
839 <br /><br />
841 For the IP matching system, the following work:<br />
842 <tt>xxx.xxx.xxx.xxx</tt> (an exact IP address)<br />
843 <tt>xxx.xxx.xxx.[yyy-zzz]</tt> (an IP address range)<br />
844 <tt>xxx.xxx.xxx.xxx/nn</tt> (CIDR, Classless Inter-Domain Routing type IP addresses)<br />
845 But the following does not work:<br />
846 <tt>xxx.xxx.xxx.xx[yyy-zzz]</tt> (partial IP address range)
847 <br /><br />
848 </dd>
850 <dt><b>$cfg['ServerDefault']</b> integer</dt>
851 <dd>
852 If you have more than one server configured, you can set
853 <tt>$cfg['ServerDefault']</tt> to any one of them to autoconnect to
854 that server when phpMyAdmin is started, or set it to 0 to be given a
855 list of servers without logging in.<br />
856 If you have only one server configured, <tt>$cfg['ServerDefault']</tt>
857 MUST be set to that server.
858 <br /><br />
859 </dd>
861 <dt><b>$cfg['OBGzip'] </b>boolean</dt>
862 <dd>
863 Defines whether to use gzip output buffering for increased
864 speed in HTTP transfers.
865 <br /><br />
866 </dd>
868 <dt><b>$cfg['PersistentConnections'] </b>boolean</dt>
869 <dd>
870 Whether persistent connections should be used or not (mysql_connect or
871 mysql_pconnect).
872 <br /><br />
873 </dd>
875 <dt><b>$cfg['ExecTimeLimit'] </b>integer [number of seconds]</dt>
876 <dd>
877 Set the number of seconds a script is allowed to run. If seconds is set
878 to zero, no time limit is imposed.<br />
879 This setting is used while importing/exporting dump files but has no
880 effect when PHP is running in safe mode.
881 <br /><br />
882 </dd>
884 <dt><b>$cfg['SkipLockedTables'] </b>boolean</dt>
885 <dd>
886 Mark used tables and make it possible to show databases with locked
887 tables (since 3.23.30).
888 <br /><br />
889 </dd>
891 <dt><b>$cfg['ShowSQL'] </b>boolean</dt>
892 <dd>
893 Defines whether sql-queries generated by phpMyAdmin should be displayed
894 or not.
895 <br /><br />
896 </dd>
898 <dt><b>$cfg['AllowUserDropDatabase'] </b>boolean</dt>
899 <dd>
900 Defines whether normal users (non-administrator) are allowed to
901 delete their own database or not. If set as FALSE, the link &quot;Drop
902 Database&quot; will not be shown, and even a &quot;DROP DATABASE
903 mydatabase&quot; will be rejected. Quite practical for ISP's with many
904 customers.
905 <br /><br />
906 </dd>
908 <dt><b>$cfg['Confirm'] </b>boolean</dt>
909 <dd>
910 Whether a warning (&quot;Are your really sure..&quot;) should be
911 displayed when you're about to loose data.
912 <br /><br />
913 </dd>
915 <dt><b>$cfg['LoginCookieRecall'] </b>boolean</dt>
916 <dd>
917 Define whether the previous login should be recalled or not in cookie
918 authentication mode.
919 <br /><br />
920 </dd>
922 <dt><b>$cfg['UseDbSearch'] </b>boolean</dt>
923 <dd>
924 Define whether the "search string inside database" is enabled or not.
925 <br /><br />
926 </dd>
928 <dt><b>$cfg['LeftFrameLight']</b> boolean</dt>
929 <dd>
930 Defines whether to use select-based menu and display only the current
931 tables in the left frame (smaller page).
932 <br /><br />
933 </dd>
935 <dt><b>$cfg['ShowTooltip'] </b>boolean</dt>
936 <dd>
937 Defines whether to display table comment as tooltip in left frame or
938 not.
939 <br /><br />
940 </dd>
942 <dt><b>$cfg['ShowStats'] </b>boolean</dt>
943 <dd>
944 Defines whether to display space usage and statistics about databases
945 and tables or not.<br />
946 Note that statistics requires at least MySQL 3.23.3 and that, at this
947 date, MySQL doesn't return such information for Berkeley DB tables.
948 <br /><br />
949 </dd>
951 <dt>
952 <b>$cfg['ShowMysqlInfo'] </b>boolean<br />
953 <b>$cfg['ShowMysqlVars'] </b>boolean<br />
954 <b>$cfg['ShowPhpInfo'] </b>boolean<br />
955 <b>$cfg['ShowChgPassword'] </b>boolean
956 </dt>
957 <dd>
958 Defines whether to display the &quot;MySQL runtime information&quot;,
959 &quot;MySQL system variables&quot;, &quot;PHP information&quot; and
960 &quot;Change password &quot; links or not for simple users at the
961 starting main (right) frame. This setting does not check MySQL commands
962 entered directly.
963 <br /><br />
965 Please note that to block the usage of phpinfo() in scripts, you
966 have to put this in your php.ini:<br />
967 &nbsp;&nbsp;&nbsp;&nbsp;<tt>disable_functions = phpinfo()</tt>
968 <br /><br />
970 Also note that enabling the &quot;Change password &quot; link has no
971 effect with &quot;config&quot; authentication mode: because of the hard
972 coded password value in the configuration file, end users can't be
973 allowed to change their passwords.
974 <br /><br />
975 </dd>
977 <dt><b>$cfg['SuggestDBName']</b> boolean</dt>
978 <dd>
979 Defines whether to suggest a database name on the
980 &quot;Create Database&quot; form or to keep the textfield empty.
981 <br /><br />
982 </dd>
984 <dt><b>$cfg['ShowBlob'] </b>boolean</dt>
985 <dd>
986 Defines whether <tt>BLOB</tt> fields are shown when browsing a table's
987 content or not.
988 <br /><br />
989 </dd>
991 <dt><b>$cfg['NavigationBarIconic'] </b>boolean</dt>
992 <dd>
993 Defines whether navigation bar buttons contain text or symbols only.
994 <br /><br />
995 </dd>
997 <dt><b>$cfg['ShowAll'] </b>boolean</dt>
998 <dd>
999 Defines whether an user should be displayed a
1000 &quot;show all (records)&quot; button in browse mode or not.
1001 <br /><br />
1002 </dd>
1004 <dt><b>$cfg['MaxRows'] </b>integer</dt>
1005 <dd>
1006 Number of rows displayed when browsing a resultset. If the resultset
1007 contains more rows, Previous/Next links will be shown.
1008 <br /><br />
1009 </dd>
1011 <dt><b>$cfg['Order'] </b>string [<tt>DESC</tt>|<tt>ASC</tt>|<tt>SMART</tt>]</dt>
1012 <dd>
1013 Defines whether fields are displayed in ascending (<tt>ASC</tt>) order,
1014 in descending (<tt>DESC</tt>) order or in a &quot;smart&quot;
1015 (<tt>SMART</tt>) order -ie descending order for fields of type TIME,
1016 DATE, DATETIME &amp; TIMESTAMP, ascending order else- by default.
1017 <br /><br />
1018 </dd>
1020 <dt><b>$cfg['ProtectBinary'] </b>boolean or string</dt>
1021 <dd>
1022 Defines whether <tt>BLOB</tt> or <tt>BINARY</tt> fields are protected
1023 from edition when browsing a table's content or not.
1024 Valid values are:<br />
1025 - <tt>FALSE</tt> to allow edition of all fields;<br />
1026 - <tt>blob</tt> to allow edition of all fields except <tt>BLOBS</tt>;
1027 <br />
1028 - <tt>all</tt> to disallow edition of all <tt>BINARY</tt> or
1029 <tt>BLOB</tt> fields.
1030 <br /><br />
1031 </dd>
1033 <dt><b>$cfg['ShowFunctionFields'] </b>boolean</dt>
1034 <dd>
1035 Defines whether MySQL functions fields should be displayed or not in
1036 edit/insert mode.
1037 <br /><br />
1038 </dd>
1040 <dt><b>$cfg['CharEditing'] </b>string</dt>
1041 <dd>
1042 Defines which type of editing controls should be used for CHAR and
1043 VARCHAR fields. Possible values are:
1044 <ul>
1045 <li>
1046 input - this allows to limit size of text to size of field in
1047 MySQL, but has problems with newlines in fields
1048 </li>
1049 <li>
1050 textarea - no problems with newlines in fields, but also no
1051 length limitations
1052 </li>
1053 </ul>
1054 Default is old behavior so input.
1055 <br /><br />
1056 </dd>
1058 <dt>
1059 <b>$cfg['ZipDump'] </b>boolean<br />
1060 <b>$cfg['GZipDump'] </b>boolean<br />
1061 <b>$cfg['BZipDump'] </b>boolean
1062 </dt>
1063 <dd>
1064 Defines whether to allow the use of zip/gzip/bzip compression when
1065 creating a dump file or not.
1066 <br /><br />
1067 </dd>
1069 <dt><b>$cfg['DefaultTabDatabase'] </b>string</dt>
1070 <dd>
1071 Defines the tab displayed by default on database view. Possible
1072 values: &quot;db_details_structure.php3&quot;,
1073 &quot;db_details.php3&quot; or &quot;db_search.php3&quot;.
1074 <br /><br />
1075 </dd>
1077 <dt><b>$cfg['DefaultTabTable'] </b>string</dt>
1078 <dd>
1079 Defines the tab displayed by default on table view. Possible
1080 values: &quot;tbl_properties_structure.php3&quot;,
1081 &quot;tbl_properties.php3&quot;, &quot;tbl_select.php3&quot; or
1082 &quot;tbl_change.php3&quot;.
1083 <br /><br />
1084 </dd>
1086 <dt><b>$cfg['MySQLManualBase']</b> string</dt>
1087 <dd>
1088 If set to an URL which points to the MySQL documentation (type depends
1089 on <tt>$cfg['MySQLManualType']</tt>), appropriate help links are
1090 generated.
1091 <br />
1092 See <a href="http://www.mysql.com/documentation/index.html">MySQL
1093 Documentation page</a> for more information about MySQL manuals and
1094 their types.
1095 <br /><br />
1096 </dd>
1098 <dt><b>$cfg['MySQLManualType']</b> string</dt>
1099 <dd>
1100 Type of MySQL documentation:
1101 <ul>
1102 <li>old - old style used in phpMyAdmin 2.3.0 and sooner</li>
1103 <li>searchable - &quot;Searchable, with user comments&quot;</li>
1104 <li>chapters - &quot;HTML, one page per chapter&quot;</li>
1105 <li>big - &quot;HTML, all on one page&quot;</li>
1106 <li>none - do not show documentation links</li>
1107 </ul>
1108 <br /><br />
1109 </dd>
1111 <dt><b>$cfg['DefaultLang'] </b>string</dt>
1112 <dd>
1113 Defines the default language to use, if not browser-defined or
1114 user-defined.<br />
1115 See the <i>select_lang.inc.php3</i> script to know the valid values for
1116 this setting.
1117 <br /><br />
1118 </dd>
1120 <dt><b>$cfg['Lang'] </b>string</dt>
1121 <dd>
1122 Force: always use this language (must be defined in the
1123 <i>select_lang.inc.php3</i> script).
1124 <br /><br />
1125 </dd>
1127 <dt><b>$cfg['DefaultCharset'] </b>string</dt>
1128 <dd>
1129 Default charset to use for recoding of MySQL queries. This must be
1130 enabled and it's described by <tt>$cfg['AllowAnywhereRecoding']</tt>
1131 option.<br />
1132 You can give here any charset which is in
1133 <tt>$cfg['AvailableCharsets']</tt> array and this is just default
1134 choice, user can select any of them.
1135 <br /><br />
1136 </dd>
1138 <dt><b>$cfg['AllowAnywhereRecoding'] </b>boolean</dt>
1139 <dd>
1140 Allow charset recoding of MySQL queries. You need recode or iconv
1141 support (compiled in or module) in php to allow MySQL queries recoding
1142 and used language file must have it enabled (by default only these
1143 which are in unicode, just to avoid losing some characters).
1144 <br /><br />
1145 </dd>
1147 <dt><b>$cfg['RecodingEngine'] </b>string</dt>
1148 <dd>
1149 You can select here which functions will be used for charset
1150 conversion.
1151 Possible values are:<br />
1152 <ul>
1153 <li>auto - automatically use available one (first is tested
1154 iconv, then recode)</li>
1155 <li>iconv - use iconv or libiconv functions</li>
1156 <li>recode - use recode_string function</li>
1157 </ul>
1158 Default is auto.
1159 <br /><br />
1160 </dd>
1162 <dt><b>$cfg['AvailableCharsets'] </b>array</dt>
1163 <dd>
1164 Available charsets for MySQL conversion. You can add your own (any of
1165 supported by recode/iconv) or remove these which you don't use.
1166 Charsets will be shown in same order as here listed, so if you
1167 frequently use some of these move them to the top.
1168 <br /><br />
1169 </dd>
1171 <dt><b>$cfg['LeftWidth'] </b>integer</dt>
1172 <dd>
1173 Left frame width in pixel.
1174 <br /><br />
1175 </dd>
1177 <dt>
1178 <b>$cfg['LeftBgColor'] </b>string [HTML color]<br />
1179 <b>$cfg['RightBgColor'] </b>string [HTML color]
1180 </dt>
1181 <dd>
1182 The background colors (HTML) used for both the frames.
1183 <br /><br />
1184 </dd>
1186 <dt>
1187 <b>$cfg['RightBgImage'] </b>string
1188 </dt>
1189 <dd>
1190 The URI of the background image used for the right frame. It can be
1191 absolute as well as relative from your phpMyAdmin directory.
1192 </dd>
1194 <dt><b>$cfg['LeftPointerColor'] </b>string [HTML color]</dt>
1195 <dd>
1196 The color (HTML) used for the pointer in the left frame (does not work
1197 with NS4).
1198 <br /><br />
1199 </dd>
1201 <dt><b>$cfg['Border'] </b>integer</dt>
1202 <dd>
1203 The size of a table's border.
1204 <br /><br />
1205 </dd>
1207 <dt><b>$cfg['ThBgcolor'] </b>string [HTML color]</dt>
1208 <dd>
1209 The color (HTML) used for table headers.
1210 <br /><br />
1211 </dd>
1213 <dt><b>$cfg['BgcolorOne'] </b>string [HTML color]</dt>
1214 <dd>
1215 The color (HTML) #1 for table rows.
1216 <br /><br />
1217 </dd>
1219 <dt><b>$cfg['BgcolorTwo'] </b>string [HTML color]</dt>
1220 <dd>
1221 The color (HTML) #2 for table rows.
1222 <br /><br />
1223 </dd>
1225 <dt>
1226 <b>$cfg['BrowsePointerColor'] </b>string [HTML color]<br />
1227 <b>$cfg['BrowseMarkerColor'] </b>string [HTML color]
1228 </dt>
1229 <dd>
1230 The colors (HTML) uses for the pointer and the marker in browse mode
1231 (does not work with NS4).<br />
1232 The former feature highlights the row over which your mouse is passing
1233 and the latter lets you visually mark/unmark rows by clicking on
1234 them.<br />
1235 You can disable both of these features by emptying the respective
1236 directive.
1237 <br /><br />
1238 </dd>
1240 <dt>
1241 <b>$cfg['TextareaCols'] </b>integer<br />
1242 <b>$cfg['TextareaRows'] </b>integer<br />
1243 <b>$cfg['CharTextareaCols'] </b>integer<br />
1244 <b>$cfg['CharTextareaRows'] </b>integer
1245 </dt>
1246 <dd>
1247 Number of columns and rows for the textareas.<br />
1248 This value will be emphasized (*2) for sql query textareas.<br />
1249 The Char* values are used for CHAR and VARCHAR editing (if configured
1250 via $cfg['CharEditing']).
1251 <br /><br />
1252 </dd>
1254 <dt>
1255 <b>$cfg['TextareaAutoSelect'] </b>boolean<br />
1256 </dt>
1257 <dd>
1258 Defines if the whole textarea of the query box will be selected on
1259 click.
1260 <br /><br />
1261 </dd>
1263 <dt><b>$cfg['LimitChars'] </b>integer</dt>
1264 <dd>
1265 Maximal number of Chars showed in a <tt>TEXT</tt> OR a <tt>BLOB</tt>
1266 field on browse view. Can be turned off by a toggle button on the
1267 browse page.
1268 <br /><br />
1269 </dd>
1271 <dt>
1272 <b>$cfg['ModifyDeleteAtLeft'] </b>boolean<br />
1273 <b>$cfg['ModifyDeleteAtRight'] </b>boolean
1274 </dt>
1275 <dd>
1276 Defines the place where modify and delete links would be put when
1277 tables contents are displayed (you may have them displayed both at the
1278 left and at the right).
1279 &quot;Left&quot; and &quot;right&quot; are parsed as &quot;top&quot;
1280 and &quot;bottom&quot; with vertical display mode.
1281 <br /><br />
1282 </dd>
1284 <dt><b>$cfg['DefaultDisplay'] </b>string</dt>
1285 <dd>
1286 There are 2 display modes: horizontal and vertical. Define which one is
1287 displayed by default.
1288 <br /><br />
1289 </dd>
1291 <dt><b>$cfg['UploadDir'] </b>string</dt>
1292 <dd>
1293 The name of the directory, ending with a slash, where SQL files have
1294 been uploaded by other means than phpMyAdmin (for example, ftp).
1295 Those files are available under a drop-down box when you click the
1296 database name, then the SQL tab.
1297 <br /><br />
1298 Please note that the file names must have the suffix &quot;.sql&quot;.
1299 <br /><br />
1300 This feature is useful when your file is too big to be uploaded via
1301 HTTP, or when file uploads are disabled in PHP.
1302 <br /><br />
1303 Please note that if PHP is running in safe mode, this directory must
1304 be owned by the same user as the owner of the phpMyAdmin scripts.
1305 <br /><br />
1306 </dd>
1308 <dt><b>$cfg['RepeatCells'] </b>integer</dt>
1309 <dd>
1310 Repeat the headers every X cells, or 0 to deactivate.
1311 <br /><br />
1312 </dd>
1314 <dt><b>$cfg['SQP']['enable']</b> boolean</dt>
1315 <dd>
1316 As of phpMyAdmin 2.3.0, we now have a fully functional SQL Parser system.
1317 It is enabled by default, as it is used to format the SQL queries.
1318 <br />
1319 As of 2.3.1, it will become an integral part of phpMyAdmin, as it will
1320 analyze certain queries to improve the behavior of phpMyAdmin. But as
1321 it is very new, and not yet heavily used, we offer you an option to
1322 turn it off.
1323 <br /><br />
1324 </dd>
1326 <dt><b>$cfg['SQP']['fmtType']</b> string [<tt>html</tt>|<tt>none</tt>]</dt>
1327 <dd>
1328 The main use of the new SQL Parser is to pretty-print SQL queries. By
1329 default we use HTML to format the query, but you can disable this by
1330 setting this varible to <tt>'none'</tt>
1331 <br /><br />
1332 </dd>
1334 <dt><b>$cfg['SQP']['fmtInd']</b> float<br />
1335 <b>$cfg['SQP']['fmtIndUnit']</b> string [<tt>em</tt>|<tt>px</tt>|<tt>pt</tt>|<tt>ex</tt>]</dt>
1336 <dd>
1337 For the pretty-printing of SQL queries, under some cases the part of a
1338 query inside a bracket is indented. By changing
1339 <tt>$cfg['SQP']['fmtInd']</tt> you can change the amount of this indent.
1340 <br />Related in purpose is <tt>$cfg['SQP']['fmtIndUnit']</tt> which
1341 specifies the units of the indent amount that you specified. This is
1342 used via stylesheets.
1343 <br /><br />
1344 </dd>
1346 <dt><b>$cfg['SQP']['fmtColor']</b> array of string tuples</dt>
1347 <dd>
1348 This array is used to define the colours for each type of element of
1349 the pretty-printed SQL queries. The tuple format is<br />
1350 <i>class</i> =&gt; [<i>HTML colour code</i> | <i>empty string</i>]<br />
1351 If you specify an empty string for the color of a class, it is ignored
1352 in creating the stylesheet.
1353 You should not alter the class names, only the colour strings.<br />
1354 <b>Class name key:</b><br />
1355 <ul>
1356 <li><b>comment</b> Applies to all comment sub-classes</li>
1357 <li><b>comment_mysql</b> Comments as <tt>"#...\n"</tt></li>
1358 <li><b>comment_ansi</b> Comments as <tt>"-- ...\n"</tt></li>
1359 <li><b>comment_c</b> Comments as <tt>"/*...*/"</tt></li>
1360 <li><b>digit</b> Applies to all digit sub-classes</li>
1361 <li><b>digit_hex</b> Hexadecimal numbers</li>
1362 <li><b>digit_integer</b> Integer numbers</li>
1363 <li><b>digit_float</b> Floating point numbers</li>
1364 <li><b>punct</b> Applies to all punctuation sub-classes</li>
1365 <li><b>punct_bracket_open_round</b> Opening brackets<tt>"("</tt></li>
1366 <li><b>punct_bracket_close_round</b> Closing brackets <tt>")"</tt></li>
1367 <li><b>punct_listsep</b> List item seperator <tt>","</tt></li>
1368 <li><b>punct_qualifier</b> Table/Column Qualifer <tt>"."</tt> </li>
1369 <li><b>punct_queryend</b> End of query marker <tt>";"</tt></li>
1370 <li><b>alpha</b> Applies to all alphabetic classes</li>
1371 <li><b>alpha_columnType</b> Identifers matching a column type</li>
1372 <li><b>alpha_columnAttrib</b> Identifers matching a database/table/column attribute</li>
1373 <li><b>alpha_functionName</b> Identifiers matching a MySQL function name</li>
1374 <li><b>alpha_reservedWord</b> Identifiers matching any other reserved word</li>
1375 <li><b>alpha_variable</b> Identifers matching a SQL variable <tt>"@foo"</tt></li>
1376 <li><b>alpha_identifier</b> All other identifiers</li>
1377 <li><b>quote</b> Applies to all quotation mark classes</li>
1378 <li><b>quote_double</b> Double quotes <tt>"</tt></li>
1379 <li><b>quote_single</b> Single quotes <tt>'</tt></li>
1380 <li><b>quote_backtick</b> Backtick quotes <tt>`</tt></li>
1381 </ul><br />
1382 </dd>
1384 <dt><b>$cfg['SQLValidator']['use']</b> boolean</dt>
1385 <dd>
1386 phpMyAdmin now supports use of the <a href="http://developer.mimer.com/validator/index.htm">Mimer SQL Validator</a> service,
1387 as originally published on
1388 <a href="http://developers.slashdot.org/article.pl?sid=02/02/19/1720246">Slashdot</a>.
1389 <br />
1390 For help in setting up your system to use the service, see the
1391 <a href="#faqsqlvalidator">FAQ #6.14</a>.
1392 <br /><br />
1393 </dd>
1395 <dt><b>$cfg['SQLValidator']['username']</b> string<br />
1396 <b>$cfg['SQLValidator']['password']</b> string</dt>
1397 <dd>
1398 The SOAP service allows you to login with <tt>anonymous</tt>
1399 and any password, so we use those by default.. Instead, if
1400 you have an account with them, you can put your login details
1401 here, and it will be used in place of the anonymous login.
1402 <br /><br />
1403 </dd>
1405 <dt><b>$cfg['DBG']['enable']</b> boolean</dt>
1406 <dd>
1407 <b>DEVELOPERS ONLY!</b><br />
1408 Enable the DBG extension for debugging phpMyAdmin. Required for profiling
1409 the code.
1410 <br />
1411 For help in setting up your system to this, see the
1412 <a href="#developersdbg">Developers</a> section.
1413 </dd>
1415 <dt><b>$cfg['DBG']['profile']['enable']</b> boolean</dt>
1416 <dd>
1417 <b>DEVELOPERS ONLY!</b><br />
1418 Enable profiling support for phpMyAdmin. This will append a chunk of data
1419 to the end of every page displayed in the main window with profiling
1420 statistics for that page.<br />
1421 You may need need to increase the maximum execution time for this to
1422 complete successfully.
1423 </dd>
1425 <dt><b>$cfg['DBG']['profile']['threshold']</b> float (units in milliseconds)</dt>
1426 <dd>
1427 <b>DEVELOPERS ONLY!</b><br />
1428 When profiling data is displayed, this variable controls the threshold of
1429 display for any profiling data, based on the average time each time has
1430 taken. If it is over the threshold it is displayed, otherwise it is not
1431 displayed. This takes a value in milliseconds. In most cases you don't need
1432 to edit this.
1433 </dd>
1435 <dt><b>$cfg['ColumnTypes'] </b>array</dt>
1436 <dd>
1437 All possible types of a MySQL column. In most cases you don't need to
1438 edit this.
1439 <br /><br />
1440 </dd>
1442 <dt><b>$cfg['AttributeTypes'] </b>array</dt>
1443 <dd>
1444 Possible attributes for fields. In most cases you don't need to edit
1445 this.
1446 <br /><br />
1447 </dd>
1449 <dt><b>$cfg['Functions'] </b>array</dt>
1450 <dd>
1451 A list of functions MySQL supports. In most cases you don't need to
1452 edit this.
1453 <br /><br />
1454 </dd>
1456 </dl>
1459 <!-- FAQ -->
1460 <a name="faq"></a><br />
1461 <h2>FAQ - Frequently Asked Questions</h2>
1464 <a href="#faqserver">Server</a> &nbsp;-&nbsp;
1465 <a href="#faqconfig">Configuration</a> &nbsp;-&nbsp;
1466 <a href="#faqlimitations">Limitations</a> &nbsp;-&nbsp;
1467 <a href="#faqmultiuser">Multi-user</a> &nbsp;-&nbsp;
1468 <a href="#faqbrowsers">Browsers</a> &nbsp;-&nbsp;
1469 <a href="#faqusing">Usage tips</a> &nbsp;-&nbsp;
1470 <a href="#faqproject">Project</a>
1471 </p>
1473 <a name="faqserver"></a><br />
1474 <h3>[1. Server]</h3>
1476 <h4>
1477 [1.1] I'm running php 4+ and my server is crashing each time a specific
1478 action is required or phpMyAdmin sends a blank page or a page full of
1479 cryptic characters to my browser, what can I do?
1480 </h4>
1482 There are some known php bugs with output buffering and compression.<br />
1483 Try to set the <tt>$cfg['OBGzip']</tt> directive to <tt>FALSE</tt> in your
1484 <i>config.inc.php or .php3</i> file and the
1485 <tt>zlib.output_compression</tt> directive to <tt>Off</tt> in your php
1486 configuration file.<br />
1487 Furthermore, we know about such problems connected to the release
1488 candidates of php 4.2.0 (tested with php 4.2.0 RC1 to RC4) together with
1489 MS Internet Explorer. Please upgrade to the release version php 4.2.0.
1490 </p>
1492 <h4>
1493 [1.2] My Apache server crashes when using phpMyAdmin.
1494 </h4>
1496 You should first try the latest versions of Apache (and possibly MySQL).
1497 <br />
1498 See also the other FAQ entry about php bugs with output buffering.
1499 <br />
1500 If your server keeps crashing, please ask for help in the various
1501 Apache support groups.
1502 </p>
1504 <h4>
1505 [1.3] I'm running phpMyAdmin with "cookie" authentication mode under
1506 PHP 4.2.0 or 4.2.1 loaded as an Apache 2+ module but can't enter the
1507 script: I'm always displayed the login screen.
1508 </h4>
1510 This is a known PHP bug (see this
1511 <a href="http://bugs.php.net/bug.php?id=16626">bug report</a>) from the
1512 official php bug database. It means there is and won't be any phpMyAdmin
1513 fix against it because there is no way to code a fix.
1514 </p>
1516 <h4>
1517 [1.4] Using phpMyAdmin on IIS, I'm displayed the error message:
1518 &quot;The specified CGI application misbehaved by not returning a
1519 complete set of HTTP headers...&quot;.
1520 </h4>
1522 You just forgot to read the <i>install.txt</i> file from the php
1523 distribution. Have a look at the last message in this
1524 <a href="http://bugs.php.net/bug.php?id=12061">bug report</a> from the
1525 official php bug database.
1526 </p>
1528 <h4>
1529 [1.5] Using phpMyAdmin on IIS, I'm facing crashes and/or many error
1530 messages with the http or advanced authentication mode.
1531 </h4>
1533 This is a known problem with the php ISAPI filter: it's not so stable. For
1534 some more information and complete testings see the messages posted by
1535 Andr&eacute; B. aka &quot;djdeluxe76&quot; in
1536 <a href="http://www.phpwizard.net/phorum/read.php?f=1&amp;i=6624&amp;t=6300">this&nbsp;thread</a>
1537 from the phpWizard forum.<br />
1538 Please use instead the cookie authentication mode.
1539 </p>
1541 <h4>
1542 [1.6] I can't use phpMyAdmin on PWS: nothing is displayed!</h4>
1544 This seems to be a PWS bug. Filippo Simoncini found a workaroud (at this
1545 time there is no better fix): remove or comment the <tt>DOCTYPE</tt>
1546 declarations (2 lines) from the scripts <i>header.inc.php3</i>,
1547 <i>header_printview.inc.php3</i>, <i>index.php3</i>, <i>left.php3</i> and
1548 <i>libraries/common.lib.php3</i>.
1549 </p>
1551 <h4>
1552 [1.7] How can I GZip or Bzip a dump or a CSV export. It does not seem to
1553 work.
1554 </h4>
1556 These features are based on the <tt>gzencode()</tt> and
1557 <tt>bzcompress()</tt> php functions to be more independent of the platform
1558 (Unix/Windows, Safe Mode or not, and so on).
1559 So, you must have PHP4&nbsp;>=&nbsp;4.0.4 and Zlib/Bzip2 support
1560 (<tt>--with-zlib</tt> and <tt>--with-bz2</tt>).<br />
1561 We faced php crashes when trying to download a dump with MS Internet
1562 Explorer when phpMyAdmin is run with a release candidate of php 4.2.0. In
1563 this case you should switch to the release version of php 4.2.0.
1564 </p>
1566 <h4>
1567 [1.8] I cannot insert a text file in a table, and I get an error about
1568 safe mode being in effect.
1569 </h4>
1571 Your uploaded file is saved by PHP in the &quot;upload dir&quot;, as
1572 defined in <i>php.ini</i> by the variable <tt>upload_tmp_dir</tt> (usually
1573 the system default is <i>/tmp</i>).
1574 <br />
1575 We recommend the following setup for Apache servers running in safe mode,
1576 to enable uploads of files while being reasonably secure:
1577 </p>
1578 <ul>
1579 <li>create a separate directory for uploads:
1580 <tt>mkdir /tmp/php</tt></li>
1581 <li>give ownership to the Apache server's user.group:
1582 <tt>chown apache.apache /tmp/php</tt></li>
1583 <li>give proper permission: <tt>chmod 600 /tmp/php</tt></li>
1584 <li>put <tt>upload_tmp_dir = /tmp/php</tt> in php.ini</li>
1585 <li>restart Apache</li>
1586 </ul>
1588 <h4>
1589 [1.9] I'm having troubles when uploading files. In general file uploads
1590 don't work on my system and uploaded files have a <tt>Content-Type:</tt>
1591 header in the first line.
1592 </h4>
1594 It's not really phpMyAdmin related but RedHat 7.0. You have a RedHat 7.0
1595 and you updated your php rpm to php-4.0.4pl1-3.i386.rpm, didn't you?
1596 <br />
1597 So the problem is that this package has a serious bug that was corrected
1598 ages ago in php (2001-01-28: see
1599 <a href="http://www.php.net/bugs.php?id=8966">php's bug tracking system</a>
1600 for more details). The problem is that the bugged package is still
1601 available though it was corrected (see
1602 <a href="http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=24933">redhat's bugzilla</a>
1603 for more details).
1604 <br />
1605 So please download
1606 <a href="http://www.redhat.com/swr/i386/php-4.0.4pl1-9.i386.html">the fixed package (4.0.4pl1-9)</a>
1607 and the problem should go away.
1608 <br />
1609 And that fixes the \r\n problem with file uploads!
1610 </p>
1612 <h4>
1613 [1.10] I'm having troubles when uploading files with phpMyAdmin running
1614 on a secure server. My browser is Internet Explorer and I'm using the
1615 Apache server.
1616 </h4>
1618 As suggested by &quot;Rob M&quot; in the phpWizard forum, add this line to
1619 your <i>httpd.conf</i>:<br />
1620 &nbsp;&nbsp;&nbsp;&nbsp;<tt>SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown</tt><br />
1621 It seems to clear up many problems between IE and SSL.
1622 </p>
1624 <h4>
1625 [1.11] I get an 'open_basedir restriction' while uploading a file from
1626 the query box.
1627 </h4>
1629 Since version 2.2.4, phpMyAdmin supports servers with open_basedir
1630 restrictions. Assuming that the restriction allows you to open files in the
1631 current directory ('.'), all you have to do is create a 'tmp' directory
1632 under the phpMyAdmin install directory, with permissions 777 and the same
1633 owner as the owner of your phpMyAdmin directory. The uploaded files will
1634 be moved there, and after execution of your SQL commands, removed.
1635 </p>
1637 <h4>
1638 [1.12] I have lost my MySQL root password, what can I do?
1639 </h4>
1641 The MySql manual explains how to
1642 <a href="http://www.mysql.com/doc/R/e/Resetting_permissions.html">
1643 reset the permissions</a>.
1644 </p>
1646 <h4>
1647 [1.13] I get an error 'No SQL query' when trying to execute a bookmark.
1648 </h4>
1650 If PHP does not have read/write access to its <tt>upload_tmp_dir</tt>, it
1651 cannot access the uploaded query.
1652 </p>
1654 <h4>
1655 [1.14] I get an error 'No SQL query' when trying to submit a query from
1656 the convenient text area.
1657 </h4>
1659 Check the <tt>post_max_size</tt> directive from your php configuration file
1660 and try to increase it.
1661 </p>
1663 <h4>
1664 [1.15] I have problems with <i>mysql.user</i> field names.
1665 </h4>
1667 In older MySQL versions, the <tt>User</tt> and <tt>Password</tt> fields
1668 were named <tt>user</tt> and <tt>password</tt>. Please modify your field
1669 names to align with current standards.
1670 </p>
1671 <h4>
1672 [1.16] I cannot upload big dump files.
1673 </h4>
1675 The first things to check (or ask your host provider to check) are the
1676 values of <tt>upload_max_filesize</tt>, <tt>memory_limit</tt> and
1677 <tt>post_max_size</tt> in the <i>php.ini</i> configuration file.
1678 <br />
1679 All of these three settings limit the maximum size of data that can be
1680 submitted and handled by php. One user also said that post_max_size
1681 and memory_limit need to be larger than upload_max_filesize.
1682 </p>
1684 <h4>
1685 [1.17] Does phpMyAdmin support MySQL&nbsp;4.1?
1686 </h4>
1688 Because of a major change in the definition syntax of string field types,
1689 this version of phpMyAdmin probably won't work correctly with
1690 MySQL&nbsp;&gt;=&nbsp;4.1.0! We will work on the support as soon as
1691 MySQL&nbsp;4.1.0 is released.
1692 </p>
1694 <h4>
1695 [1.18] I'm running MySQL&nbsp;&lt;=&nbsp;4.0.1 having
1696 <tt>lower_case_table_names</tt> set to 1. If I create a new table with a
1697 capital letter in its name it is changed to lowercase as it should. But
1698 if I try to DROP this table MySQL is unable to find the corresponding
1699 file.
1700 </h4>
1702 This is a bug of MySQL&nbsp;&lt;=&nbsp;4.0.1. Please upgrade to at least
1703 MySQL&nbsp;4.0.2 or turn off your <tt>lower_case_table_names</tt>
1704 directive.
1705 </p>
1707 <h4>
1708 [1.19] I can't run the &quot;display relations&quot; feature because the
1709 script seems not to know the font face I'm using!
1710 </h4>
1712 The &quot;FPDF&quot; library we're using for this feature requires some
1713 special files to use font faces.<br />
1714 Please refers to the
1715 <a href="http://www.fpdf.org/" target="_blank">FPDF manual</a> to build
1716 these files.
1717 </p>
1719 <a name="faqmysql"></a><br />
1720 <h4>
1721 [1.20] I receive the error &quot;cannot load MySQL extension, please
1722 check PHP Configuration&quot;.
1723 </h4>
1725 To connect to a MySQL server, PHP needs a set of MySQL functions called
1726 &quot;MySQL extension&quot;.
1727 This extension may be part of the PHP server (compiled-in), otherwise it
1728 needs to be loaded dynamically. Its name is probably <i>mysql.so</i> or
1729 <i>mysql.dll</i>. phpMyAdmin tried to load the extension but failed.
1730 <br /><br />
1731 Usually, the problem is solved by installing a software package called
1732 &quot;PHP-MySQL&quot; or something similar.
1733 </p>
1735 <h4>
1736 [1.21] I am running the CGI version of PHP under Unix, and I cannot
1737 login using cookie auth.
1738 </h4>
1740 In <i>php.ini</i>, set <tt>mysql.max_links</tt> higher than 1.
1741 </p>
1743 <h4>
1744 [1.22] I don't see the &quot;Location of text file&quot; field, so
1745 I cannot upload.
1746 </h4>
1748 This is most likely because in <i>php.ini</i>, your <tt>file_uploads</tt>
1749 parameter is not set to &quot;on&quot;.
1750 </p>
1752 <h4>
1753 [1.23] I'm running MySQL on a Win32 machine. Each time I create a new
1754 table the table and field names are changed to lowercase!
1755 </h4>
1757 This happens because the MySQL directive <tt>lower_case_table_names</tt>
1758 defaults to 1 (<tt>ON</tt>) in the Win32 version of MySQL. You can change
1759 this behavior by simply changing the directive to 0 (<tt>OFF</tt>):<br />
1760 Just edit you <tt>my.ini</tt> file that should be located in your Windows
1761 directory and add the following line:<br />
1762 <tt>set-variable = lower-case-table-names=0</tt><br />
1763 Next, save the file and restart the MySQL service. You can always check the
1764 value of this directive using the query<br />
1765 <tt>SHOW VARIABLES LIKE 'lower_case_table_names';</tt>
1766 </p>
1768 <h4>
1769 [1.24] Some characters are being truncated in my queries, or I get
1770 characters randomly added. I am running PHP 4.2.3.
1771 </h4>
1773 This is a
1774 <a href="http://bugs.php.net/bug.php?id=19404">PHP 4.2.3 bug</a>.
1775 </p>
1777 <h4>
1778 [1.25] I am running Apache with mod_gzip-1.3.26.1a on Windows XP,
1779 and I get problems, such as undefined variables when I run a SQL query.
1780 </h4>
1782 A tip from Jose Fandos: put a comment on the following two lines
1783 in httpd.conf, like this:<br />
1784 <tt># mod_gzip_item_include file \.php$</tt><br />
1785 <tt># mod_gzip_item_include mime "application/x-httpd-php.*"</tt><br />
1786 as this version of mod_gzip on Apache (Windows) has problems handling
1787 php scripts. Of course you have to restart Apache.
1788 </p>
1790 <h4>
1791 [1.26] I just installed phpMyAdmin in my document root of IIS but
1792 I get the error &quot;No input file specified&quot; when trying to
1793 run phpMyAdmin.
1794 </h4>
1796 This is a permission problem. Right-click on the phpmyadmin folder
1797 and choose properties. Under the tab Security, click on &quot;Add&quot;
1798 and select the user &quot;IUSER_machine&quot; from the list. Now set his
1799 permissions and it should work.
1800 </p>
1802 <h4>
1803 [1.27] I get empty page when I want to view huge page (eg.
1804 db_details_structure.php3 with plenty of dabases).
1805 </h4>
1807 This is a <a href="http://bugs.php.net/21079">PHP bug</a> that occur when
1808 GZIP output buffering enabled. If you turn off it (by <code>$cfg['OBGzip']
1809 = FALSE</code> in config.inc.php3), it should work. This bug will be fixed
1810 in PHP 5.0.0.
1811 </p>
1813 <h4>
1814 [1.28] My MySQL server sometimes refuses queries and returns the message
1815 'Errorcode: 13'. What does this mean?
1816 </h4>
1818 This can happen due to a MySQL bug when having database / table names with
1819 upper case characters although <tt>lower_case_table_names</tt> is set to 1.
1820 To fix this, turn off this directive, convert all database and table names
1821 to lower case and turn it on again. Alternatively, there's a bugfix
1822 available starting with MySQL&nbsp;3.23.56 / 4.0.11-gamma.
1823 </p>
1825 <a name="faqconfig"></a><br />
1826 <h3>[2. Configuration]</h3>
1828 <h4>
1829 [2.1] The error message &quot;Warning: Cannot add header information -
1830 headers already sent by ...&quot; is displayed, what's the problem?
1831 </h4>
1833 Edit your <i>config.inc.php or .php3</i> file and ensure there is nothing
1834 (ie no blank lines, no spaces, no characters...) neither before the
1835 <tt>&lt;?php</tt> tag at the beginning, neither after the <tt>?&gt;</tt>
1836 tag at the end.
1837 </p>
1839 <h4>
1840 [2.2] phpMyAdmin can't connect to MySQL. What's wrong?
1841 </h4>
1843 Either there is an error with your PHP setup or your username/password is
1844 wrong. Try to make a small script which uses mysql_connect and see if it
1845 works. If it doesn't, it may be you haven't even compiled MySQL support
1846 into PHP.
1847 </p>
1849 <h4>
1850 [2.3] The error message &quot;Warning: MySQL Connection Failed: Can't
1851 connect to local MySQL server through socket '/tmp/mysql.sock'
1852 (111)...&quot; is displayed. What can I do?
1853 </h4>
1854 <p><br />
1855 For RedHat users, Harald Legner suggests this on the mailing list:
1856 <br /><br />
1857 On my RedHat-Box the socket of mysql is <i>/var/lib/mysql/mysql.sock</i>.
1858 In your php.ini you will find a line
1859 <br />
1860 &nbsp;&nbsp;&nbsp;&nbsp;<tt>mysql.default_socket = /tmp/mysql.sock</tt>
1861 <br />
1862 change it to
1863 <br />
1864 &nbsp;&nbsp;&nbsp;&nbsp;<tt>mysql.default_socket = /var/lib/mysql/mysql.sock</tt>
1865 <br />
1866 Then restart apache and it will work.
1867 <br /><br />
1868 Here is a fix suggested by Brad Ummer in the phpwizard forum:
1869 </p>
1870 <ul>
1871 <li>
1872 First, you need to determine what socket is being used by MySQL.
1873 <br />
1874 To do this, telnet to your server and go to the MySQL bin directory. In
1875 this directory there should be a file named <i>mysqladmin</i>. Type
1876 <tt>./mysqladmin variables</tt>, and this should give you a bunch of
1877 info about your MySQL server, including the socket
1878 (<i>/tmp/mysql.sock</i>, for example).
1879 </li>
1880 <li>
1881 Then, you need to tell PHP to use this socket.<br />Assuming you are
1882 using PHP 3.0.10 or better, you can specify the socket to use when you
1883 open the connection. To do this in phpMyAdmin, you need to complete the
1884 socket information in the config.inc.php3.<br />
1885 For example:
1886 <tt>$cfg['Servers'][$i]['socket']&nbsp;=&nbsp;'/tmp/mysql.sock';</tt>
1887 </li>
1888 </ul>
1890 Have also a look at the
1891 <a href="http://www.mysql.com/doc/C/a/Can_not_connect_to_server.html" target="_blank">
1892 corresponding section of the MySQL documentation</a>.
1893 </p>
1895 <h4>
1896 [2.4] Nothing is displayed by my browser when I try to run phpMyAdmin,
1897 what can I do?
1898 </h4>
1900 Try to set the <tt>$cfg['OBGZip']</tt> directive to <tt>FALSE</tt> in the
1901 phpMyAdmin configuration file. It helps sometime.<br />
1902 Also have a look at your php version number: if it contains
1903 &quot;4.0b...&quot; it means you're running a beta version of PHP. That's
1904 not a so good idea, please upgrade to a plain revision.
1905 </p>
1907 <h4>
1908 [2.5] Each time I want to insert or change a record or drop a database
1909 or a table, an error 404 (page not found) is displayed or, with http or
1910 cookie authentication, I'm asked to login again. What's wrong?
1911 </h4>
1913 Check the value you set for the <tt>$cfg['PmaAbsoluteUri']</tt> directive
1914 in the phpMyAdmin configuration file.
1915 </p>
1918 <a name="faqlimitations"></a><br />
1919 <h3>[3. Known limitations]</h3>
1920 <a name="login_bug"></a><br />
1921 <h4>
1922 [3.1] When using http authentication, an user who logged out can not
1923 relog in with the same nick.
1924 </h4>
1926 This is related to the authentication mechanism (protocol) used by
1927 phpMyAdmin. We plan to change it as soon as we may find enough free time
1928 to do it, but you can bypass this problem: just close all the opened
1929 browser windows and then go back to phpMyAdmin. You should be able to
1930 logs in again.
1931 </p>
1933 <h4>
1934 [3.2] When dumping a large table in compressed mode, I get a memory
1935 limit error or a time limit error.
1936 </h4>
1938 As of version 2.2.4, we build the compressed dump in memory, so large
1939 tables dumps may hang. The only alternative we can think about (using
1940 system calls to mysqldump then gzip or bzip2) would not be applicable in
1941 environments where PHP is in safe mode: access to system programs is
1942 is limited by the system administrator, and time limit is enforced.
1943 </p>
1945 <h4>
1946 [3.3] With InnoDB tables, I lose foreign key relationships when I rename
1947 or alter a table.
1948 </h4>
1950 This seems to be a InnoDB bug (fixed in MySQL 3.23.50?). However, keep in
1951 mind that phpMyAdmin as of version 2.3.0 does not support InnoDB.
1952 </p>
1954 <h4>
1955 [3.4] I am unable to import dumps I created with the mysqldump tool
1956 bundled with the MySQL server distribution.
1957 </h4>
1959 The problem is that mysqldump creates invalid comments like this:
1960 </p>
1961 <pre>
1962 -- MySQL dump 8.22
1964 -- Host: localhost Database: database
1965 ---------------------------------------------------------
1966 -- Server version 3.23.54
1967 </pre>
1969 The invalid part of the code is the horizontal line made of dashes that
1970 appears once in every dump created with mysqldump. If you want to run your
1971 dump you have to turn it into valid MySQL. This means, you have to add a
1972 whitespace after the first to dashes of the line or add a # before it:
1973 <br />
1974 <code>
1975 -- -------------------------------------------------------<br />
1976 </code>
1977 or<br />
1978 <code>
1979 #---------------------------------------------------------
1980 </code>
1981 </p>
1984 <a name="faqmultiuser"></a><br />
1985 <h3>[4. ISPs, multi-user installations ]</h3>
1987 <h4>
1988 [4.1] I'm an ISP. Can I setup one central copy of phpMyAdmin or do I
1989 need to install it for each customer.
1990 </h4>
1992 Since version 2.0.3, you can setup a central copy of phpMyAdmin for all
1993 your users. The development of this feature was kindly sponsored by
1994 NetCologne GmbH.
1995 This requires a properly setup MySQL user management and phpMyAdmin
1996 http or cookie authentication. See the install section on
1997 &quot;Using http authentication&quot;.
1998 </p>
2000 <h4>
2001 [4.2] What's the preferred way of making phpMyAdmin secure against evil
2002 access.
2003 </h4>
2005 This depends on your system.<br />
2006 If you're running a server which cannot be accessed by other people, it's
2007 sufficient to use the directory protection bundled with your webserver
2008 (with Apache you can use <i>.htaccess</i> files, for example).<br />
2009 If other people have telnet access to your server, you should use
2010 phpMyAdmin's http authentication feature.
2011 <br /><br />
2012 Suggestions:
2013 </p>
2014 <ul>
2015 <li>
2016 Your <i>config.inc.php3</i> file should be <tt>chmod 660</tt>.
2017 </li>
2018 <li>
2019 All your phpMyAdmin files should be chown phpmy.apache, where phpmy
2020 is a user whose password is only known to you, and apache is the
2021 group under which Apache runs.
2022 </li>
2023 <li>
2024 You should use PHP safe mode, to protect from other users that try
2025 to include your <i>config.inc.php3</i> in their scripts.
2026 </li>
2027 </ul>
2029 <h4>
2030 [4.3] I get errors about not being able to include a file in
2031 <i>/lang</i> or in <i>/libraries</i>.
2032 </h4>
2034 Check <i>php.ini</i>, or ask your sysadmin to check it. The
2035 <tt>include_path</tt> must contain &quot;.&quot; somewhere in it, and
2036 <tt>open_basedir</tt>, if used, must contain &quot;.&quot; and
2037 &quot;./lang&quot; to allow normal operation of phpMyAdmin.
2038 </p>
2039 <h4>
2040 [4.4] phpMyAdmin always gives &quot;Access denied&quot; when using http
2041 authentication.
2042 </h4>
2044 This could happen for several reasons:
2045 </p>
2046 <ul>
2047 <li>
2048 <tt>$cfg['Servers'][$i]['controluser']</tt> and/or
2049 <tt>$cfg['Servers'][$i]['controlpass']</tt> are wrong.
2050 </li>
2051 <li>
2052 The username/password you specify in the login-dialog are invalid.
2053 </li>
2054 <li>
2055 You have already setup a security mechanism for the
2056 phpMyAdmin-directory, eg. a .htaccess file. This would interfere with
2057 phpMyAdmin's authentication, so remove it.
2058 </li>
2059 </ul>
2061 <h4>
2062 [4.5] Is it possible to let users create their own databases?
2063 </h4>
2065 Starting with 2.2.5, in the user management page, you can enter a wildcard
2066 database name for a user, and put the privileges you want. For example,
2067 adding <tt>SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER</tt>
2068 would let a user create/manage his/her database(s).
2069 </p>
2071 <h4>
2072 [4.6] How can I use the Host-based authentication additions?
2073 </h4>
2075 If you have existing rules from an old .htaccess file, you can take them
2076 and add a username between the <tt>'deny'</tt>/<tt>'allow'</tt> and
2077 <tt>'from'</tt> strings. Using the username wildcard of <tt>'%'</tt> would
2078 be a major benefit here if your installation is suited to using it. Then
2079 you can just add those updated lines into the
2080 <tt>$cfg['Servers'][$i]['AllowDeny']['rules']</tt> array.
2081 <br /><br />
2082 If you want a pre-made sample, you can try this fragment. It stops the
2083 'root' user from logging in from any networks other than the private
2084 network IP blocks.
2085 <br />
2086 <tt>
2087 &nbsp;&nbsp;&nbsp;&nbsp;//block root from logging in except from the private networks<br />
2088 &nbsp;&nbsp;&nbsp;&nbsp;$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';<br />
2089 &nbsp;&nbsp;&nbsp;&nbsp;$cfg['Servers'][$i]['AllowDeny']['rules'] = array(<br />
2090 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'deny root from all',<br />
2091 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'allow root from localhost',<br />
2092 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'allow root from 10.0.0.0/8',<br />
2093 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'allow root from 192.168.0.0/16',<br />
2094 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'allow root from 172.16.0.0/12',<br />
2095 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
2096 </tt>
2097 </p>
2099 <a name="faqbrowsers"></a><br />
2100 <h3>[5. Browsers or client OS]</h3>
2102 <h4>
2103 [5.1] I get an out of memory error, and my controls are non-functional,
2104 when trying to create a table with more than 14 fields.
2105 </h4>
2107 We could reproduce this problem only under Win98/98SE. Testing under
2108 WinNT4 or Win2K, we could easily create more than 60 fields.
2109 <br />
2110 A workaround is to create a smaller number of fields, then come back to
2111 your table properties and add the other fields.
2112 </p>
2114 <h4>
2115 [5.2] With Xitami 2.5b4, phpMyAdmin won't process form fields.
2116 </h4>
2118 This is not a phpMyAdmin problem but a Xitami known bug: you'll face it
2119 with each script/website that use forms.<br />
2120 Upgrade or downgrade your Xitami server.
2121 </p>
2123 <h4>
2124 [5.3] I have problems dumping tables with Konqueror (phpMyAdmin 2.2.2).
2125 </h4>
2127 With Konqueror 2.1.1: plain dumps, zip and gzip dumps work ok, except that
2128 the proposed file name for the dump is always 'tbl_dump.php'. Bzip2 dumps
2129 don't seem to work.<br />
2131 With Konqueror 2.2.1: plain dumps work; zip dumps are placed into
2132 the user's temporary directory, so they must be moved before closing
2133 Konqueror, or else they disappear. Gzip dumps give an error message.<br />
2135 Testing needs to be done for Konqueror 2.2.2.<br />
2136 </p>
2138 <h4>
2139 [5.4] I can't use the cookie authentication mode because Internet
2140 Explorer never stores the cookies.
2141 </h4>
2143 MS Internet Explorer seems to be really buggy about cookies, at least till
2144 version 6. And thanks to Andrew Zivolup we've traced also a php 4.1.1 bug
2145 in this area!
2146 <br />
2147 Then, if you're running php 4.1.1, try to upgrade or downgrade... it may
2148 work!
2149 </p>
2151 <h4>
2152 [5.5] In Internet Explorer 5.0, I get Javascript errors when browsing my
2153 rows.
2154 </h4>
2156 Upgrade to at least Internet Explorer 5.5 SP2.<br />
2157 </p>
2159 <h4>
2160 [5.6] In Internet Explorer 5.0, 5.5 or 6.0, I get an error when trying
2161 to modify a row in a table with many fields, or with a text field
2162 </h4>
2164 Your table neither have a primary key nor an unique one, so we must use a
2165 long URL to identify this row. There is a limit on the lenght of the URL in
2166 those browsers, and this not happen in Netscape, for example. The
2167 workaround is to create a primary or unique key, or use another browser.
2168 <br />
2169 </p>
2171 <h4>
2172 [5.7] I refresh (reload) my browser, and come back to the welcome
2173 page.
2174 </h4>
2176 Some browsers support right-clicking into the frame you want to refresh,
2177 just do this in the right frame.<br />
2178 </p>
2180 <h4>
2181 [5.8] With Mozilla 0.9.7 I have problems sending a query modified in the
2182 query box.
2183 </h4>
2185 Looks like a Mozilla bug: 0.9.6 was ok. We will keep an eye on future
2186 Mozilla versions.<br />
2187 </p>
2189 <h4>
2190 [5.9] With Mozilla 0.9.? to 1.0 and Netscape 7.0-PR1 I can't type a
2191 whitespace in the SQL-Query edit area: the page scrolls down.
2192 </h4>
2194 This is a Mozilla bug (see bug #26882 at
2195 <a href="http://bugzilla.mozilla.org/" target="_blank">Bugzilla</a>).<br />
2196 </p>
2198 <h4>
2199 [5.10] With Netscape 4.75 I get empty rows between each row of data in a
2200 CSV exported file.
2201 </h4>
2203 This is a known Netscape 4.75 bug: it adds some line feeds when exporting
2204 data in octet-stream mode. Since we can't detect the specific Netscape
2205 version, we cannot workaround this bug.
2206 </p>
2208 <h4>
2209 [5.11] Extended-ASCII characters like German umlauts are displayed
2210 wrong.
2211 </h4>
2213 Please ensure that you have set your browser's charset to the one of the
2214 language file you have selected on phpMyAdmin's start page.
2215 Alternatively, you can try the auto detection mode that is supported by the
2216 recent versions of the most browsers.
2217 </p>
2219 <h4>
2220 [5.12] Apple OS X: Safari browser changes special characters to
2221 &quot;?&quot;.
2222 </h4>
2224 This issue has been reported by a OS X user, who adds that Chimera,
2225 Netscape and Mozilla do not have this problem.
2226 </p>
2228 <h4>
2229 [5.13] With Internet Explorer 5.5 or 6, and http authentication type,
2230 I cannot manage two servers: I login to the first one, then the other one,
2231 but if I switch back to the first, I have to login on each operation.
2232 </h4>
2234 This is a bug in Internet Explorer, other browsers do not behave this way.
2235 </p>
2237 <a name="faqusing"></a><br />
2238 <h3>[6. Using phpMyAdmin]</h3>
2240 <h4>
2241 [6.1] I can't insert new rows into a table / I can't create a table
2242 - MySQL brings up a SQL-error.
2243 </h4>
2245 Examine the SQL error with care. Often the problem is caused by
2246 specifying a wrong field-type.<br />
2247 Common errors include:
2248 </p>
2249 <ul>
2250 <li>Using <tt>VARCHAR</tt> without a size argument</li>
2251 <li>Using <tt>TEXT</tt> or <tt>BLOB</tt> with a size argument</li>
2252 </ul>
2254 Also, look at the syntax chapter in the MySQL manual to confirm that your
2255 syntax is correct.
2256 </p>
2258 <h4>
2259 [6.2] When I create a table, I click the Index checkbox for 2 fields and
2260 phpMyAdmin generates only one index with those 2 fields.
2261 </h4>
2263 In phpMyAdmin 2.2.0 and 2.2.1, this is the way to create a multi-fields
2264 index. If you want two indexes, create the first one when creating the
2265 table, save, then display the table properties and click the Index link to
2266 create the other index.
2267 </p>
2269 <h4>
2270 [6.3] How can I insert a null value into my table?
2271 </h4>
2273 Since version 2.2.3, you have a checkbox for each field that can be null.
2274 Before 2.2.3, you had to enter &quot;null&quot;, without the quotes, as the
2275 field's value.
2276 </p>
2278 <h4>
2279 [6.4] How can I backup my database or table?
2280 </h4>
2282 Click on a database or table name in the left frame, the properties will be
2283 displayed. Then on the menu, click &quot;Export&quot;, you can dump
2284 the structure, the data, or both. This will generate standard SQL
2285 statements that can be used to recreate your database/table.
2286 <br /><br />
2287 You will need to choose &quot;Save as file&quot;, so that phpMyAdmin can
2288 transmit the resulting dump to your station. Depending on your PHP
2289 configuration, you will see options to compress the dump. See also the
2290 <tt>$cfg['ExecTimeLimit']</tt> configuration variable.
2291 <br /><br />
2292 For additional help on this subject, look for the word &quot;dump&quot; in
2293 this document.
2294 </p>
2296 <h4>
2297 [6.5] How can I restore (upload) my database or table using a dump?
2298 How can I run a &quot;.sql&quot; file.
2299 </h4>
2301 Click on a database name in the left frame, the properties will be
2302 local displayed. Then in the &quot;Run SQL query&quot; section, type in
2303 your dump filename, or use the Browse button. Then click Go.
2304 <br /><br />
2305 For additional help on this subject, look for the word &quot;upload&quot;
2306 in this document.
2307 </p>
2309 <h4>
2310 [6.6] How can I use the relation table in Query-by-example?
2311 </h4>
2313 Here is an example with the tables persons, towns and countries, all
2314 located in the database mydb. If you don't have a <tt>PMA_relation</tt>
2315 table, create it as explained in the configuration section. Then create the
2316 example tables:
2317 <br /><br />
2318 <tt>
2319 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE REL_countries (<br />
2320 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;country_code char(1) NOT NULL default '',<br />
2321 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;description varchar(10) NOT NULL default '',<br />
2322 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (country_code)<br />
2323 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM;<br />
2324 <br />
2325 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO REL_countries VALUES ('C', 'Canada');<br />
2326 <br />
2327 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE REL_persons (<br />
2328 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id tinyint(4) NOT NULL auto_increment,<br />
2329 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;person_name varchar(32) NOT NULL default '',<br />
2330 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;town_code varchar(5) default '0',<br />
2331 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;country_code char(1) NOT NULL default '',<br />
2332 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (id)<br />
2333 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM;<br />
2334 <br />
2335 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO REL_persons VALUES (11, 'Marc', 'S', '');<br />
2336 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C');<br />
2337 <br />
2338 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE REL_towns (<br />
2339 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;town_code varchar(5) NOT NULL default '0',<br />
2340 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;description varchar(30) NOT NULL default '',<br />
2341 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (town_code)<br />
2342 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) TYPE=MyISAM;<br />
2343 <br />
2344 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO REL_towns VALUES ('S', 'Sherbrooke');<br />
2345 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO REL_towns VALUES ('M', 'Montr&eacute;al');<br />
2346 <br />
2347 </tt>
2348 To setup appropriate links and display information:
2349 </p>
2350 <ul>
2351 <li>on table &quot;REL_persons&quot; click Structure, then Relation view</li>
2352 <li>in Links, for &quot;town_code&quot; choose &quot;REL_towns-&gt;code&quot;</li>
2353 <li>in Links, for &quot;country_code&quot; choose &quot;REL_countries-&gt;country_code&quot;</li>
2354 <li>on table &quot;REL_towns&quot; click Structure, then Relation view</li>
2355 <li>in &quot;Choose field to display&quot;, choose &quot;description&quot;</li>
2356 <li>repeat the two previous steps for table &quot;REL_countries&quot;</li>
2357 </ul>
2360 Then test like this:
2361 </p>
2362 <ul>
2363 <li>Click on your db name in the left frame</li>
2364 <li>Choose &quot;Query&quot;</li>
2365 <li>Use tables: persons, towns, countries</li>
2366 <li>Click &quot;Update query&quot;</li>
2367 <li>In the fields row, choose persons.person_name and click the
2368 &quot;Show&quot; tickbox </li>
2369 <li>Do the same for towns.description and countries.descriptions in the
2370 other 2 columns</li>
2371 <li>Click &quot;Update query&quot; and you will see in the query box that
2372 the correct joins have been generated</li>
2373 <li>Click &quot;Submit query&quot;</li>
2374 </ul>
2375 <br />
2377 <a name="faqdisplay"></a><br />
2378 <h4>
2379 [6.7] How can I use the &quot;display field&quot; feature?
2380 </h4>
2382 Starting from the previous example, create the PMA_table_info as explained
2383 in the configuration section, then browse your persons table,
2384 and move the mouse over a town code or country code.
2385 </p>
2387 <a name="faqpdf"></a><br />
2388 <h4>
2389 [6.8] How can I produce a PDF schema of my database?
2390 </h4>
2392 First you have to fill the &quot;relation&quot;, &quot;table_coords&quot;
2393 and &quot;pdf_pages&quot; configuration variables.
2394 <br /><br />
2395 Then, think about your schema layout: which tables will go on which pages.
2396 </p>
2397 <ul>
2398 <li>Click on your db name in the left frame</li>
2399 <li>Choose &quot;Structure&quot; in the navigation on top</li>
2400 <li>Choose &quot;Edit PDF Pages&quot; which should be somewhere at the
2401 bottom of the page</li>
2402 <li>Enter the name for a first pdf page and submit</li>
2403 <li>Choose this page to edit</li>
2404 <li>Now add a table you want to show on this page and it's coordinates and
2405 submit<br />
2406 First you will have to guess this coordinates of course, so just expect
2407 to have an area of about 297 * 210 and put the tables coordinates
2408 somewhere in there, you will be able to have a look at what happened
2409 and change them later.<br />
2410 For example, x=100 and y=200 means that the table will be at 200 mm
2411 down and 100 mm right from the upper left corner.<br />
2412 Actually if you have a width of more than 300 or a height of more than
2413 200 than it will automatically be scaled but 300*100 is a good start to
2414 have an idea of what coordinates to use.</li>
2415 <li>After every table you submitted you will have the possibility to submit
2416 more tables</li>
2417 <li>When you have entered enough tables Click on your db name in the left
2418 frame again</li>
2419 <li>Now, again at the bottom of the page you should be able to choose
2420 &quot;Display PDF schema&quot;<br />
2421 For testing it might be useful to show the grid as well, so you can see
2422 the coordinates used.<br />
2423 Maybe also choose color and submit.</li>
2424 <li>Save the file he will offer you to something like <i>Schema.pdf</i>
2425 (Internet Explorer has some bug there which might make it offer it
2426 without an extension. Under Windows it is important to have the
2427 extension &quot;.pdf&quot;, under other OSes you should be fine just
2428 saving the file under the name it offers).</li>
2429 </ul>
2431 <h4>
2432 [6.9] phpMyAdmin is changing the type of one of my columns!
2433 </h4>
2435 No, it's MySQL that is doing
2436 <a href="http://www.mysql.com/doc/S/i/Silent_column_changes.html">silent column type changing</a>.
2437 </p>
2439 <a name="underscore"></a><br />
2440 <h4>
2441 [6.10] My database has an underscore in it's name, and when I grant
2442 privileges to a user for this database, a backslash is added before the
2443 underscore.
2444 </h4>
2446 This is normal and means that the grant is done only for this database. If
2447 there was no backslash, this would be a wildcard grant, and the
2448 underscore would mean &quot;any character&quot;. So, if the database name
2449 is &quot;john_db&quot;, the user would get rights to john1db, john2db...
2450 instead of just john_db.<br /><br />
2451 If you really want to grant using a wildcard, there is a dialog box &quot;
2452 Database (wildcards allowed)&quot; for this.
2453 </p>
2455 <h4>
2456 [6.11] What is the curious symbol &oslash; in the statistics pages?
2457 </h4>
2459 It means &quot;average&quot;.
2460 </p>
2462 <a name="faqexport"></a><br />
2463 <h4>
2464 [6.12] I want to understand some Export options.
2465 </h4>
2467 &quot;Complete inserts&quot; adds the column names on every INSERT command,
2468 for better documentation (but resulting file is bigger).<br />
2469 &quot;Extended inserts&quot; provides a shorter dump file by using only
2470 once the INSERT verb and the table name.<br />
2471 &quot;Enclose table and field names with backquotes&quot; ensures that
2472 field and table names formed with special characters are protected.<br />
2473 </p>
2475 <h4>
2476 [6.13] I would like to create a database with a dot in its name.
2477 </h4>
2479 This is a bad idea, because in MySQL the syntax &quot;database.table&quot;
2480 is the normal way to reference a database and table name. Worse, MySQL
2481 will usually let you create a database with a dot, but then you cannot
2482 work with it, nor delete it.<br />
2483 </p>
2485 <a name="faqsqlvalidator"></a><br />
2486 <h4>
2487 [6.14] How do I set up the SQL validator?
2488 </h4>
2490 To use it, you need a very recent version of PHP, 4.3.0 recommended, with
2491 XML, PCRE and PEAR support. On your system command line, run
2492 <tt>"pear install Net_Socket Net_URL HTTP_Request Mail_Mime Net_DIME
2493 SOAP"</tt> to get the nessecary PEAR modules for usage.
2494 <br />
2495 If you use it, you should be aware that any SQL statement you
2496 submit will be stored anonymously (database/table/column names,
2497 strings, numbers replaced with generic values). The Mimer SQL
2498 Validator itself, is &copy; 2001 Upright Database Technology.
2499 We utilize it as free SOAP service.
2500 </p>
2502 <h4>
2503 [6.15] I want to add a BLOB field and put an index on it, but MySQL
2504 says &quot;BLOB column '...' used in key specification without a key
2505 length&quot;.
2506 </h4>
2508 The right way to do this, is to create the field without any indexes,
2509 then display the table structure and use the &quot;Create an index&quot;
2510 dialog. On this page, you will be able to choose your BLOB field, and
2511 set a size to the index, which is the condition to create an index on
2512 a BLOB field.
2513 <br />
2514 </p>
2516 <h4>
2517 [6.16] How can I simply move in page with plenty editing fields?
2518 </h4>
2520 You can use Ctrl+arrows for moving on most pages with plenty editing
2521 fields (table structure changes, row editing, etc.).
2522 <br />
2523 </p>
2525 <a name="faqproject"></a><br />
2526 <h3>[7. phpMyAdmin project]</h3>
2528 <h4>
2529 [7.1] I have found a bug. How do I inform developers?
2530 </h4>
2532 Our Bug Tracker is located at
2533 <a href="http://sourceforge.net/projects/phpmyadmin/">http://sourceforge.net/projects/phpmyadmin/</a>
2534 under the Bugs section.
2535 <br /><br />
2536 But please first discuss your bug with other users:
2537 <br />
2538 <a href="http://sourceforge.net/projects/phpmyadmin/">
2539 http://sourceforge.net/projects/phpmyadmin/</a> (and choose Forums)
2540 </p>
2542 <h4>
2543 [7.2] I want to translate the messages to a new language or upgrade an
2544 existing language, where do I start?
2545 </h4>
2547 Always use the current cvs version of your language file.
2548 For a new language, start from <i>english-iso-8859-1.inc.php3</i>. If you
2549 don't know how to get the cvs version, please ask one of the developers.
2550 <br />
2551 Please note that we try not to use html entities like &amp;eacute; in
2552 the translations, since we define the right character set in the file.
2553 With html entities, the text on javascript messages would not
2554 display correctly.
2555 However there are some entities that need to be there, for quotes
2556 ,non-breakable spaces, ampersands, less than, greater than.
2557 <br />
2558 You can then put your translations, as a zip file to avoid losing special
2559 characters, on the sourceforge.net translation tracker.
2560 <br />
2561 It would be a good idea to subscribe to the phpmyadmin-translators mailing
2562 list, because this is where we ask for translations of new messages.
2563 <br />
2564 </p>
2566 <h4>
2567 [7.3] I would like to help out with the development of phpMyAdmin. How
2568 should I proceed?
2569 </h4>
2571 The following method is preferred for new developers:
2572 </p>
2573 <ol>
2574 <li>
2575 fetch the current CVS tree over anonymous CVS:<br />
2576 <tt>cvs -d:pserver:anonymous@cvs.phpmyadmin.sourceforge.net:/cvsroot/phpmyadmin login</tt><br />
2577 [Password: simply press the Enter key]<br />
2578 <tt>cvs -z3 -d:pserver:anonymous@cvs.phpmyadmin.sourceforge.net:/cvsroot/phpmyadmin checkout phpMyAdmin</tt><br />
2579 [This will create a new sub-directory named phpMyAdmin]
2580 </li>
2581 <li>
2582 add your stuff
2583 </li>
2584 <li>
2585 put the modified files (tar'ed and gzip'ed) inside the patch tracker of
2587 <a href="http://sourceforge.net/projects/phpmyadmin/" target="_blank">phpMyAdmin SourceForge account</a>.
2588 </li>
2589 </ol>
2591 Write access to the CVS tree is granted only to experienced developers who
2592 have already contributed something useful to phpMyAdmin.<br />
2593 Also, have a look at the
2594 <a href="#developers">Developers section</a>.
2595 </p>
2599 <!-- DEVELOPERS -->
2600 <a name="developers"></a><br />
2601 <h2>Developers Information</h2>
2604 phpMyAdmin is Open Source, so you're invited to contribute to it. Many
2605 great features have been written by other people and you too can help to
2606 make phpMyAdmin a useful tool.
2607 </p>
2610 If you're planning to contribute source, please read the following
2611 information:
2612 </p>
2613 <ul>
2614 <li>
2615 All files include <i>header.inc.php3</i> (layout),
2616 <i>libraries/common.lib.php3</i> (common functions) and
2617 <i>config.inc.php3</i>.
2618 <br />
2619 All configuration data belongs in <i>config.inc.php3</i>. Please keep
2620 it free from other code.
2621 <br />
2622 Commonly used functions should be added to
2623 <i>libraries/common.lib.php3</i> and more specific ones may be added
2624 within a library stored into the <i>libraries</i> sub-directory.
2625 </li>
2626 <li>
2627 Obviously, you're free to use whatever coding style you want. But
2628 please try to keep your code as simple as possible: beginners are
2629 using phpMyAdmin as an example application.<br />
2630 As far as possible, we want the scripts to be XHTML1.0 and CSS2
2631 compliant on one hand, they fit the
2632 <a href="http://pear.php.net/" target="_blank">PEAR coding standards</a>
2633 on the other hand. Please pay attention to this.
2634 </li>
2635 <li>
2636 Please try to keep up the file-naming conventions. Table-related stuff
2637 goes to <i>tbl_*.php3</i>, db-related code to <i>db_*.php3</i>,
2638 server-related tools to <i>server_*.php3</i> and so on.
2639 </li>
2640 <li>
2641 Please don't use verbose strings in your code, instead add the string
2642 (at least) to <i>english-iso-8859-1.inc.php3</i> and print() it out.
2643 </li>
2644 <li>
2645 If you want to be really helpful, write an entry for the ChangeLog.
2646 </li>
2647 <li id="developersdbg">
2648 The DBG extension (<a href="http://dd.cron.ru/dbg/" target="_blank">PHP
2649 Debugger DBG</a>) is now supported by phpMyAdmin for developers to
2650 better debug and profile their code.<br />
2651 Please see the <tt>$cfg['DBG']*</tt> configuration options for more
2652 information.<br />
2653 This is in memorium of the Space Shuttle Columbia (STS-107) which was
2654 lost during its re-entry into Earth's atmosphere and in memory of the
2655 brave men and women who gave their lives for the people of Earth.
2656 </li>
2658 </ul>
2660 <!-- CREDITS -->
2661 <a name="credits"></a><br />
2662 <h2>Credits</h2>
2664 <pre>
2666 phpMyAdmin - Credits
2667 ====================
2669 CREDITS, in chronological order
2670 -------------------------------
2672 - Tobias Ratschiller &lt;tobias.ratschiller_at_maguma.com&gt;
2673 * creator of the phpmyadmin project
2674 * maintainer from 1998 to summer 2000
2676 - Marc Delisle &lt;DelislMa_at_CollegeSherbrooke.qc.ca&gt;
2677 * multi-language version
2678 * various fixes and improvements
2679 * project co-administrator
2681 - Olivier M&uuml;ller &lt;om_at_omnis.ch&gt;
2682 * started SourceForge phpMyAdmin project in March 2001
2683 * sync'ed different existing CVS trees with new features and bugfixes
2684 * multi-language improvements, dynamic language selection
2685 * current project maintainer
2686 * many bugfixes and improvements
2688 - Lo&iuml;c Chapeaux &lt;lolo_at_phpheaven.net&gt;
2689 * rewrote and optimized javascript, DHTML and DOM stuff
2690 * rewrote the scripts so they fit the PEAR coding standards and
2691 generate XHTML1.0 and CSS2 compliant codes
2692 * improved the language detection system
2693 * many bugfixes and improvements
2695 - Robin Johnson &lt;robbat2_at_users.sourceforge.net&gt;
2696 * database maintence controls
2697 * table type code
2698 * Host authentication IP Allow/Deny
2699 * DB-based configuration (Not completed)
2700 * SQL parser
2701 * SQL validator
2702 * many bugfixes and improvements
2704 - Armel Fauveau &lt;armel.fauveau_at_globalis-ms.com&gt;
2705 * bookmarks feature
2706 * multiple dump feature
2707 * gzip dump feature
2708 * zip dump feature
2710 - Geert Lund &lt;glund_at_silversoft.dk&gt;
2711 * various fixes
2712 * moderator of the phpMyAdmin users forum at phpwizard.net
2714 - Korakot Chaovavanich &lt;korakot_at_iname.com&gt;
2715 * &quot;insert as new row&quot; feature
2717 - Pete Kelly &lt;webmaster_at_trafficg.com&gt;
2718 * rewrote and fix dump code
2719 * bugfixes
2721 - Steve Alberty &lt;alberty_at_neptunlabs.de&gt;
2722 * rewrote dump code for PHP4
2723 * mySQL table statistics
2724 * bugfixes
2726 - Benjamin Gandon &lt;gandon_at_isia.cma.fr&gt;
2727 * main author of the version 2.1.0.1
2728 * bugfixes
2730 - Alexander M. Turek &lt;rabus_at_bugfixes.info&gt;
2731 * XML exports
2732 * MySQL 4 related features
2733 * various small features and fixes
2734 * German language file updates
2736 - Mike Beck &lt;mike.beck_at_ibmiller.de&gt;
2737 * automatic joins in QBE
2738 * links column in printview
2739 * Relation view
2741 - Michal Cihar &lt;nijel_at_users.sourceforge.net&gt;
2742 * enhanced index creation/display feature
2743 * feature to use a different charset for HTML than for MySQL
2744 * Czech language file updates
2746 - Christophe Gesch&eacute; from the &quot;MySQL Form Generator for PHPMyAdmin&quot;
2747 (http://sourceforge.net/projects/phpmysqlformgen/)
2748 * suggested the patch for multiple table printviews
2750 - Garvin Hicking &lt;hicking_at_faktor-e.de&gt;
2751 * built the patch for vertical display of table rows
2753 - Yukihiro Kawada &lt;kawada_at_den.fujifilm.co.jp&gt;
2754 * japanese kanji encoding conversion feature
2756 - Piotr Roszatycki &lt;d3xter_at_users.sourceforge.net&gt; and Dan Wilson
2757 * the Cookie authentication mode
2759 - Axel Sander &lt;n8falke_at_users.sourceforge.net&gt;
2760 * table relation-links feature
2762 - Maxime Delorme &lt;delorme.maxime_at_free.fr&gt;
2763 * PDF schema output, thanks also to Olivier Plathey for the
2764 &quot;FPDF&quot; library (see http://www.fpdf.org/).
2766 - Olof Edlund &lt;olof.edlund_at_upright.se&gt;
2767 * SQL validator server
2769 - Ivan R. Lanin &lt;ivanlanin_at_users.sourceforfe.net&gt;
2770 * phpMyAdmin logo
2772 And also to the following people who have contributed minor changes,
2773 enhancements, bugfixes or support for a new language since version 2.1.0:
2775 Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita,
2776 P&eacute;ter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow,
2777 Mats Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kl&auml;ger,
2778 Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg, Andreas Pauley,
2779 Bernard M. Piller, Laurent Haas, &quot;Sakamoto&quot;, Yuval Sarna,
2780 www.securereality.com.au, Alvar Soome, Siu Sun, Peter Svec, Michael Tacelosky,
2781 Rachim Tamsjadi, Kositer Uros, Luís V., Martijn W. van der Lee,
2782 Algis Vainauskas, Daniel Villanueva, Vinay, Ignacio Vazquez-Abrams, Chee Wai,
2783 Jakub Wilk, Thomas Michael Winningham, Vilius Zigmantas.
2786 Original Credits of Version 2.1.0
2787 ---------------------------------
2789 This work is based on Peter Kuppelwieser's MySQL-Webadmin. It was his idea
2790 to create a web-based interface to MySQL using PHP3. Although I have not
2791 used any of his source-code, there are some concepts I've borrowed from
2792 him. phpMyAdmin was created because Peter told me he wasn't going to
2793 further develop his (great) tool.
2794 Thanks go to
2795 - Amalesh Kempf &lt;ak-lsml_at_living-source.com&gt; who contributed the
2796 code for the check when dropping a table or database. He also suggested
2797 that you should be able to specify the primary key on tbl_create.php3. To
2798 version 1.1.1 he contributed the ldi_*.php3-set (Import text-files) as
2799 well as a bug-report. Plus many smaller improvements.
2800 - Jan Legenhausen &lt;jan_at_nrw.net&gt;: He made many of the changes that
2801 were introduced in 1.3.0 (including quite significant ones like the
2802 authentication). For 1.4.1 he enhanced the table-dump feature. Plus
2803 bug-fixes and help.
2804 - Marc Delisle &lt;DelislMa_at_CollegeSherbrooke.qc.ca&gt; made phpMyAdmin
2805 language-independent by outsourcing the strings to a separate file. He
2806 also contributed the French translation.
2807 - Alexandr Bravo &lt;abravo_at_hq.admiral.ru&gt; who contributed
2808 tbl_select.php3, a feature to display only some fields from a table.
2809 - Chris Jackson &lt;chrisj_at_ctel.net&gt; added support for MySQL
2810 functions in tbl_change.php3. He also added the
2811 &quot;Query by Example&quot; feature in 2.0.
2812 - Dave Walton &lt;walton_at_nordicdms.com&gt; added support for multiple
2813 servers and is a regular contributor for bug-fixes.
2814 - Gabriel Ash &lt;ga244_at_is8.nyu.edu&gt; contributed the random access
2815 features for 2.0.6.
2816 The following people have contributed minor changes, enhancements, bugfixes
2817 or support for a new language:
2818 Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas Kleemann,
2819 Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel Piankov,
2820 Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein, Jannis Hermanns,
2821 G. Wieggers.
2823 And thanks to everyone else who sent me email with suggestions, bug-reports
2824 and or just some feedback.
2825 </pre>
2829 <a name="bottom"></a><br />
2830 <p align="right">
2831 <a href="http://validator.w3.org/check/referer" target="w3c">
2832 <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" border="0" height="31" width="88" /></a>
2833 &nbsp;&nbsp;&nbsp;&nbsp;
2834 <a href="http://jigsaw.w3.org/css-validator/" target="w3c">
2835 <img src="http://www.w3.org/Icons/valid-css" alt="Valid CSS!" border="0" width="88" height="31" /></a>
2836 </p>
2838 </body>
2839 </html>