forked from phpmyadmin/phpmyadmin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Documentation.html
5130 lines (4367 loc) · 249 KB
/
Documentation.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE HTML>
<!--
vim: expandtab ts=4 sw=4 sts=4 tw=78
-->
<html lang="en-US" dir="ltr">
<head>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<meta charset="utf-8" />
<title>phpMyAdmin 4.0.0-dev - Documentation</title>
<link rel="stylesheet" type="text/css" href="docs.css" />
</head>
<body id="top">
<div id="header">
<h1>
<a href="http://www.phpmyadmin.net/">php<span class="myadmin">MyAdmin</span></a>
4.0.0-dev
Documentation
</h1>
</div>
<!-- TOP MENU -->
<ul class="header">
<li><a href="Documentation.html#top">Top</a></li>
<li><a href="Documentation.html#require">Requirements</a></li>
<li><a href="Documentation.html#intro">Introduction</a></li>
<li><a href="Documentation.html#setup">Installation</a></li>
<li><a href="Documentation.html#setup_script">Setup script</a></li>
<li><a href="Documentation.html#config">Configuration</a></li>
<li><a href="Documentation.html#transformations">Transformations</a></li>
<li><a href="Documentation.html#faq"><abbr title="Frequently Asked Questions"> FAQ</abbr></a></li>
<li><a href="Documentation.html#developers">Developers</a></li>
<li><a href="Documentation.html#copyright">Copyright</a></li>
<li><a href="Documentation.html#credits">Credits</a></li>
<li><a href="Documentation.html#glossary">Glossary</a></li>
</ul>
<div id="body">
<ul><li><a href="http://www.phpmyadmin.net/">
phpMyAdmin homepage</a></li>
<li><a href="https://sourceforge.net/projects/phpmyadmin/">
SourceForge phpMyAdmin project page</a></li>
<li><a href="http://wiki.phpmyadmin.net">
Official phpMyAdmin wiki</a></li>
<li><a href="https://github.com/phpmyadmin">
Git repositories on Github</a></li>
<li>Local documents:
<ul><li>Version history: <a href="changelog.php">ChangeLog</a></li>
<li>License: <a href="license.php">LICENSE</a></li>
</ul>
</li>
</ul>
<!-- REQUIREMENTS -->
<h2 id="require">Requirements</h2>
<ul><li><strong>PHP</strong>
<ul><li>You need PHP 5.2.0 or newer, with <code>session</code> support
(<a href="#faq1_31">see
<abbr title="Frequently Asked Questions">FAQ</abbr> 1.31</a>)
, the Standard PHP Library (SPL) extension and JSON support.
</li>
<li>To support uploading of ZIP files, you need the PHP <code>zip</code> extension.</li>
<li>For proper support of multibyte strings (eg. UTF-8, which is
currently the default), you should install the mbstring and ctype
extensions.
</li>
<li>You need GD2 support in PHP to display inline
thumbnails of JPEGs ("image/jpeg: inline") with their
original aspect ratio.</li>
<li>When using the "cookie"
<a href="#authentication_modes">authentication method</a>, the
<a href="http://www.php.net/mcrypt"><code>mcrypt</code></a> extension
is strongly suggested for most users and is <strong>required</strong> for
64–bit machines. Not using mcrypt will cause phpMyAdmin to
load pages significantly slower.
</li>
<li>To support upload progress bars, see <a href="#faq2_9">
<abbr title="Frequently Asked Questions">FAQ</abbr> 2.9</a>.</li>
<li>To support XML and Open Document Spreadsheet importing,
you need PHP 5.2.17 or newer and the
<a href="http://www.php.net/libxml"><code>libxml</code></a> extension.</li>
</ul>
</li>
<li><strong>MySQL</strong> 5.0 or newer (<a href="#faq1_17">details</a>);</li>
<li><strong>Web browser</strong> with cookies enabled.</li>
</ul>
<!-- INTRODUCTION -->
<h2 id="intro">Introduction</h2>
<p> phpMyAdmin can manage a whole MySQL server (needs a super-user) as well as
a single database. To accomplish the latter you'll need a properly set up
MySQL user who can read/write only the desired database. It's up to you to
look up the appropriate part in the MySQL manual.
</p>
<h3>Currently phpMyAdmin can:</h3>
<ul><li>browse and drop databases, tables, views, columns and indexes</li>
<li>display multiple results sets through stored procedures or queries</li>
<li>create, copy, drop, rename and alter databases, tables, columns and
indexes</li>
<li>maintenance server, databases and tables, with proposals on server
configuration</li>
<li>execute, edit and bookmark any
<abbr title="structured query language">SQL</abbr>-statement, even
batch-queries</li>
<li>load text files into tables</li>
<li>create<a href="#footnote_1"><sup>1</sup></a> and read dumps of tables
</li>
<li>export<a href="#footnote_1"><sup>1</sup></a> data to various formats:
<abbr title="Comma Separated Values">CSV</abbr>,
<abbr title="Extensible Markup Language">XML</abbr>,
<abbr title="Portable Document Format">PDF</abbr>,
<abbr title="International Standards Organisation">ISO</abbr>/<abbr
title="International Electrotechnical Commission">IEC</abbr> 26300 -
OpenDocument Text and Spreadsheet,
<abbr title="Microsoft Word 2000">Word</abbr>,
and L<sup>A</sup>T<sub><em class="big">E</em></sub>X formats
</li>
<li>import data and MySQL structures from OpenDocument spreadsheets, as well as <abbr title="Extensible Markup Language">XML</abbr>, <abbr title="Comma Separated Values">CSV</abbr>, and <abbr title="Server Query Language">SQL</abbr> files</li>
<li>administer multiple servers</li>
<li>manage MySQL users and privileges</li>
<li>check referential integrity in MyISAM tables</li>
<li>using Query-by-example (QBE), create complex queries automatically
connecting required tables</li>
<li>create <abbr title="Portable Document Format">PDF</abbr> graphics of
your Database layout</li>
<li>search globally in a database or a subset of it</li>
<li>transform stored data into any format using a set of predefined
functions, like displaying BLOB-data as image or download-link
</li>
<li>track changes on databases, tables and views</li>
<li>support InnoDB tables and foreign keys <a href="#faq3_6">(see
<abbr title="Frequently Asked Questions">FAQ</abbr> 3.6)</a></li>
<li>support mysqli, the improved MySQL extension <a href="#faq1_17">
(see <abbr title="Frequently Asked Questions">FAQ</abbr> 1.17)</a></li>
<li>create, edit, call, export and drop stored procedures and functions</li>
<li>create, edit, export and drop events and triggers</li>
<li>communicate in <a href="http://www.phpmyadmin.net/home_page/translations.php">62 different languages</a>
</li>
<li>synchronize two databases residing on the same as well as remote servers
<a href="#faq9_1">(see <abbr title="Frequently Asked Questions">FAQ</abbr> 9.1)</a>
</li>
</ul>
<h4>A word about users:</h4>
<p> Many people have difficulty
understanding the concept of user management with regards to phpMyAdmin. When
a user logs in to phpMyAdmin, that username and password are passed directly
to MySQL. phpMyAdmin does no account management on its own (other than
allowing one to manipulate the MySQL user account information); all users
must be valid MySQL users.</p>
<p class="footnote" id="footnote_1">
<sup>1)</sup> phpMyAdmin can compress (Zip, GZip -RFC 1952- or Bzip2 formats)
dumps and <abbr title="comma separated values">CSV</abbr> exports if you use
PHP with Zlib support (<code>--with-zlib</code>) and/or Bzip2 support
(<code>--with-bz2</code>). Proper support may also need changes in
<code>php.ini</code>.</p>
<!-- INSTALLATION -->
<h2 id="setup">Installation</h2>
<ol><li><a href="#quick_install">Quick Install</a></li>
<li><a href="#setup_script">Setup script usage</a></li>
<li><a href="#linked-tables">phpMyAdmin configuration storage</a></li>
<li><a href="#upgrading">Upgrading from an older version</a></li>
<li><a href="#authentication_modes">Using authentication modes</a></li>
</ol>
<p class="important">
phpMyAdmin does not apply any special security methods to the MySQL database
server. It is still the system administrator's job to grant permissions on
the MySQL databases properly. phpMyAdmin's "Privileges" page can
be used for this.
</p>
<p class="important">
Warning for <abbr title="Apple Macintosh">Mac</abbr> users:<br />
if you are on a <abbr title="Apple Macintosh">Mac</abbr>
<abbr title="operating system">OS</abbr> version before
<abbr title="operating system">OS</abbr> X, StuffIt unstuffs with
<abbr title="Apple Macintosh">Mac</abbr> formats.<br />
So you'll have to resave as in BBEdit to Unix style ALL phpMyAdmin scripts
before uploading them to your server, as PHP seems not to like
<abbr title="Apple Macintosh">Mac</abbr>-style end of lines character
("<code>\r</code>").</p>
<h3 id="quick_install">Quick Install</h3>
<ol><li>Choose an appropriate distribution kit from the phpmyadmin.net
Downloads page. Some kits contain only the English messages,
others contain all languages in UTF-8 format (this should be fine
in most situations), others contain all
languages and all character sets. We'll assume you chose a kit whose
name looks like <code>phpMyAdmin-x.x.x-all-languages.tar.gz</code>.
</li>
<li>Untar or unzip the distribution (be sure to unzip the subdirectories):
<code>tar -xzvf phpMyAdmin_x.x.x-all-languages.tar.gz</code> in your webserver's
document root. If you don't have direct access to your document root,
put the files in a directory on your local machine, and, after step 4,
transfer the directory on your web server using, for example, ftp.</li>
<li>Ensure that all the scripts have the appropriate owner (if PHP is
running in safe mode, having some scripts with an owner different
from the owner of other scripts will be a
problem). See <a href="#faq4_2">
<abbr title="Frequently Asked Questions">FAQ</abbr> 4.2</a> and
<a href="#faq1_26"><abbr title="Frequently Asked Questions">FAQ</abbr>
1.26</a> for suggestions.</li>
<li>Now you must configure your installation. There are two methods that
can be used. Traditionally, users have hand-edited a copy of
<code>config.inc.php</code>, but now a wizard-style setup script is
provided for those who prefer a graphical installation. Creating a
<code>config.inc.php</code> is still a quick way to get started and needed for some advanced features.
<ul><li>To manually create the file, simply use your text editor to
create the file <code>config.inc.php</code> (you can copy
<code>config.sample.inc.php</code> to get minimal configuration
file) in the main (top-level) phpMyAdmin directory (the one
that contains <code>index.php</code>). phpMyAdmin first loads
<code>libraries/config.default.php</code> and then overrides those
values with anything found in <code>config.inc.php</code>. If the
default value is okay for a particular setting, there is no
need to include it in <code>config.inc.php</code>. You'll need a
few directives to get going, a simple configuration may look
like this:
<pre>
<?php
$cfg['blowfish_secret'] = 'ba17c1ec07d65003'; // use here a value of your choice
$i=0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
?>
</pre>
Or, if you prefer to not be prompted every time you log in:
<pre>
<?php
$i=0;
$i++;
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'cbb74bc'; // use here your password
$cfg['Servers'][$i]['auth_type'] = 'config';
?>
</pre>
For a full explanation of possible configuration values, see the
<a href="#config">Configuration Section</a> of this document.</li>
<li id="setup_script">Instead of manually editing
<code>config.inc.php</code>, you can use the
<a href="setup/">Setup Script</a>. First you must
manually create a folder <code>config</code> in the phpMyAdmin
directory. This is a security measure. On a Linux/Unix system you
can use the following commands:
<pre>
cd phpMyAdmin
mkdir config # create directory for saving
chmod o+rw config # give it world writable permissions
</pre>
And to edit an existing configuration, copy it over first:
<pre>
cp config.inc.php config/ # copy current configuration for editing
chmod o+w config/config.inc.php # give it world writable permissions
</pre>
On other platforms, simply create the folder and ensure that your
web server has read and write access to it. <a href="#faq1_26">FAQ
1.26</a> can help with this.<br /><br />
Next, open <code><a href="setup/">setup/</a>
</code>in your browser. Note that <strong>changes are not saved to
disk until explicitly choose <code>Save</code></strong> from the
<em>Configuration</em> area of the screen. Normally the script saves
the new config.inc.php to the <code>config/</code> directory, but if
the webserver does not have the proper permissions you may see the
error "Cannot load or save configuration." Ensure that the <code>
config/</code> directory exists and has the proper permissions -
or use the <code>Download</code> link to save the config file locally
and upload (via FTP or some similar means) to the proper location.<br /><br />
Once the file has been saved, it must be moved out of the <code>
config/</code> directory and the permissions must be reset, again
as a security measure:
<pre>
mv config/config.inc.php . # move file to current directory
chmod o-rw config.inc.php # remove world read and write permissions
rm -rf config # remove not needed directory
</pre>
Now the file is ready to be used. You can choose to review or edit
the file with your favorite editor, if you prefer to set some
advanced options which the setup script does not provide.</li></ul></li>
<li>If you are using the
<code>auth_type</code> "config", it is suggested that you
protect the phpMyAdmin installation directory because using
config does not require a user to
enter a password to access the phpMyAdmin installation. Use of an alternate
authentication method is recommended, for example with
HTTP–AUTH in a <a href="#glossary"><em>.htaccess</em></a> file or switch to using
<code>auth_type</code> cookie or http. See the
<a href="#faqmultiuser"> multi–user sub–section</a> of this
<abbr title="Frequently Asked Questions">FAQ</abbr> for additional
information, especially <a href="#faq4_4">
<abbr title="Frequently Asked Questions">FAQ</abbr> 4.4</a>.</li>
<li>Open the <a href="index.php">main phpMyAdmin directory</a>
in your browser. phpMyAdmin should now display a welcome screen
and your databases, or a login dialog if using
<abbr title="HyperText Transfer Protocol">HTTP</abbr> or cookie
authentication mode.</li>
<li>You should deny access to the <code>./libraries</code> and
<code>./setup/lib</code> subfolders in your webserver configuration. For
Apache you can use supplied <a href="#glossary"><em>.htaccess</em></a> file in that folder, for other
webservers, you should configure this yourself. Such configuration
prevents from possible path exposure and cross side scripting
vulnerabilities that might happen to be found in that code.</li>
<li>
It is generally good idea to protect public phpMyAdmin installation
against access by robots as they usually can not do anything good
there. You can do this using <code>robots.txt</code> file in root of
your webserver or limit access by web server configuration, see
<a href="#faq1_42"><abbr title="Frequently Asked Questions">FAQ</abbr> 1.42</a>.
</li>
</ol>
<h3 id="linked-tables">phpMyAdmin configuration storage</h3>
<p> For a whole set of new features (bookmarks, comments,
<abbr title="structured query language">SQL</abbr>-history,
tracking mechanism,
<abbr title="Portable Document Format">PDF</abbr>-generation, column contents
transformation, etc.) you need to create a set of special tables. Those
tables can be located in your own database, or in a central database for a
multi-user installation (this database would then be accessed by the
controluser, so no other user should have rights to it).</p>
<p> Please look at your <code>./examples/</code> directory, where you should find a
file called <em>create_tables.sql</em>. (If you are using a Windows server, pay
special attention to <a href="#faq1_23">
<abbr title="Frequently Asked Questions">FAQ</abbr> 1.23</a>).</p>
<p> If you already had this infrastructure and upgraded to MySQL 4.1.2
or newer, please use <em>./examples/upgrade_tables_mysql_4_1_2+.sql</em>
and then create new tables by importing <em>./examples/create_tables.sql</em>.</p>
<p> You can use your phpMyAdmin to create the tables for you. Please be aware
that you may need special (administrator) privileges to create the database
and tables, and that the script may need some tuning, depending on the
database name.</p>
<p> After having imported the <em>./examples/create_tables.sql</em> file, you
should specify the table names in your <em>./config.inc.php</em> file. The
directives used for that can be found in the <a href="#config">Configuration
section</a>. You will also need to have a controluser with the proper rights
to those tables (see section <a href="#authentication_modes">Using
authentication modes</a> below).</p>
<h3 id="upgrading">Upgrading from an older version</h3>
<p> Simply copy <em>./config.inc.php</em> from your previous installation into the newly
unpacked one. Configuration files from old versions may
require some tweaking as some options have been changed or removed.
For compatibility with PHP 6, remove a <code>set_magic_quotes_runtime(0);</code>
statement that you might find near the end of your configuration file.</p>
<p> You should <strong>not</strong> copy <code>libraries/config.default.php</code>
over <code>config.inc.php</code> because the default configuration file
is version-specific.</p>
<p> If you have upgraded your MySQL server from a version previous to 4.1.2 to
version 5.x or newer and if you use the phpMyAdmin configuration storage,
you should run the <abbr title="structured query language">SQL</abbr> script
found in <code>examples/upgrade_tables_mysql_4_1_2+.sql</code>.</p>
<h3 id="authentication_modes">Using authentication modes</h3>
<ul><li><abbr title="HyperText Transfer Protocol">HTTP</abbr> and cookie
authentication modes are recommended in a <strong>multi-user environment</strong>
where you want to give users access to their own database and don't want
them to play around with others.<br />
Nevertheless be aware that MS Internet Explorer seems to be really buggy
about cookies, at least till version 6.<br />
Even in a <strong>single-user environment</strong>, you might prefer to use
<abbr title="HyperText Transfer Protocol">HTTP</abbr> or cookie mode so
that your user/password pair are not in clear in the configuration file.
</li>
<li><abbr title="HyperText Transfer Protocol">HTTP</abbr> and cookie
authentication modes are more secure: the MySQL login information does
not need to be set in the phpMyAdmin configuration file (except possibly
for the <a href="#controluser">controluser</a>).<br />
However, keep in mind that the password travels in plain text, unless
you are using the HTTPS protocol.<br />
In cookie mode, the password is stored, encrypted with the blowfish
algorithm, in a temporary cookie.</li>
<li id="pmausr">Note: this section is only applicable if
your MySQL server is running with <code>--skip-show-database</code>.<br /><br />
For '<abbr title="HyperText Transfer Protocol">HTTP</abbr>' and 'cookie'
modes, phpMyAdmin needs a controluser that has <strong>only</strong> the
<code>SELECT</code> privilege on the <em>`mysql`.`user` (all columns except
`Password`)</em>, <em>`mysql`.`db` (all columns)</em>, <em>`mysql`.`host`
(all columns)</em> and <em>`mysql`.`tables_priv` (all columns except
`Grantor` and `Timestamp`)</em> tables.<br /> You must specify the details
for the <a href="#controluser">controluser</a> in the <code>config.inc.php</code>
file under the
<code><a href="#cfg_Servers_controluser" class="configrule">
$cfg['Servers'][$i]['controluser']</a></code> and
<code><a href="#cfg_Servers_controlpass" class="configrule">
$cfg['Servers'][$i]['controlpass']</a></code> settings.<br />
The following example assumes you want to use <code>pma</code> as the
controluser and <code>pmapass</code> as the controlpass, but <strong>this is
only an example: use something else in your file!</strong> Input these
statements from the phpMyAdmin <abbr title="structured query language">SQL
</abbr> Query window or mysql command–line client.<br />
Of course you have to replace <code>localhost</code> with the webserver's host
if it's not the same as the MySQL server's one.
<pre>
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT (
Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
Execute_priv, Repl_slave_priv, Repl_client_priv
) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
ON mysql.tables_priv TO 'pma'@'localhost';</pre>
If you want to use the many new relation and bookmark features:
<pre>
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
</pre>
(this of course requires that your <a href="#linked-tables">phpMyAdmin
configuration storage</a> be set up).
<br /></li>
<li>Then each of the <em>true</em> users should be granted a set of privileges
on a set of particular databases. Normally you shouldn't give global
privileges to an ordinary user, unless you understand the impact of those
privileges (for example, you are creating a superuser).<br />
For example, to grant the user <em>real_user</em> with all privileges on
the database <em>user_base</em>:<br />
<pre>
GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';
</pre>
What the user may now do is controlled entirely by the MySQL user
management system.<br />
With <abbr title="HyperText Transfer Protocol">HTTP</abbr> or cookie
authentication mode, you don't need to fill the user/password fields
inside the <a href="#cfg_Servers" class="configrule">$cfg['Servers']</a>
array.</li>
</ul>
<h4>'<abbr title="HyperText Transfer Protocol">HTTP</abbr>' authentication mode</h4>
<ul><li>Uses <abbr title="HyperText Transfer Protocol">HTTP</abbr> Basic authentication
method and allows you to log in as any valid MySQL user.</li>
<li>Is supported with most PHP configurations. For
<abbr title="Internet Information Services">IIS</abbr>
(<abbr title="Internet Server Application Programming Interface">ISAPI</abbr>)
support using <abbr title="Common Gateway Interface">CGI</abbr> PHP see
<a href="#faq1_32"><abbr title="Frequently Asked Questions">FAQ</abbr>
1.32</a>, for using with Apache
<abbr title="Common Gateway Interface">CGI</abbr> see
<a href="#faq1_35"><abbr title="Frequently Asked Questions">FAQ</abbr>
1.35</a>.</li>
<li>See also <a href="#faq4_4">
<abbr title="Frequently Asked Questions">FAQ</abbr> 4.4</a> about not
using the <a href="#glossary"><em>.htaccess</em></a> mechanism along with
'<abbr title="HyperText Transfer Protocol">HTTP</abbr>' authentication
mode.</li>
</ul>
<h4>'cookie' authentication mode</h4>
<ul><li>You can use this method as a replacement for the
<abbr title="HyperText Transfer Protocol">HTTP</abbr> authentication
(for example, if you're running
<abbr title="Internet Information Services">IIS</abbr>).</li>
<li>Obviously, the user must enable cookies in the browser, but this is
now a requirement for all authentication modes.</li>
<li>With this mode, the user can truly log out of phpMyAdmin and log in back
with the same username.</li>
<li>If you want to log in to arbitrary server see
<a href="#AllowArbitraryServer" class="configrule">
$cfg['AllowArbitraryServer']</a> directive.</li>
<li>As mentioned in the <a href="#require">requirements</a> section, having
the <code>mcrypt</code> extension will speed up access considerably, but is
not required.</li>
</ul>
<h4>'signon' authentication mode</h4>
<ul><li>This mode is a convenient way of using credentials from another
application to authenticate to phpMyAdmin.</li>
<li>The other application has to store login information into
session data.</li>
<li>More details in the <a href="#cfg_Servers_auth_type">auth_type</a>
section.</li>
</ul>
<h4>'config' authentication mode</h4>
<ul><li>This mode is the less secure one because it requires you to fill the
<a href="#servers_user" class="configrule">
$cfg['Servers'][$i]['user']</a> and
<a href="#servers_user" class="configrule">
$cfg['Servers'][$i]['password']</a> fields (and as a result, anyone who
can read your config.inc.php can discover your username and password).
<br />
But you don't need to setup a "controluser" here: using the
<a href="#servers_only_db" class="configrule">
$cfg['Servers'][$i]['only_db']</a> might be enough.</li>
<li>In the <a href="#faqmultiuser">
<abbr title="Internet service provider">ISP</abbr>
<abbr title="Frequently Asked Questions">FAQ</abbr></a> section, there
is an entry explaining how to protect your configuration file.</li>
<li>For additional security in this mode, you may wish to consider the Host
authentication
<a href="#servers_allowdeny_order" class="configrule">
$cfg['Servers'][$i]['AllowDeny']['order']</a> and
<a href="#servers_allowdeny_rules" class="configrule">
$cfg['Servers'][$i]['AllowDeny']['rules']</a> configuration
directives.</li>
<li>Unlike cookie and http, does not require a user to log in when first
loading the phpMyAdmin site. This is by design but could allow any
user to access your installation. Use of some restriction method is
suggested, perhaps a <a href="#glossary"><em>.htaccess</em></a> file with the
HTTP-AUTH directive or disallowing incoming HTTP requests at
one’s router or firewall will suffice (both of which
are beyond the scope of this manual but easily searchable with Google).</li>
</ul>
<h4 id="swekey">Swekey authentication</h4>
<p>
The Swekey is a low cost authentication USB key that can be used in
web applications.<br /><br />
When Swekey authentication is activated, phpMyAdmin requires the
users's Swekey to be plugged before entering the login page (currently
supported for cookie authentication mode only). Swekey Authentication is
disabled by default.<br /><br />
To enable it, add the following line to <code>config.inc.php</code>:
</p>
<pre>
$cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey.conf';
</pre>
<p>
You then have to create the <code>swekey.conf</code> file that will associate
each user with their Swekey Id. It is important to place this file outside
of your web server's document root (in the example, it is located in <code>/etc</code>). A self documented sample file is provided
in the <code>examples</code> directory. Feel free to use it with your own
users' information.<br /><br />
If you want to purchase a Swekey please visit
<a href="http://phpmyadmin.net/auth_key">http://phpmyadmin.net/auth_key</a>
since this link provides funding for phpMyAdmin.
</p>
<!-- CONFIGURATION -->
<h2 id="config">Configuration</h2>
<p> <span class="important">Warning for <abbr title="Apple Macintosh">Mac</abbr>
users:</span> PHP does not seem to like
<abbr title="Apple Macintosh">Mac</abbr> end of lines character
("<code>\r</code>"). So ensure you choose the option that allows to use
the *nix end of line character ("<code>\n</code>") in your text editor
before saving a script you have modified.</p>
<p> <span class="important">Configuration note:</span>
Almost all configurable data is placed in <code>config.inc.php</code>. If this file
does not exist, please refer to the <a href="#setup">Quick install</a>
section to create one. This file only needs to contain the parameters you want to
change from their corresponding default value in
<code>libraries/config.default.php</code>.</p>
<p> The parameters which relate to design (like colors) are placed in
<code>themes/themename/layout.inc.php</code>. You might also want to create
<em>config.footer.inc.php</em> and <em>config.header.inc.php</em> files to add
your site specific code to be included on start and end of each page.</p>
<dl><dt id="cfg_PmaAbsoluteUri">$cfg['PmaAbsoluteUri'] string</dt>
<dd>Sets here the complete <abbr title="Uniform Resource Locator">URL</abbr>
(with full path) to your phpMyAdmin installation's directory.
E.g. <code>http://www.your_web.net/path_to_your_phpMyAdmin_directory/</code>.
Note also that the <abbr title="Uniform Resource Locator">URL</abbr> on
some web servers are case–sensitive.
Don’t forget the trailing slash at the end.<br /><br />
Starting with version 2.3.0, it is advisable to try leaving this
blank. In most cases phpMyAdmin automatically detects the proper
setting. Users of port forwarding will need to set PmaAbsoluteUri (<a
href="https://sourceforge.net/tracker/index.php?func=detail&aid=1340187&group_id=23067&atid=377409">more info</a>).
A good test is to browse a table, edit a row and save it. There should
be an error message if phpMyAdmin is having trouble auto–detecting
the correct value. If you get an error that this must be set or if
the autodetect code fails to detect your path, please post a bug
report on our bug tracker so we can improve the code.</dd>
<dt id="cfg_PmaNoRelation_DisableWarning">$cfg['PmaNoRelation_DisableWarning'] boolean</dt>
<dd>Starting with version 2.3.0 phpMyAdmin offers a lot of features to work
with master / foreign – tables (see
<a href="#pmadb" class="configrule">$cfg['Servers'][$i]['pmadb']</a>).
<br />
If you tried to set this up and it does not work for you, have a look on
the "Structure" page of one database where you would like to
use it. You will find a link that will analyze why those features have
been disabled.<br />
If you do not want to use those features set this variable to
<code>TRUE</code> to stop this message from appearing.</dd>
<dt id="cfg_SuhosinDisableWarning">$cfg['SuhosinDisableWarning'] boolean</dt>
<dd>A warning is displayed on the main page if Suhosin is detected.
You can set this parameter to <code>TRUE</code> to stop this message
from appearing.</dd>
<dt id="cfg_McryptDisableWarning">$cfg['McryptDisableWarning'] boolean</dt>
<dd>Disable the default warning that is displayed if mcrypt is missing for
cookie authentication.
You can set this parameter to <code>TRUE</code> to stop this message
from appearing.</dd>
<dt id="cfg_TranslationWarningThreshold">$cfg['TranslationWarningThreshold'] integer</dt>
<dd>Show warning about incomplete translations on certain threshold.</dd>
<dt id="cfg_AllowThirdPartyFraming">$cfg['AllowThirdPartyFraming'] boolean</dt>
<dd>Setting this to <code>true</code> allows a page located on a different
domain to call phpMyAdmin inside a frame, and is a potential security
hole allowing cross-frame scripting attacks.</dd>
<dt id="cfg_blowfish_secret">$cfg['blowfish_secret'] string</dt>
<dd>The "cookie" auth_type uses blowfish
algorithm to encrypt the password.<br />
If you are using the "cookie" auth_type, enter here a random
passphrase of your choice. It will be used internally by the blowfish
algorithm: you won’t be prompted for this passphrase. There is
no maximum length for this secret.<br /><br />
Since version 3.1.0 phpMyAdmin can generate this on the fly, but it
makes a bit weaker security as this generated secret is stored in
session and furthermore it makes impossible to recall user name from
cookie.</dd>
<dt id="cfg_Servers">$cfg['Servers'] array</dt>
<dd>Since version 1.4.2, phpMyAdmin supports the administration of multiple
MySQL servers. Therefore, a
<a href="#cfg_Servers" class="configrule">$cfg['Servers']</a>-array has
been added which contains the login information for the different servers.
The first
<a href="#cfg_Servers_host" class="configrule">$cfg['Servers'][$i]['host']</a>
contains the hostname of the first server, the second
<a href="#cfg_Servers_host" class="configrule">$cfg['Servers'][$i]['host']</a>
the hostname of the second server, etc. In
<code>./libraries/config.default.php</code>, there is only one section for
server definition, however you can put as many as you need in
<code>./config.inc.php</code>, copy that block or needed parts (you don't
have to define all settings, just those you need to change).</dd>
<dt id="cfg_Servers_host">$cfg['Servers'][$i]['host'] string</dt>
<dd>The hostname or <abbr title="Internet Protocol">IP</abbr> address of your
$i-th MySQL-server. E.g. localhost.</dd>
<dt id="cfg_Servers_port">$cfg['Servers'][$i]['port'] string</dt>
<dd>The port-number of your $i-th MySQL-server. Default is 3306 (leave
blank). If you use "localhost" as the hostname, MySQL
ignores this port number and connects with the socket, so if you want
to connect to a port different from the default port, use
"127.0.0.1" or the real hostname in
<a href="#cfg_Servers_host" class="configrule">$cfg['Servers'][$i]['host']</a>.
</dd>
<dt id="cfg_Servers_socket">$cfg['Servers'][$i]['socket'] string</dt>
<dd>The path to the socket to use. Leave blank for default.<br />
To determine the correct socket, check your MySQL configuration or, using the
<code>mysql</code> command–line client, issue the <code>status</code> command.
Among the resulting information displayed will be the socket used.</dd>
<dt id="cfg_Servers_ssl">$cfg['Servers'][$i]['ssl'] boolean</dt>
<dd>Whether to enable SSL for connection to MySQL server.
</dd>
<dt id="cfg_Servers_connect_type">$cfg['Servers'][$i]['connect_type'] string</dt>
<dd>What type connection to use with the MySQL server. Your options are
<code>'socket'</code> and <code>'tcp'</code>. It defaults to 'tcp' as that
is nearly guaranteed to be available on all MySQL servers, while
sockets are not supported on some platforms.<br /><br />
To use the socket mode, your MySQL server must be on the same machine
as the Web server.</dd>
<dt id="cfg_Servers_extension">$cfg['Servers'][$i]['extension'] string</dt>
<dd>What php MySQL extension to use for the connection. Valid options are:
<br /><br />
<code><em>mysql</em></code> :
The classic MySQL extension.<br /><br />
<code><em>mysqli</em></code> :
The improved MySQL extension. This extension became available
with PHP 5.0.0 and is the recommended way to connect to a server
running MySQL 4.1.x or newer.</dd>
<dt id="cfg_Servers_compress">$cfg['Servers'][$i]['compress'] boolean</dt>
<dd>Whether to use a compressed protocol for the MySQL server connection
or not (experimental).</dd>
<dt id="controlhost">
<span id="cfg_Servers_controlhost">$cfg['Servers'][$i]['controlhost']</span> string<br />
</dt>
<dd>Permits to use an alternate host to hold the configuration storage
data.</dd>
<dt id="controluser">
<span id="cfg_Servers_controluser">$cfg['Servers'][$i]['controluser']</span> string<br />
<span id="cfg_Servers_controlpass">$cfg['Servers'][$i]['controlpass']</span> string
</dt>
<dd>This special account is used for 2 distinct purposes: to make possible
all relational features (see
<a href="#pmadb" class="configrule">$cfg['Servers'][$i]['pmadb']</a>)
and, for a MySQL server running with
<code>--skip-show-database</code>, to enable a multi-user installation
(<abbr title="HyperText Transfer Protocol">HTTP</abbr> or cookie
authentication mode).<br /><br />
When using <abbr title="HyperText Transfer Protocol">HTTP</abbr> or
cookie authentication modes (or 'config'
authentication mode since phpMyAdmin 2.2.1), you need to supply the
details of a MySQL account that has <code>SELECT</code> privilege on the
<em>mysql.user (all columns except "Password")</em>,
<em>mysql.db (all columns)</em> and <em>mysql.tables_priv (all columns
except "Grantor" and "Timestamp") </em>tables.
This account is used to check what databases the user will see at
login.<br />
Please see the <a href="#setup">install section</a> on
"Using authentication modes" for more information.<br /><br />
In phpMyAdmin versions before 2.2.5, those were called
"stduser/stdpass".</dd>
<dt id="cfg_Servers_auth_type">$cfg['Servers'][$i]['auth_type'] string
<code>['<abbr title="HyperText Transfer Protocol">HTTP</abbr>'|'http'|'cookie'|'config'|'signon']</code></dt>
<dd>Whether config or cookie or
<abbr title="HyperText Transfer Protocol">HTTP</abbr> or signon authentication
should be used for this server.
<ul><li>'config' authentication (<code>$auth_type = 'config'</code>)
is the plain old way: username and password are stored in
<em>config.inc.php</em>.</li>
<li>'cookie' authentication mode
(<code>$auth_type = 'cookie'</code>) as introduced in
2.2.3 allows you to log in as any valid MySQL user with the
help of cookies. Username and password are stored in
cookies during the session and password is deleted when it
ends. This can also allow you to log in in arbitrary server if
<code><a href="#AllowArbitraryServer" class="configrule">$cfg['AllowArbitraryServer']</a></code> enabled.
</li>
<li>'<abbr title="HyperText Transfer Protocol">HTTP</abbr>' authentication (was called 'advanced' in previous versions and can be written also as 'http')
(<code>$auth_type = '<abbr title="HyperText Transfer Protocol">HTTP</abbr>'</code>) as introduced in 1.3.0
allows you to log in as any valid MySQL user via HTTP-Auth.</li>
<li>'signon' authentication mode
(<code>$auth_type = 'signon'</code>)
as introduced in 2.10.0 allows you to log in from prepared PHP
session data or using supplied PHP script. This is useful for implementing single signon
from another application.
Sample way how to seed session is in signon example: <code>examples/signon.php</code>.
There is also alternative example using OpenID - <code>examples/openid.php</code> and
example for scripts based solution - <code>examples/signon-script.php</code>.
You need to
configure <a href="#cfg_Servers_SignonSession"
class="configrule">session name</a> or <a href="#cfg_Servers_SignonScript"
class="configrule">script to be executed</a> and <a
href="#cfg_Servers_SignonURL" class="configrule">signon
<abbr title="Uniform Resource Locator">URL</abbr></a> to use
this authentication method.</li>
</ul>
Please see the <a href="#setup">install section</a> on "Using authentication modes"
for more information.
</dd>
<dt id="servers_auth_http_realm">
<span id="cfg_Servers_auth_http_realm">$cfg['Servers'][$i]['auth_http_realm']</span> string<br />
</dt>
<dd>
When using auth_type = '<abbr title="HyperText Transfer Protocol">HTTP</abbr>', this field allows to define a custom
<abbr title="HyperText Transfer Protocol">HTTP</abbr> Basic Auth Realm which will be displayed to the user. If not explicitly
specified in your configuration, a string combined of "phpMyAdmin " and either
<a href="#cfg_Servers_verbose" class="configrule">$cfg['Servers'][$i]['verbose']</a>
or <a href="#cfg_Servers_host" class="configrule">$cfg['Servers'][$i]['host']</a> will be used.
</dd>
<dt id="servers_auth_swekey_config">
<span id="cfg_Servers_auth_swekey_config">$cfg['Servers'][$i]['auth_swekey_config']</span> string<br />
</dt>
<dd>
The name of the file containing <a href="#swekey">Swekey</a> ids and login
names for hardware authentication. Leave empty to deactivate this feature.
</dd>
<dt id="servers_user">
<span id="cfg_Servers_user">$cfg['Servers'][$i]['user']</span> string<br />
<span id="cfg_Servers_password">$cfg['Servers'][$i]['password']</span> string
</dt>
<dd>
When using auth_type = 'config', this is the user/password-pair
which phpMyAdmin will use to connect to the
MySQL server. This user/password pair is not needed when <abbr title="HyperText Transfer Protocol">HTTP</abbr> or
cookie authentication is used and should be empty.</dd>
<dt id="servers_nopassword">
<span
id="cfg_Servers_nopassword">$cfg['Servers'][$i]['nopassword']</span> boolean
</dt>
<dd>
Allow attempt to log in without password when a login with password
fails. This can be used together with http authentication, when
authentication is done some other way and phpMyAdmin gets user name
from auth and uses empty password for connecting to MySQL. Password
login is still tried first, but as fallback, no password method is
tried.</dd>
<dt id="servers_only_db">
<span id="cfg_Servers_only_db">$cfg['Servers'][$i]['only_db']</span> string or array
</dt>
<dd>
If set to a (an array of) database name(s), only this (these) database(s)
will be shown to the user. Since phpMyAdmin 2.2.1, this/these
database(s) name(s) may contain MySQL wildcards characters
("_" and "%"): if you want to use literal instances
of these characters, escape them (I.E. use <code>'my\_db'</code> and not
<code>'my_db'</code>).<br />
This setting is an efficient way to lower the server load since the
latter does not need to send MySQL requests to build the available
database list. But <span class="important">it does not replace the
privileges rules of the MySQL database server</span>. If set, it just
means only these databases will be displayed but
<span class="important">not that all other databases can't be used.</span>
<br /><br />
An example of using more that one database:
<code>$cfg['Servers'][$i]['only_db'] = array('db1', 'db2');</code>
<br /><br />
As of phpMyAdmin 2.5.5 the order inside the array is used for sorting the
databases in the left frame, so that you can individually arrange your databases.<br />
If you want to have certain databases at the top, but don't care about the others, you do not
need to specify all other databases. Use:
<code>$cfg['Servers'][$i]['only_db'] = array('db3', 'db4', '*');</code>
instead to tell phpMyAdmin that it should display db3 and db4 on top, and the rest in alphabetic
order.</dd>
<dt><span id="cfg_Servers_hide_db">$cfg['Servers'][$i]['hide_db']</span> string
</dt>
<dd>Regular expression for hiding some databases from unprivileged users.
This only hides them
from listing, but a user is still able to access them (using, for example,
the SQL query area). To limit access, use the MySQL privilege system.
<br /><br />
For example, to hide all databases starting with the letter "a", use<br />
<pre>$cfg['Servers'][$i]['hide_db'] = '^a';</pre>
and to hide both "db1" and "db2" use <br />
<pre>$cfg['Servers'][$i]['hide_db'] = '^(db1|db2)$';</pre>
More information on regular expressions can be found in the
<a href="http://php.net/manual/en/reference.pcre.pattern.syntax.php">
PCRE pattern syntax</a> portion of the PHP reference manual.
</dd>
<dt id="cfg_Servers_verbose">$cfg['Servers'][$i]['verbose'] string</dt>
<dd>Only useful when using phpMyAdmin with multiple server entries. If set,
this string will be displayed instead of the hostname in the pull-down
menu on the main page. This can be useful if you want to show only
certain databases on your system, for example. For HTTP auth, all
non-US-ASCII characters will be stripped.</dd>
<dt id="pmadb">
<span id="cfg_Servers_pmadb">$cfg['Servers'][$i]['pmadb']</span> string
</dt>
<dd>The name of the database containing the phpMyAdmin configuration storage.
<br /><br />
See the <a href="#linked-tables">phpMyAdmin configuration storage</a>
section in this document to see the benefits of this feature,
and for a quick way of creating this database and the needed tables.
<br /><br />
If you are the only user of this phpMyAdmin installation, you can
use your current database to store those special tables; in this
case, just put your current database name in
<code>$cfg['Servers'][$i]['pmadb']</code>. For a multi-user installation,
set this parameter to the name of your central database containing
the phpMyAdmin configuration storage.</dd>
<dt id="bookmark">
<span id="cfg_Servers_bookmarktable">$cfg['Servers'][$i]['bookmarktable']</span> string
</dt>
<dd>Since release 2.2.0 phpMyAdmin allows users to bookmark queries. This can be
useful for queries you often run.<br /><br />
To allow the usage of this functionality:
<ul><li>set up <a href="#pmadb">pmadb</a> and the phpMyAdmin configuration storage</li>
<li>enter the table name in
<code>$cfg['Servers'][$i]['bookmarktable']</code></li>
</ul>
</dd>
<dt id="relation">
<span id="cfg_Servers_relation">$cfg['Servers'][$i]['relation']</span> string
</dt>
<dd>Since release 2.2.4 you can describe, in a special 'relation' table,
which column is a key in another table (a foreign key). phpMyAdmin
currently uses this to
<ul><li>make clickable, when you browse the master table, the data values
that point to the foreign table;</li>
<li>display in an optional tool-tip the "display column"
when browsing the master table, if you move the mouse to a column
containing a foreign key (use also the 'table_info' table);<br />
(see <a href="#faqdisplay"><abbr title="Frequently Asked Questions">
FAQ</abbr> 6.7</a>)</li>
<li>in edit/insert mode, display a drop-down list of possible foreign
keys (key value and "display column" are shown)<br />
(see <a href="#faq6_21"><abbr title="Frequently Asked Questions">
FAQ</abbr> 6.21</a>)</li>
<li>display links on the table properties page, to check referential
integrity (display missing foreign keys) for each described key;
</li>
<li>in query-by-example, create automatic joins (see <a href="#faq6_6">
<abbr title="Frequently Asked Questions">FAQ</abbr> 6.6</a>)</li>
<li>enable you to get a <abbr title="Portable Document Format">PDF</abbr>
schema of your database (also uses the table_coords table).</li>
</ul>
The keys can be numeric or character.<br /><br />
To allow the usage of this functionality:
<ul><li>set up <a href="#pmadb">pmadb</a> and the phpMyAdmin
configuration storage</li>
<li>put the relation table name in
<code>$cfg['Servers'][$i]['relation']</code></li>
<li>now as normal user open phpMyAdmin and for each one of your
tables where you want to use this feature, click
"Structure/Relation view/" and choose foreign
columns.
</li>
</ul>
Please note that in the current version, <code>master_db</code>
must be the same as <code>foreign_db</code>. Those columns have been put in
future development of the cross-db relations.
</dd>
<dt id="table_info">
<span id="cfg_Servers_table_info">$cfg['Servers'][$i]['table_info']</span> string
</dt>
<dd>
Since release 2.3.0 you can describe, in a special 'table_info'
table, which column is to be displayed as a tool-tip when moving the
cursor over the corresponding key.<br />
This configuration variable will hold the name of this special
table. To allow the usage of this functionality:
<ul><li>set up <a href="#pmadb">pmadb</a> and the phpMyAdmin configuration storage</li>
<li>put the table name in
<code>$cfg['Servers'][$i]['table_info']</code> (e.g.
'pma_table_info')</li>
<li>then for each table where you want to use this feature,
click "Structure/Relation view/Choose column to display"
to choose the column.</li>
</ul>
Usage tip: <a href="#faqdisplay">Display column</a>.
</dd>
<dt id="table_coords">
<span id="cfg_Servers_table_coords">$cfg['Servers'][$i]['table_coords']</span> string<br />
<span id="cfg_Servers_pdf_pages">$cfg['Servers'][$i]['pdf_pages']</span> string
</dt>
<dd>Since release 2.3.0 you can have phpMyAdmin create
<abbr title="Portable Document Format">PDF</abbr> pages showing
the relations between your tables. To do this it needs two tables
"pdf_pages" (storing information about the available
<abbr title="Portable Document Format">PDF</abbr>
pages) and "table_coords" (storing coordinates where each
table will be placed on a <abbr title="Portable Document Format">PDF</abbr>
schema output).<br /><br />
You must be using the "relation" feature.<br /><br />
To allow the usage of this functionality:
<ul><li>set up <a href="#pmadb">pmadb</a> and the phpMyAdmin configuration storage</li>
<li>put the correct table names in
<code>$cfg['Servers'][$i]['table_coords']</code> and
<code>$cfg['Servers'][$i]['pdf_pages']</code></li>
</ul>
Usage tips: <a href="#faqpdf"><abbr title="Portable Document Format">PDF</abbr> output</a>.
</dd>
<dt id="col_com">
<span id="cfg_Servers_column_info">$cfg['Servers'][$i]['column_info']</span> string
</dt>
<dd><!-- This part requires a content update! -->