最後更新: 2018-12-07
目錄
- Version
- login 方式
- Disable AJAX popup
- pmadb
- phpMyAdmin 連不同 DB
- Enable PhpMyAdmin 's Extra Features
- HTTP to HTTPS
- Show Full Field
- Doc
Version
- 5.1 # PHP 8.0+
- 4.6 # PHP 5.5+ is required
- 4.5 # PHP 5.5+ is required
- 4.4 # PHP 5.4+ is required
安裝
DL Page
https://www.phpmyadmin.net/downloads/
# All file
https://www.phpmyadmin.net/files/
Install
wget https://files.phpmyadmin.net/phpMyAdmin/4.6.4/phpMyAdmin-4.6.4-english.t...
tar -Jxf phpMyAdmin-4.6.4-english.tar.xz # xz 有更大壓縮比
mv phpMyAdmin-4.6.4-english /usr/share # 保持原目錄結構加 soft link
ln -s /usr/share/phpMyAdmin-4.6.4-english /usr/share/phpMyAdmin
cd /usr/share/phpMyAdmin
cp config.sample.inc.php config.inc.php
$cfg['blowfish_secret'] = ''; // 32 chars long
vi /etc/httpd/conf.d/phpmyadmin.conf
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /pma /usr/share/phpMyAdmin
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
AuthType Basic
AuthName "Restricted Area"
AuthBasicProvider file
AuthUserFile htpasswd
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
#Require ip x.x.x.x
Require valid-user
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
</IfModule>
</Directory>
<Directory /usr/share/phpMyAdmin/setup/>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
</IfModule>
</Directory>
<Directory /usr/share/phpMyAdmin/libraries/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
設定
設定檔
config.inc.php
Default configuration
/usr/share/phpMyAdmin/libraries/config.default.php
login 方式:
/* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; // 要設定好 "$cfg['blowfish_secret']" 才用到 $cfg['LoginCookieValidity'] = 1800;
當一直都出 "The secret passphrase in configuration (blowfish_secret) is too short."
那要 check config.inc.php 是否可以被 apache / nginx read 及 blowfish_secret 要有 32 位長
lang:
# Default language to use, if not browser-defined or user-defined
$cfg['DefaultLang']='en';
# Force: always use this language
$cfg['Lang'] = 'en';
Disable AJAX popup:
$cfg['AjaxEnable'] = false;
ssl
# force using https while accessing phpMyAdmin # Default value: false $cfg['ForceSSL'] = false; # enable SSL for the connection between phpMyAdmin and the MySQL server $cfg['Servers'][$i]['ssl'] = false;
pmadb
refers to the phpMyAdmin configuration storage
used internally by phpMyAdmin for additional features
(such as bookmarking queries and change tracking).
The setting is left empty by default, meaning it is disabled.
config.inc.php
$cfg['Servers'][$i]['pmadb']
pmadb schema
examples/create_tables.sql
DOC
https://wiki.phpmyadmin.net/pma/Configuration_storage
localhost 與 127.0.0.1
Version: phpMyAdmin-4.6.6
Error
mysqli_real_connect(): (HY000/2002): No such file or directory
測試
/usr/share/phpmyadmin/config.inc.php
//$cfg['Servers'][$i]['host'] = 'localhost'; // 此設定連不到 //$cfg['Servers'][$i]['host'] = '127.0.0.1'; // 此設定連到
原因
On Unix, MySQL programs treat the host name localhost specially, in a way that is
likely different from what you expect compared to other network-based programs.
For connections to localhost, MySQL programs attempt to connect to the local server
by using a Unix socket file. This occurs even if a --port or -P option is given to
specify a port number. To ensure that the client makes a TCP/IP connection to the
local server, use --host or -h to specify a host name value of 127.0.0.1, or the IP
address or name of the local server. You can also specify the connection protocol
explicitly, even for localhost, by using the --protocol=TCP option.
解決方案:
grep socket /etc/my.cnf
socket=/var/lib/mysql/mysql.sock
/etc/php.ini
mysqli.default_socket=/var/lib/mysql/mysql.sock
phpMyAdmin 連不同 DB
/**
* First server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
/**
* Second server
*/
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = '172.17.0.2';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
Enable PhpMyAdmin 's Extra Features
[1] 建立 Table 及 User A/C
mysql phpmyadmin -p < /usr/share/phpMyAdmin/sql/create_tables.sql
CREATE USER 'pma'@'localhost' IDENTIFIED BY '***';
GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'pma'@'localhost' WITH GRANT OPTION;
[2] 設定
// leave blank for no X support
$cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = '***'; $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// 在 Home 多了 Appearance Settings (Manage your settings)
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// Save 低某 Table 內 hide 某些 Column
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// Manage your settings -> Navigation panel
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
Nginx Setting
mkdir /etc/nginx/snippets
ln -s /usr/share/phpMyAdmin /usr/share/pma # 如果是透過 yum 安裝
snippets/phpmyadmin.conf
location /pma {
alias /usr/share/pma;
index index.php index.html index.htm;
# Deny .ht* files
location ~ /pma/\.ht { deny all; }
# Deny static files
location ~ /pma/(README|LICENSE|ChangeLog|DCO)$ { deny all; }
# Deny .md files
location ~ /pma/(.+\.md)$ { deny all;}
# Deny setup directories
location ~ /pma/(doc|sql|setup|libraries|locale|test)/ { deny all; }
# Block access to default directories and files under these directories
location ~ ^/pma/(bin|config|installer|logs|SQL|temp|vendor)($|/.*) { deny all; }
#FastCGI config for pma
location ~ /pma/.+\.php$ {
if ($fastcgi_script_name ~ /pma/(.+\.php.*)$) {
set $valid_fastcgi_script_name $1;
}
include fastcgi_params;
# 看 local 的設定, default 9000
fastcgi_pass 127.0.0.1:9056;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/pma/$valid_fastcgi_script_name;
}
}
Tips
Browse 某 Table 時出現 "Notice"
Notice in ./libraries/dbi/DBIMysqli.class.php#523 Undefined offset: 245
$cfg['SendErrorReports'] = 'never';
HTTP to HTTPS
redirect http to https
# http -> https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/pma [OR,NC]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/phpmyadmin [OR,NC]
RewriteRule (.*) https://%{HTTP_HOST}/pma/ [R=301,L]
* 純一去 /pma/
Show Full Field
After Search
Click on "+" Options
Select "Full texts" and click "Go"
Doc
http://docs.phpmyadmin.net/en/latest/config.html