-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathDocumentation.txt
3798 lines (3160 loc) · 176 KB
/
Documentation.txt
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
phpMyAdmin 3.5.2 Documentation
* Top
* Requirements
* Introduction
* Installation
* Setup script
* Configuration
* Transformations
* FAQ
* Developers
* Copyright
* Credits
* Glossary
* phpMyAdmin homepage
* SourceForge phpMyAdmin project page
* Official phpMyAdmin wiki
* Git repositories on Github
* Local documents:
+ Version history: ChangeLog
+ License: LICENSE
Requirements
* PHP
+ You need PHP 5.2.0 or newer, with session support (see FAQ 1.31) , the
Standard PHP Library (SPL) extension and JSON support.
+ To support uploading of ZIP files, you need the PHP zip extension.
+ For proper support of multibyte strings (eg. UTF-8, which is currently
the default), you should install the mbstring and ctype extensions.
+ You need GD2 support in PHP to display inline thumbnails of JPEGs
("image/jpeg: inline") with their original aspect ratio
+ When using the "cookie" authentication method, the mcrypt extension is
strongly suggested for most users and is required for 64?bit machines.
Not using mcrypt will cause phpMyAdmin to load pages significantly
slower.
+ To support upload progress bars, see FAQ 2.9.
+ To support BLOB streaming, see PHP and MySQL requirements in FAQ 6.25.
+ To support XML and Open Document Spreadsheet importing, you need PHP
5.2.17 or newer and the libxml extension.
* MySQL 5.0 or newer (details);
* Web browser with cookies enabled.
Introduction
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.
Currently phpMyAdmin can:
* browse and drop databases, tables, views, columns and indexes
* create, copy, drop, rename and alter databases, tables, columns and indexes
* maintenance server, databases and tables, with proposals on server
configuration
* execute, edit and bookmark any SQL-statement, even batch-queries
* load text files into tables
* create^1 and read dumps of tables
* export^1 data to various formats: CSV, XML, PDF, ISO/IEC 26300 -
OpenDocument Text and Spreadsheet, Word, and L^AT[E]X formats
* import data and MySQL structures from OpenDocument spreadsheets, as well as
XML, CSV, and SQL files
* administer multiple servers
* manage MySQL users and privileges
* check referential integrity in MyISAM tables
* using Query-by-example (QBE), create complex queries automatically
connecting required tables
* create PDF graphics of your Database layout
* search globally in a database or a subset of it
* transform stored data into any format using a set of predefined functions,
like displaying BLOB-data as image or download-link
* track changes on databases, tables and views
* support InnoDB tables and foreign keys (see FAQ 3.6)
* support mysqli, the improved MySQL extension (see FAQ 1.17)
* create, edit, call, export and drop stored procedures and functions
* create, edit, export and drop events and triggers
* communicate in 62 different languages
* synchronize two databases residing on the same as well as remote servers
(see FAQ 9.1)
A word about users:
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.
^1) phpMyAdmin can compress (Zip, GZip -RFC 1952- or Bzip2 formats) dumps and
CSV exports if you use PHP with Zlib support (--with-zlib) and/or Bzip2 support
(--with-bz2). Proper support may also need changes in php.ini.
Installation
1. Quick Install
2. Setup script usage
3. phpMyAdmin configuration storage
4. Upgrading from an older version
5. Using authentication modes
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.
Warning for Mac users:
if you are on a Mac OS version before OS X, StuffIt unstuffs with Mac formats.
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 Mac-style end of
lines character ("\r").
Quick Install
1. 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 phpMyAdmin-x.x.x-all-languages.tar.gz.
2. Untar or unzip the distribution (be sure to unzip the subdirectories): tar
-xzvf phpMyAdmin_x.x.x-all-languages.tar.gz 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.
3. 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 FAQ 4.2 and FAQ 1.26 for suggestions.
4. Now you must configure your installation. There are two methods that can be
used. Traditionally, users have hand-edited a copy of config.inc.php, but
now a wizard-style setup script is provided for those who prefer a
graphical installation. Creating a config.inc.php is still a quick way to
get started and needed for some advanced features.
+ To manually create the file, simply use your text editor to create the
file config.inc.php (you can copy config.sample.inc.php to get minimal
configuration file) in the main (top-level) phpMyAdmin directory (the
one that contains index.php). phpMyAdmin first loads libraries/
config.default.php and then overrides those values with anything found
in config.inc.php. If the default value is okay for a particular
setting, there is no need to include it in config.inc.php. You'll need
a few directives to get going, a simple configuration may look like
this:
<?php
$cfg['blowfish_secret'] = 'ba17c1ec07d65003'; // use here a value of your choice
$i=0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
?>
Or, if you prefer to not be prompted every time you log in:
<?php
$i=0;
$i++;
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'cbb74bc'; // use here your password
$cfg['Servers'][$i]['auth_type'] = 'config';
?>
For a full explanation of possible configuration values, see the
Configuration Section of this document.
+ Instead of manually editing config.inc.php, you can use the Setup
Script. First you must manually create a folder config in the
phpMyAdmin directory. This is a security measure. On a Linux/Unix
system you can use the following commands:
cd phpMyAdmin
mkdir config # create directory for saving
chmod o+rw config # give it world writable permissions
And to edit an existing configuration, copy it over first:
cp config.inc.php config/ # copy current configuration for editing
chmod o+w config/config.inc.php # give it world writable permissions
On other platforms, simply create the folder and ensure that your web
server has read and write access to it. FAQ 1.26 can help with this.
Next, open setup/ in your browser. Note that changes are not saved to
disk until explicitly choose Save from the Configuration area of the
screen. Normally the script saves the new config.inc.php to the config/
directory, but if the webserver does not have the proper permissions
you may see the error "Cannot load or save configuration." Ensure that
the config/ directory exists and has the proper permissions - or use
the Download link to save the config file locally and upload (via FTP
or some similar means) to the proper location.
Once the file has been saved, it must be moved out of the config/
directory and the permissions must be reset, again as a security
measure:
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
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.
5. If you are using the auth_type "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 .htaccess file or switch to using auth_type cookie or http. See the
multi?user sub?section of this FAQ for additional information, especially
FAQ 4.4.
6. Open the main phpMyAdmin directory in your browser. phpMyAdmin should now
display a welcome screen and your databases, or a login dialog if using
HTTP or cookie authentication mode.
7. You should deny access to the ./libraries and ./setup/lib subfolders in
your webserver configuration. For Apache you can use supplied .htaccess
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.
8. 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 robots.txt file in root of your webserver or limit access by web
server configuration, see FAQ 1.42.
phpMyAdmin configuration storage
For a whole set of new features (bookmarks, comments, SQL-history, tracking
mechanism, PDF-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).
Please look at your ./examples/ directory, where you should find a file called
create_tables.sql. (If you are using a Windows server, pay special attention to
FAQ 1.23).
If you already had this infrastructure and upgraded to MySQL 4.1.2 or newer,
please use ./examples/upgrade_tables_mysql_4_1_2+.sql and then create new
tables by importing ./examples/create_tables.sql.
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.
After having imported the ./examples/create_tables.sql file, you should specify
the table names in your ./config.inc.php file. The directives used for that can
be found in the Configuration section. You will also need to have a controluser
with the proper rights to those tables (see section Using authentication modes
below).
Upgrading from an older version
Simply copy ./config.inc.php 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; in particular, the definition of
$cfg['AttributeTypes'] has changed so you better remove it from your file and
just use the default one. For compatibility with PHP 6, remove a
set_magic_quotes_runtime(0); statement that you might find near the end of your
configuration file.
You should not copy libraries/config.default.php over config.inc.php because
the default configuration file is version-specific.
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 SQL script found in examples/upgrade_tables_mysql_4_1_2+.sql.
Using authentication modes
* HTTP and cookie authentication modes are recommended in a multi-user
environment where you want to give users access to their own database and
don't want them to play around with others.
Nevertheless be aware that MS Internet Explorer seems to be really buggy
about cookies, at least till version 6.
Even in a single-user environment, you might prefer to use HTTP or cookie
mode so that your user/password pair are not in clear in the configuration
file.
* HTTP 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 controluser).
However, keep in mind that the password travels in plain text, unless you
are using the HTTPS protocol.
In cookie mode, the password is stored, encrypted with the blowfish
algorithm, in a temporary cookie.
* Note: this section is only applicable if your MySQL server is running with
--skip-show-database.
For 'HTTP' and 'cookie' modes, phpMyAdmin needs a controluser that has only
the SELECT privilege on the `mysql`.`user` (all columns except `Password`),
`mysql`.`db` (all columns), `mysql`.`host` (all columns) and `mysql`.
`tables_priv` (all columns except `Grantor` and `Timestamp`) tables.
You must specify the details for the controluser in the config.inc.php file
under the $cfg['Servers'][$i]['controluser'] and $cfg['Servers'][$i]
['controlpass'] settings.
The following example assumes you want to use pma as the controluser and
pmapass as the controlpass, but this is only an example: use something else
in your file! Input these statements from the phpMyAdmin SQL Query window
or mysql command?line client.
Of course you have to replace localhost with the webserver's host if it's
not the same as the MySQL server's one.
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';
If you want to use the many new relation and bookmark features:
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
(this of course requires that your phpMyAdmin configuration storage be set
up).
* Then each of the true 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).
For example, to grant the user real_user with all privileges on the
database user_base:
GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';
What the user may now do is controlled entirely by the MySQL user
management system.
With HTTP or cookie authentication mode, you don't need to fill the user/
password fields inside the $cfg['Servers'] array.
'HTTP' authentication mode
* Uses HTTP Basic authentication method and allows you to log in as any valid
MySQL user.
* Is supported with most PHP configurations. For IIS (ISAPI) support using
CGI PHP see FAQ 1.32, for using with Apache CGI see FAQ 1.35.
* See also FAQ 4.4 about not using the .htaccess mechanism along with 'HTTP'
authentication mode.
'cookie' authentication mode
* You can use this method as a replacement for the HTTP authentication (for
example, if you're running IIS).
* Obviously, the user must enable cookies in the browser, but this is now a
requirement for all authentication modes.
* With this mode, the user can truly log out of phpMyAdmin and log in back
with the same username.
* If you want to log in to arbitrary server see $cfg['AllowArbitraryServer']
directive.
* As mentioned in the requirements section, having the mcrypt extension will
speed up access considerably, but is not required.
'signon' authentication mode
* This mode is a convenient way of using credentials from another application
to authenticate to phpMyAdmin.
* The other application has to store login information into session data.
* More details in the auth_type section.
'config' authentication mode
* This mode is the less secure one because it requires you to fill the $cfg
['Servers'][$i]['user'] and $cfg['Servers'][$i]['password'] fields (and as
a result, anyone who can read your config.inc.php can discover your
username and password).
But you don't need to setup a "controluser" here: using the $cfg['Servers']
[$i]['only_db'] might be enough.
* In the ISP FAQ section, there is an entry explaining how to protect your
configuration file.
* For additional security in this mode, you may wish to consider the Host
authentication $cfg['Servers'][$i]['AllowDeny']['order'] and $cfg
['Servers'][$i]['AllowDeny']['rules'] configuration directives.
* 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 .htaccess 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).
Swekey authentication
The Swekey is a low cost authentication USB key that can be used in web
applications.
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.
To enable it, add the following line to config.inc.php:
$cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey.conf';
You then have to create the swekey.conf 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 /etc). A self
documented sample file is provided in the examples directory. Feel free to use
it with your own users' information.
If you want to purchase a Swekey please visit http://phpmyadmin.net/auth_key
since this link provides funding for phpMyAdmin.
Configuration
Warning for Mac users: PHP does not seem to like Mac end of lines character ("\
r"). So ensure you choose the option that allows to use the *nix end of line
character ("\n") in your text editor before saving a script you have modified.
Configuration note: Almost all configurable data is placed in config.inc.php.
If this file does not exist, please refer to the Quick install section to
create one. This file only needs to contain the parameters you want to change
from their corresponding default value in libraries/config.default.php.
The parameters which relate to design (like colors) are placed in themes/
themename/layout.inc.php. You might also want to create config.footer.inc.php
and config.header.inc.php files to add your site specific code to be included
on start and end of each page.
$cfg['PmaAbsoluteUri'] string
Sets here the complete URL (with full path) to your phpMyAdmin
installation's directory. E.g. http://www.your_web.net/
path_to_your_phpMyAdmin_directory/. Note also that the URL on some web
servers are case?sensitive. Don?t forget the trailing slash at the end.
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 (more info). 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.
$cfg['PmaNoRelation_DisableWarning'] boolean
Starting with version 2.3.0 phpMyAdmin offers a lot of features to work
with master / foreign ? tables (see $cfg['Servers'][$i]['pmadb']).
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.
If you do not want to use those features set this variable to TRUE to stop
this message from appearing.
$cfg['SuhosinDisableWarning'] boolean
A warning is displayed on the main page if Suhosin is detected. You can set
this parameter to TRUE to stop this message from appearing.
$cfg['McryptDisableWarning'] boolean
Disable the default warning that is displayed if mcrypt is missing for
cookie authentication. You can set this parameter to TRUE to stop this
message from appearing.
$cfg['TranslationWarningThreshold'] integer
Show warning about incomplete translations on certain threshold.
$cfg['AllowThirdPartyFraming'] boolean
Setting this to true 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.
$cfg['blowfish_secret'] string
The "cookie" auth_type uses blowfish algorithm to encrypt the password.
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.
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.
$cfg['Servers'] array
Since version 1.4.2, phpMyAdmin supports the administration of multiple
MySQL servers. Therefore, a $cfg['Servers']-array has been added which
contains the login information for the different servers. The first $cfg
['Servers'][$i]['host'] contains the hostname of the first server, the
second $cfg['Servers'][$i]['host'] the hostname of the second server, etc.
In ./libraries/config.default.php, there is only one section for server
definition, however you can put as many as you need in ./config.inc.php,
copy that block or needed parts (you don't have to define all settings,
just those you need to change).
$cfg['Servers'][$i]['host'] string
The hostname or IP address of your $i-th MySQL-server. E.g. localhost.
$cfg['Servers'][$i]['port'] string
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 $cfg
['Servers'][$i]['host'].
$cfg['Servers'][$i]['socket'] string
The path to the socket to use. Leave blank for default.
To determine the correct socket, check your MySQL configuration or, using
the mysql command?line client, issue the status command. Among the
resulting information displayed will be the socket used.
$cfg['Servers'][$i]['ssl'] boolean
Whether to enable SSL for connection to MySQL server.
$cfg['Servers'][$i]['connect_type'] string
What type connection to use with the MySQL server. Your options are
'socket' and 'tcp'. It defaults to 'tcp' as that is nearly guaranteed to be
available on all MySQL servers, while sockets are not supported on some
platforms.
To use the socket mode, your MySQL server must be on the same machine as
the Web server.
$cfg['Servers'][$i]['extension'] string
What php MySQL extension to use for the connection. Valid options are:
mysql : The classic MySQL extension.
mysqli : 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.
$cfg['Servers'][$i]['compress'] boolean
Whether to use a compressed protocol for the MySQL server connection or not
(experimental).
$cfg['Servers'][$i]['controlhost'] string
Permits to use an alternate host to hold the configuration storage data.
$cfg['Servers'][$i]['controluser'] string
$cfg['Servers'][$i]['controlpass'] string
This special account is used for 2 distinct purposes: to make possible all
relational features (see $cfg['Servers'][$i]['pmadb']) and, for a MySQL
server running with --skip-show-database, to enable a multi-user
installation (HTTP or cookie authentication mode).
When using HTTP 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 SELECT privilege on the mysql.user (all columns except
"Password"), mysql.db (all columns) and mysql.tables_priv (all columns
except "Grantor" and "Timestamp") tables. This account is used to check
what databases the user will see at login.
Please see the install section on "Using authentication modes" for more
information.
In phpMyAdmin versions before 2.2.5, those were called "stduser/stdpass".
$cfg['Servers'][$i]['auth_type'] string ['HTTP'|'http'|'cookie'|'config'|
'signon']
Whether config or cookie or HTTP or signon authentication should be used
for this server.
+ 'config' authentication ($auth_type = 'config') is the plain old way:
username and password are stored in config.inc.php.
+ 'cookie' authentication mode ($auth_type = 'cookie') 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 $cfg['AllowArbitraryServer'] enabled.
+ 'HTTP' authentication (was called 'advanced' in previous versions and
can be written also as 'http') ($auth_type = 'HTTP') as introduced in
1.3.0 allows you to log in as any valid MySQL user via HTTP-Auth.
+ 'signon' authentication mode ($auth_type = 'signon') 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: examples/signon.php. There is also alternative example using
OpenID - examples/openid.php and example for scripts based solution -
examples/signon-script.php. You need to configure session name or
script to be executed and signon URL to use this authentication method.
Please see the install section on "Using authentication modes" for more
information.
$cfg['Servers'][$i]['auth_http_realm'] string
When using auth_type = 'HTTP', this field allows to define a custom HTTP
Basic Auth Realm which will be displayed to the user. If not explicitly
specified in your configuration, a string combined of "phpMyAdmin " and
either $cfg['Servers'][$i]['verbose'] or $cfg['Servers'][$i]['host'] will
be used.
$cfg['Servers'][$i]['auth_swekey_config'] string
The name of the file containing Swekey ids and login names for hardware
authentication. Leave empty to deactivate this feature.
$cfg['Servers'][$i]['user'] string
$cfg['Servers'][$i]['password'] string
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 HTTP or cookie authentication is used and should be
empty.
$cfg['Servers'][$i]['nopassword'] boolean
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.
$cfg['Servers'][$i]['only_db'] string or array
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 'my\
_db' and not 'my_db').
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 it does not replace the privileges rules of the MySQL database server.
If set, it just means only these databases will be displayed but not that
all other databases can't be used.
An example of using more that one database: $cfg['Servers'][$i]['only_db']
= array('db1', 'db2');
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.
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: $cfg
['Servers'][$i]['only_db'] = array('db3', 'db4', '*'); instead to tell
phpMyAdmin that it should display db3 and db4 on top, and the rest in
alphabetic order.
$cfg['Servers'][$i]['hide_db'] string
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.
For example, to hide all databases starting with the letter "a", use
$cfg['Servers'][$i]['hide_db'] = '^a';
and to hide both "db1" and "db2" use
$cfg['Servers'][$i]['hide_db'] = '^(db1|db2)$';
More information on regular expressions can be found in the PCRE pattern
syntax portion of the PHP reference manual.
$cfg['Servers'][$i]['verbose'] string
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.
$cfg['Servers'][$i]['pmadb'] string
The name of the database containing the phpMyAdmin configuration storage.
See the phpMyAdmin configuration storage section in this document to see
the benefits of this feature, and for a quick way of creating this database
and the needed tables.
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 $cfg['Servers'][$i]['pmadb']. For a multi-user
installation, set this parameter to the name of your central database
containing the phpMyAdmin configuration storage.
$cfg['Servers'][$i]['bookmarktable'] string
Since release 2.2.0 phpMyAdmin allows users to bookmark queries. This can
be useful for queries you often run.
To allow the usage of this functionality:
+ set up pmadb and the phpMyAdmin configuration storage
+ enter the table name in $cfg['Servers'][$i]['bookmarktable']
$cfg['Servers'][$i]['relation'] string
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
+ make clickable, when you browse the master table, the data values that
point to the foreign table;
+ 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);
(see FAQ 6.7)
+ in edit/insert mode, display a drop-down list of possible foreign keys
(key value and "display column" are shown)
(see FAQ 6.21)
+ display links on the table properties page, to check referential
integrity (display missing foreign keys) for each described key;
+ in query-by-example, create automatic joins (see FAQ 6.6)
+ enable you to get a PDF schema of your database (also uses the
table_coords table).
The keys can be numeric or character.
To allow the usage of this functionality:
+ set up pmadb and the phpMyAdmin configuration storage
+ put the relation table name in $cfg['Servers'][$i]['relation']
+ 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.
Please note that in the current version, master_db must be the same as
foreign_db. Those columns have been put in future development of the
cross-db relations.
$cfg['Servers'][$i]['table_info'] string
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.
This configuration variable will hold the name of this special table. To
allow the usage of this functionality:
+ set up pmadb and the phpMyAdmin configuration storage
+ put the table name in $cfg['Servers'][$i]['table_info'] (e.g.
'pma_table_info')
+ then for each table where you want to use this feature, click
"Structure/Relation view/Choose column to display" to choose the
column.
Usage tip: Display column.
$cfg['Servers'][$i]['table_coords'] string
$cfg['Servers'][$i]['pdf_pages'] string
Since release 2.3.0 you can have phpMyAdmin create PDF pages showing the
relations between your tables. To do this it needs two tables "pdf_pages"
(storing information about the available PDF pages) and "table_coords"
(storing coordinates where each table will be placed on a PDF schema
output).
You must be using the "relation" feature.
To allow the usage of this functionality:
+ set up pmadb and the phpMyAdmin configuration storage
+ put the correct table names in $cfg['Servers'][$i]['table_coords'] and
$cfg['Servers'][$i]['pdf_pages']
Usage tips: PDF output.
$cfg['Servers'][$i]['column_info'] string
Since release 2.3.0 you can store comments to describe each column for each
table. These will then be shown on the "printview".
Starting with release 2.5.0, comments are consequently used on the table
property pages and table browse view, showing up as tool-tips above the
column name (properties page) or embedded within the header of table in
browse view. They can also be shown in a table dump. Please see the
relevant configuration directives later on.
Also new in release 2.5.0 is a MIME-transformation system which is also
based on the following table structure. See Transformations for further
information. To use the MIME-transformation system, your column_info table
has to have the three new columns 'mimetype', 'transformation',
'transformation_options'.
To allow the usage of this functionality:
+ set up pmadb and the phpMyAdmin configuration storage
+ put the table name in $cfg['Servers'][$i]['column_info'] (e.g.
'pma_column_info')
+ to update your PRE-2.5.0 Column_comments Table use this:
ALTER TABLE `pma_column_comments`
ADD `mimetype` VARCHAR( 255 ) NOT NULL,
ADD `transformation` VARCHAR( 255 ) NOT NULL,
ADD `transformation_options` VARCHAR( 255 ) NOT NULL;
and remember that the Variable in config.inc.php has been renamed from
$cfg['Servers'][$i]['column_comments'] to $cfg['Servers'][$i]
['column_info']
$cfg['Servers'][$i]['history'] string
Since release 2.5.0 you can store your SQL history, which means all queries
you entered manually into the phpMyAdmin interface. If you don't want to
use a table-based history, you can use the JavaScript-based history. Using
that, all your history items are deleted when closing the window.
Using $cfg['QueryHistoryMax'] you can specify an amount of history items
you want to have on hold. On every login, this list gets cut to the maximum
amount.
The query history is only available if JavaScript is enabled in your
browser.
To allow the usage of this functionality:
+ set up pmadb and the phpMyAdmin configuration storage
+ put the table name in $cfg['Servers'][$i]['history'] (e.g.
'pma_history')
$cfg['Servers'][$i]['recent'] string
Since release 3.5.0 you can show recently used tables in the left
navigation frame. It helps you to jump across table directly, without the
need to select the database, and then select the table. Using $cfg
['LeftRecentTable'] you can configure the maximum number of recent tables
shown. When you select a table from the list, it will jump to the page
specified in $cfg['LeftDefaultTabTable'].
Without configuring the storage, you can still access the recently used
tables, but it will disappear after you logout.
To allow the usage of this functionality persistently:
+ set up pmadb and the phpMyAdmin configuration storage
+ put the table name in $cfg['Servers'][$i]['recent'] (e.g. 'pma_recent')
$cfg['Servers'][$i]['table_uiprefs'] string
Since release 3.5.0 phpMyAdmin can be configured to remember several things
(sorted column $cfg['RememberSorting'] , column order, and column
visibility from a database table) for browsing tables. Without configuring
the storage, these features still can be used, but the values will
disappear after you logout.
To allow the usage of these functionality persistently:
+ set up pmadb and the phpMyAdmin configuration storage
+ put the table name in $cfg['Servers'][$i]['table_uiprefs'] (e.g.
'pma_table_uiprefs')
$cfg['Servers'][$i]['tracking'] string
Since release 3.3.x a tracking mechanism is available. It helps you to
track every SQL command which is executed by phpMyAdmin. The mechanism
supports logging of data manipulation and data definition statements. After
enabling it you can create versions of tables.
The creation of a version has two effects:
+ phpMyAdmin saves a snapshot of the table, including structure and
indexes.
+ phpMyAdmin logs all commands which change the structure and/or data of
the table and links these commands with the version number.
Of course you can view the tracked changes. On the "Tracking" page a
complete report is available for every version. For the report you can use
filters, for example you can get a list of statements within a date range.
When you want to filter usernames you can enter * for all names or you
enter a list of names separated by ','. In addition you can export the
(filtered) report to a file or to a temporary database.
To allow the usage of this functionality:
+ set up pmadb and the phpMyAdmin configuration storage
+ put the table name in $cfg['Servers'][$i]['tracking'] (e.g.
'pma_tracking')
$cfg['Servers'][$i]['tracking_version_auto_create'] boolean
Whether the tracking mechanism creates versions for tables and views
automatically. Default value is false.
If this is set to true and you create a table or view with
+ CREATE TABLE ...
+ CREATE VIEW ...
and no version exists for it, the mechanism will create a version for you
automatically.
$cfg['Servers'][$i]['tracking_default_statements'] string
Defines the list of statements the auto-creation uses for new versions.
Default value is
CREATE TABLE,ALTER TABLE,DROP TABLE,RENAME TABLE,
CREATE INDEX,DROP INDEX,
INSERT,UPDATE,DELETE,TRUNCATE,REPLACE,
CREATE VIEW,ALTER VIEW,DROP VIEW,
CREATE DATABASE,ALTER DATABASE,DROP DATABASE
$cfg['Servers'][$i]['tracking_add_drop_view'] boolean
Whether a DROP VIEW IF EXISTS statement will be added as first line to the
log when creating a view. Default value is true.
$cfg['Servers'][$i]['tracking_add_drop_table'] boolean
Whether a DROP TABLE IF EXISTS statement will be added as first line to the
log when creating a table. Default value is true.
$cfg['Servers'][$i]['tracking_add_drop_database'] boolean
Whether a DROP DATABASE IF EXISTS statement will be added as first line to
the log when creating a database. Default value is true.
$cfg['Servers'][$i]['userconfig'] string
Since release 3.4.x phpMyAdmin allows users to set most preferences by
themselves and store them in the database.
If you don't allow for storing preferences in pmadb, users can still
personalize phpMyAdmin, but settings will be saved in browser's local
storage, or, it is is unavailable, until the end of session.
To allow the usage of this functionality:
+ set up pmadb and the phpMyAdmin configuration storage
+ put the table name in $cfg['Servers'][$i]['userconfig']
$cfg['Servers'][$i]['designer_coords'] string
Since release 2.10.0 a Designer interface is available; it permits to
visually manage the relations.
To allow the usage of this functionality:
+ set up pmadb and the phpMyAdmin configuration storage
+ put the table name in $cfg['Servers'][$i]['designer_coords'] (e.g.
'pma_designer_coords')
$cfg['Servers'][$i]['MaxTableUiprefs'] integer
Maximum number of rows saved in $cfg['Servers'][$i]['table_uiprefs'] table.
When tables are dropped or renamed, table_uiprefs may contain invalid data
(referring to tables which no longer exist).
We only keep this number of newest rows in table_uiprefs and automatically
delete older rows.
$cfg['Servers'][$i]['verbose_check'] boolean
Because release 2.5.0 introduced the new MIME-transformation support, the
column_info table got enhanced with three new columns. If the above
variable is set to TRUE (default) phpMyAdmin will check if you have the
latest table structure available. If not, it will emit a warning to the
superuser.
You can disable this checking behavior by setting the variable to false,
which should offer a performance increase.
Recommended to set to FALSE, when you are sure, your table structure is up
to date.
$cfg['Servers'][$i]['AllowRoot'] boolean
Whether to allow root access. This is just a shortcut for the AllowDeny
rules below.
$cfg['Servers'][$i]['AllowNoPassword'] boolean
Whether to allow logins without a password. The default value of false for
this parameter prevents unintended access to a MySQL server with was left
with an empty password for root or on which an anonymous (blank) user is
defined.
$cfg['Servers'][$i]['AllowDeny']['order'] string
If your rule order is empty, then IP authorization is disabled.
If your rule order is set to 'deny,allow' then the system applies all deny
rules followed by allow rules. Access is allowed by default. Any client
which does not match a Deny command or does match an Allow command will be
allowed access to the server.
If your rule order is set to 'allow,deny' then the system applies all allow
rules followed by deny rules. Access is denied by default. Any client which
does not match an Allow directive or does match a Deny directive will be
denied access to the server.
If your rule order is set to 'explicit', authorization is performed in a
similar fashion to rule order 'deny,allow', with the added restriction that
your host/username combination must be listed in the allow rules, and not
listed in the deny rules. This is the most secure means of using Allow/Deny
rules, and was available in Apache by specifying allow and deny rules
without setting any order.
Please also see $cfg['TrustedProxies'] for detecting IP address behind
proxies.
$cfg['Servers'][$i]['AllowDeny']['rules'] array of strings
The general format for the rules is as such:
<'allow' | 'deny'> <username> [from] <ipmask>
If you wish to match all users, it is possible to use a '%' as a wildcard
in the username field.
There are a few shortcuts you can use in the ipmask field as well (please
note that those containing SERVER_ADDRESS might not be available on all
webservers):
'all' -> 0.0.0.0/0
'localhost' -> 127.0.0.1/8
'localnetA' -> SERVER_ADDRESS/8
'localnetB' -> SERVER_ADDRESS/16
'localnetC' -> SERVER_ADDRESS/24
Having an empty rule list is equivalent to either using 'allow % from all'
if your rule order is set to 'deny,allow' or 'deny % from all' if your rule
order is set to 'allow,deny' or 'explicit'.
For the IP matching system, the following work:
xxx.xxx.xxx.xxx (an exact IP address)
xxx.xxx.xxx.[yyy-zzz] (an IP address range)
xxx.xxx.xxx.xxx/nn (CIDR, Classless Inter-Domain Routing type IP addresses)
But the following does not work:
xxx.xxx.xxx.xx[yyy-zzz] (partial IP address range)
Also IPv6 addresses are not supported.
$cfg['Servers'][$i]['DisableIS'] boolean
Disable using INFORMATION_SCHEMA to retrieve information (use SHOW commands
instead), because of speed issues when many databases are present.
Currently used in some parts of the code, more to come.
$cfg['Servers'][$i]['ShowDatabasesCommand'] string
On a server with a huge number of databases, the default SHOW DATABASES
command used to fetch the name of available databases will probably be too
slow, so it can be replaced by faster commands (see libraries/
config.default.php for examples).
$cfg['Servers'][$i]['CountTables'] boolean
Whether to count the number of tables for each database when preparing the
list of databases for the navigation frame.
$cfg['Servers'][$i]['SignonScript'] string
Name of PHP script to be sourced and executed to obtain login credentials.
This is alternative approach to session based single signon. The script
needs to provide function get_login_credentials which returns list of
username and password, accepting single parameter of existing username (can
be empty). See examples/signon-script.php for an example.
$cfg['Servers'][$i]['SignonSession'] string
Name of session which will be used for signon authentication method. You
should use something different than phpMyAdmin, because this is session
which phpMyAdmin uses internally. Takes effect only if SignonScript is not
configured.
$cfg['Servers'][$i]['SignonURL'] string
URL where user will be redirected to log in for signon authentication
method. Should be absolute including protocol.
$cfg['Servers'][$i]['LogoutURL'] string
URL where user will be redirected after logout (doesn't affect config
authentication method). Should be absolute including protocol.
$cfg['ServerDefault'] integer
If you have more than one server configured, you can set $cfg
['ServerDefault'] to any one of them to autoconnect to that server when
phpMyAdmin is started, or set it to 0 to be given a list of servers without
logging in.
If you have only one server configured, $cfg['ServerDefault'] MUST be set
to that server.
$cfg['AjaxEnable'] boolean
Defines whether to refresh only parts of certain pages using Ajax
techniques. Applies only where a non-Ajax behavior is possible; for
example, the Designer feature is Ajax-only so this directive does not apply
to it.
$cfg['VersionCheck'] boolean
Enables check for latest versions using javascript on main phpMyAdmin page.
$cfg['MaxDbList'] integer
The maximum number of database names to be displayed in the navigation
frame and the database list.
$cfg['MaxTableList'] integer
The maximum number of table names to be displayed in the main panel's list
(except on the Export page). This limit is also enforced in the navigation
panel when in Light mode.
$cfg['ShowHint'] boolean
Whether or not to show hints (for example, hints when hovering over table
headers).
$cfg['MaxCharactersInDisplayedSQL'] integer
The maximum number of characters when a SQL query is displayed. The default
limit of 1000 should be correct to avoid the display of tons of hexadecimal
codes that represent BLOBs, but some users have real SQL queries that are
longer than 1000 characters. Also, if a query's length exceeds this limit,
this query is not saved in the history.
$cfg['OBGzip'] string/boolean
Defines whether to use GZip output buffering for increased speed in HTTP
transfers.
Set to true/false for enabling/disabling. When set to 'auto' (string),
phpMyAdmin tries to enable output buffering and will automatically disable
it if your browser has some problems with buffering. IE6 with a certain
patch is known to cause data corruption when having enabled buffering.
$cfg['PersistentConnections'] boolean
Whether persistent connections should be used or not. Works with following
extensions:
+ mysql (mysql_pconnect),
+ mysqli (requires PHP 5.3.0 or newer, more information).
$cfg['ForceSSL'] boolean
Whether to force using https while accessing phpMyAdmin.
$cfg['ExecTimeLimit'] integer [number of seconds]
Set the number of seconds a script is allowed to run. If seconds is set to
zero, no time limit is imposed.
This setting is used while importing/exporting dump files and in the
Synchronize feature but has no effect when PHP is running in safe mode.
$cfg['SessionSavePath'] string
Path for storing session data (session_save_path PHP parameter).
$cfg['MemoryLimit'] string [number of bytes]
Set the number of bytes a script is allowed to allocate. If set to zero, no
limit is imposed.
This setting is used while importing/exporting dump files and at some other
places in phpMyAdmin so you definitely don't want to put here a too low