Ubuntu → Установка phpMyAdmin на Nginx в Ubuntu 12.04 / Debian
Управлять сервером баз данных можно из командной строки, но это не всегда удобно, зачатую, хочется большего комфорта.
Если вы в совершенстве знаете синтаксис запросов MySQL, то можно обойтись и без сторонних приложений, лично я, похвастаться этим не могу, по этому предпочитаю работать через WEB интерфейс, одним из лучших, хотя и не единственным, приложением, является phpMyAdmin, как явствует из названия, написанное на PHP.
Данная статья, является, логическим продолжением руководства по настройке WEB сервера, которую я описывал в стетье- Настройка Nginx с поддержкой PHP-FPM в Ubuntu 12.04, все дальнейшие действия будут выполняться на ее основе.
Если у вас установлен Web сервер Apache или Lighttpd, то установка phpMyAdmin сложностей не вызывает, набираем:
И все установится автоматически.
К сожалению, если у вас используется Nginx, то так сделать все это, в автоматическом режиме, не получится, придется немного поработать руками, но результат получается не хуже, а за счет быстроты работы Nginx, то все совсем здорово «пуляет»…
Сама установка традиционная и не несет никаких сложностей:
У нас просят -с какими серверами мы будем его использовать, оставляем все поля пустыми:

При инсталляции PhpMyAdmin нам предложат создать базу данных, которая требуется для его работы:

Указываем сначала пароль пользователя Root (Сервера MySQL), а затем пароль для базы данных PhpMyAdmin, на этом, установка данного пакета завершена.
Теперь, нам необходимо, настроить виртуальный хост. Если, для настройки WEB сервера, вы пользовались статьей, ссылка на которую указана в начале, то конфигурационный файл сайта example.org у вас содержит настройки виртуального хоста, нам осталось добавить в него следующее:
В секцию server{}, нам необходимо добавить следующее:
В результате, у нас должен получиться конфигурационный файл следующего вида:
Перезапускаем nginx
И идем по адресу httр://example.org/phpmyadmin/
Должны увидеть следующее окно:

В принципе можно подключаться и работать.
Но мы на этом не остановимся т.к. зачастую, после подключения сервера к интернет, автоматические сканеры начинают искать phpMyAdmin и если он найден, то запускают процесс перебора паролей, что не очень хорошо…
Мы защитим доступ к данной странице с помощью логина и пароля, в Apache все это делалось через htpasswd, но данный вид файлов не поддерживается Nginx. Ситуация не тупиковая и вполне легко решается.
Для начала, нам необходимо с генерировать хеш пароля, для этого можно установить утилиты, которые идут с сервером Apache и сгенерить все что нам нужно, но мы этого делать не будем, а воспользуемся Online генератором полученный хеш пароля, записываем.
Теперь создадим файл в котором у нас будет все это храниться, чтобы не путаться в дальнейшем, назовем его htpasswd
Сам файл, мы будем хранить за пределами корневой директории сайта, но чтобы Nginx мог получить к нему доступ, на чтение, для примера, я укажу логин admin и захешированный пароль password, добавим это в файл htpasswd:
Теперь нам необходимо добавить в секцию, которая отвечает за работу с директорией phpMyAdmin.
Следующее:
Где: вместо Enter Super Secret password можно указать текст своего сообщения (кириллица НЕ поддерживается!)
В результате, всех действий, у нас должен получиться файл следующего содержания:
Перезапускам Nginx:
Снова переходим по адресу httр://example.org/phpmyadmin/, выскочит окно с предложением ввода логина и пароля, пишем логин admin пароль password и попадаем в phpMyAdmin
На этом установку можно завершить.
Обо всех найденных ошибках, а также, предложения по улучшению и просто возникших вопросах-прошу в комментарии.
Если вы в совершенстве знаете синтаксис запросов MySQL, то можно обойтись и без сторонних приложений, лично я, похвастаться этим не могу, по этому предпочитаю работать через WEB интерфейс, одним из лучших, хотя и не единственным, приложением, является phpMyAdmin, как явствует из названия, написанное на PHP.
Данная статья, является, логическим продолжением руководства по настройке WEB сервера, которую я описывал в стетье- Настройка Nginx с поддержкой PHP-FPM в Ubuntu 12.04, все дальнейшие действия будут выполняться на ее основе.
Если у вас установлен Web сервер Apache или Lighttpd, то установка phpMyAdmin сложностей не вызывает, набираем:
apt-get install phpmyadmin
И все установится автоматически.
К сожалению, если у вас используется Nginx, то так сделать все это, в автоматическом режиме, не получится, придется немного поработать руками, но результат получается не хуже, а за счет быстроты работы Nginx, то все совсем здорово «пуляет»…
Сама установка традиционная и не несет никаких сложностей:
apt-get install phpmyadmin
У нас просят -с какими серверами мы будем его использовать, оставляем все поля пустыми:

При инсталляции PhpMyAdmin нам предложат создать базу данных, которая требуется для его работы:

Указываем сначала пароль пользователя Root (Сервера MySQL), а затем пароль для базы данных PhpMyAdmin, на этом, установка данного пакета завершена.
Теперь, нам необходимо, настроить виртуальный хост. Если, для настройки WEB сервера, вы пользовались статьей, ссылка на которую указана в начале, то конфигурационный файл сайта example.org у вас содержит настройки виртуального хоста, нам осталось добавить в него следующее:
nano /etc/nginx/conf.d/example.org.conf
В секцию server{}, нам необходимо добавить следующее:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}
В результате, у нас должен получиться конфигурационный файл следующего вида:
server {
listen 80;
root /home/example/www;
access_log /home/example/logs/nginx.access.log; #расположение логов данного хоста
server_name example.org www.example.org;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#Работа с phpMyAdmin
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}
}
Перезапускаем nginx
/etc/init.d/nginx restart
И идем по адресу httр://example.org/phpmyadmin/
Должны увидеть следующее окно:

В принципе можно подключаться и работать.
Но мы на этом не остановимся т.к. зачастую, после подключения сервера к интернет, автоматические сканеры начинают искать phpMyAdmin и если он найден, то запускают процесс перебора паролей, что не очень хорошо…
Мы защитим доступ к данной странице с помощью логина и пароля, в Apache все это делалось через htpasswd, но данный вид файлов не поддерживается Nginx. Ситуация не тупиковая и вполне легко решается.
Добавляем HTTP авторизацию
Для начала, нам необходимо с генерировать хеш пароля, для этого можно установить утилиты, которые идут с сервером Apache и сгенерить все что нам нужно, но мы этого делать не будем, а воспользуемся Online генератором полученный хеш пароля, записываем.
Теперь создадим файл в котором у нас будет все это храниться, чтобы не путаться в дальнейшем, назовем его htpasswd
nano /home/example/htpasswd
Сам файл, мы будем хранить за пределами корневой директории сайта, но чтобы Nginx мог получить к нему доступ, на чтение, для примера, я укажу логин admin и захешированный пароль password, добавим это в файл htpasswd:
admin:ZIXt0E7AewSr2
Теперь нам необходимо добавить в секцию, которая отвечает за работу с директорией phpMyAdmin.
Следующее:
auth_basic "Enter Super Secret password";
auth_basic_user_file /home/example/htpasswd;
Где: вместо Enter Super Secret password можно указать текст своего сообщения (кириллица НЕ поддерживается!)
В результате, всех действий, у нас должен получиться файл следующего содержания:
server {
listen 80;
root /home/example/www;
access_log /home/example/logs/nginx.access.log; #расположение логов данного хоста
server_name example.org www.example.org;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#Работа с phpMyAdmin
location /phpmyadmin {
#Секция отвечающая за аутентификацию пользователя
auth_basic "Enter Super Secret password!"; # Текст сообщения, которое увидит пользователь при попытке входа в указанную директорию
auth_basic_user_file /home/example/htpasswd;
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}
}
Перезапускам Nginx:
/etc/init.d/nginx restart
Снова переходим по адресу httр://example.org/phpmyadmin/, выскочит окно с предложением ввода логина и пароля, пишем логин admin пароль password и попадаем в phpMyAdmin
На этом установку можно завершить.
Обо всех найденных ошибках, а также, предложения по улучшению и просто возникших вопросах-прошу в комментарии.
42 комментария
www.valentina-db.com/valentina-studio-overview
Я так понимаю что оно подключается к удаленному серверу баз данных, тогда придется разрешать внешние подключения, что не очень хорошо.
Исключительно вопрос предпочтений.
В итоге, при попытке открыть страничку с phpMyAdmin получаю ошибку от nginx'а: 502 Bad Gateway. В чём моя ошибка? Быть может, метод, описанный в данной статье неприменим к статейке howitmake.ru/blog/ubuntu/42.html?
С уважением, Геннадий.
Установите phpmyadmin на apache, согласно стандартной установки пакета, и будет вам счастье.
Теперь phpMyAdmin открывается, но изображения отсутствуют. Получается, phpMyAdmin ведь привязан к Apache2, а статику отдавать должен Nginx. Однако, этого не происходит. В который раз наталкиваюсь на эти грабли с отсутствием изображений, но решения так и не нашёл…
P.S. Есть ли рабочий способ phpMyAdmin привязать именно к Nginx, а не к Apache2? Ведь у меня сейчас именно Nginx статику отдаёт… а с Apache2 счастье, увы, так и не наступило (скорее всего из-за банального недостатка знаний).
К сожалению, ничего не изменилось. phpMyAdmin открывается, но картинки не грузит.
P.S. Не знаю, насколько это важно, но при запуске\перезапуске Apache2 пишется:
после обновления прав, nginx перезагружали?!
apache_error.log:
nginx_error.log
Все конфиги делались на основе Вашей статейки (https://howitmake.ru/blog/ubuntu/42.html).
Связка nginx+php-fpm работает шустрее и стабильнее, чем Nginx+Apache? Просто привык, что у Apache можно использовать фишку .htaccess\.htpasswd в каждой директории, а Nginx таких удобств не предоставляет…
htpass прикручивается в легкую, о чем, в статье, выше написано.
Просто с нгинксом не имел дела, просто копипастил и на баг время потратил, решил отписать.
Спасибо за уточнение, статью поправил…
Есть Debian 7 с nginx, mysql, php, phpmyadmin…
Также есть сайт на Djoomla и дамп его базы данных в формате example_mysql.sql
Вопрос, как правильно подключить эту базу данных через mysql-client или phpmyadmin?
Через mysql client все делается легко и не принужденно:
где:
username — имя пользователя для подключения к базе
DBNAME — имя базы
SQL_db_dump.sql — путь к файлу дампа базы-данных
Через phpmyadmin тоже все делается несложно, в Nginx нужно разрешить закачивать файлы большого объема, а также в PHP увеличить лимит на закачку файлов, поуполчанию там, кажется, 3 Мб
Нужно ли создавать нового пользователя в mysql для импортируемой БД?
Какие права ему дать и как лучше это сделать?
В интернетах пишут что нужно создать пользователя с именем импортируемой БД,
и назначить ему права, верно ли это?