phpMyAdmin (Русский)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Состояние перевода: На этой странице представлен перевод статьи phpMyAdmin. Дата последней синхронизации: 23 февраля 2020. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

phpMyAdmin — веб-инструмент для управления базами данных MySQL с помощью фронтенда на Apache/PHP.

Установка

Установите пакет phpmyadmin.

Запуск

PHP

Убедитесь, что mysql-расширения PHP были включены.

При необходимости можно также включить extension=bz2 и extension=zip для поддержки сжатия.

Примечание: Если был задан параметр open_basedir, обязательно включите /usr/share/webapps и /etc/webapps в open_basedir в файле /etc/php/php.ini. Смотрите PHP#Configuration.

Apache

Настройте Apache для использования PHP, как описано в разделе Apache HTTP Server (Русский)#PHP.

Создайте файл конфигурации Apache:

/etc/httpd/conf/extra/phpmyadmin.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

И включите его в /etc/httpd/conf/httpd.conf:

# phpMyAdmin configuration
Include conf/extra/phpmyadmin.conf
Примечание: По умолчанию каждый, кто может получить доступ к веб-серверу Apache, может видеть страницу входа phpMyAdmin. Чтобы исправить это, отредактируйте /etc/httpd/conf/extra/phpmyadmin.conf как вам нужно. Например, если вы хотите получить доступ к phpMyAdmin только с одного компьютера, замените Require all granted на Require local. Обратите внимание, что это действие запретит подключение к PhpMyAdmin с удаленного компьютера. Если вы хотите получить безопасный доступ к PhpMyAdmin на удаленном сервере, вы можете настроить Шифрованный туннель SOCKS.

После внесения изменений в конфигурационный файл Apache, перезапустите службу httpd.service.

Lighttpd

Убедитесь, что Lighttpd может обслуживать PHP-файлы и включён mod_alias.

Добавьте в конфигурацию следующее альтернативное имя для PhpMyAdmin:

 alias.url = ( "/phpmyadmin" => "/usr/share/webapps/phpMyAdmin/")

Nginx

Настройте FastCGI и используйте серверные блоки, чтобы упростить управление.

Для более лёгкого доступа к phpMyAdmin можно создать поддомен, например, https://pma.domain.tld:

/etc/nginx/sites-available/pma.domain.tld
server {
    server_name pma.domain.tld;
    ; listen 80; # also listen on http
    ; listen [::]:80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    index index.php;
    access_log /var/log/nginx/pma.access.log;
    error_log /var/log/nginx/pma.error.log;

    # Allows limiting access to certain client addresses.
    ; allow 192.168.1.0/24;
    ; allow my-ip;
    ; deny all;

    root /usr/share/webapps/phpMyAdmin;
    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /index.php;

    location ~ \.php$ {
        try_files $uri $document_root$fastcgi_script_name =404;

        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;

        fastcgi_param HTTP_PROXY "";
        fastcgi_param HTTPS on;
        fastcgi_request_buffering off;
   }
}

Или по подкаталогу, например, https://domain.tld/phpMyAdmin:

/etc/nginx/sites-available/domain.tld
server {
    server_name domain.tld;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    index index.php;
    access_log /var/log/nginx/domain.tld.access.log;
    error_log /var/log/nginx/domain.tld.error.log;

    root /srv/http/domain.tld;
    location / {
        try_files $uri $uri/ =404;
    }

    location /phpMyAdmin {
        root /usr/share/webapps/phpMyAdmin;
    }

    # Deny static files
    location ~ ^/phpMyAdmin/(README|LICENSE|ChangeLog|DCO)$ {
       deny all;
    }

    # Deny .md files
    location ~ ^/phpMyAdmin/(.+\.md)$ {
      deny all;
   }

   # Deny setup directories
   location ~ ^/phpMyAdmin/(doc|sql|setup)/ {
      deny all;
   }

   #FastCGI config for phpMyAdmin
   location ~ /phpMyAdmin/(.+\.php)$ {
      try_files $uri $document_root$fastcgi_script_name =404;

      fastcgi_split_path_info ^(.+\.php)(/.*)$;
      fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;

      fastcgi_param HTTP_PROXY "";
      fastcgi_param HTTPS on;
      fastcgi_request_buffering off;
   }
}

Настройка

Главный файл конфигурации находится в /usr/share/webapps/phpMyAdmin/config.inc.php.

Определение удаленного сервера MySQL

Если MySQL-сервер находится на удалённом хосте, добавьте следующую строку в файл конфигурации:

$cfg['Servers'][$i]['host'] = 'example.com';

Использование скрипта установки

Чтобы разрешить использование сценария установки phpMyAdmin (например, http://localhost/phpmyadmin/setup), убедитесь, что /usr/share/webapps/phpMyAdmin доступен для записи пользователю http:

# mkdir /usr/share/webapps/phpMyAdmin/config
# chown http:http /usr/share/webapps/phpMyAdmin/config
# chmod 750 /usr/share/webapps/phpMyAdmin/config

Добавление парольной фразы blowfish_secret

Требуется ввести уникальную строку длиной 32 символа, чтобы полноценно использовать алгоритм blowfish, используемый phpMyAdmin, что исключает сообщение об ошибке "ERROR: The configuration file now needs a secret passphrase (blowfish_secret)":

/usr/share/webapps/phpMyAdmin/config.inc.php
$cfg['blowfish_secret'] = '...';

Включение хранилища настроек

Дополнительные параметры, такие как связывание таблиц, отслеживание изменений, создание PDF-файлов и запросы закладок, по умолчанию отключены, что приводит к отображению сообщения "The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated" на домашней странице.

Примечание: В этом примере предполагается, что вы используете стандартное имя пользователя pma в качестве controluser и pmapass в качестве controlpass.

В /usr/share/webapps/phpMyAdmin/config.inc.php, раскомментируйте (удалите символы "//") и при необходимости измените их на нужные учетные данные:

/usr/share/webapps/phpMyAdmin/config.inc.php
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = 'my-host';
// $cfg['Servers'][$i]['controlport'] = '3306';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Настройка базы данных

Для создания необходимых таблиц доступны два варианта:

  • Импортируйте /usr/share/webapps/phpMyAdmin/sql/create_tables.sql, используя PhpMyAdmin.
  • Выполните команду mysql -u root -p < /usr/share/webapps/phpMyAdmin/sql/create_tables.sql в терминале.

Настройка пользователя базы данных

Чтобы применить необходимые разрешения для controluser, выполните следующий запрос:

Примечание: Обязательно замените все экземпляры pma и pmapass на значения, заданные в config.inc.php. Если вы настраиваете это для удалённой базы данных, вы также должны изменить localhost на соответствующий хост.
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';

Чтобы использовать функции закладок и отношений, установите следующие разрешения:

GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';

Повторно войдите в систему, чтобы убедиться, что новые функции активированы.

Включение кеширования шаблонов

Добавьте следующую строку в /usr/share/webapps/phpMyAdmin/config.inc.php:

$cfg['TempDir'] = '/tmp/phpmyadmin';

Удаление каталога конфигурации

Удалите временный каталог конфигурации после завершения настройки. Удаление каталога также устранит предупреждение из веб-интерфейса:

# rm -r /usr/share/webapps/phpMyAdmin/config

Смотрите также