Как настроить докер-контейнер phpmyadmin и локальный MySQL + nginx в Linux?MySql

Форум по Mysql
Ответить Пред. темаСлед. тема
Anonymous
 Как настроить докер-контейнер phpmyadmin и локальный MySQL + nginx в Linux?

Сообщение Anonymous »

Это вопрос, на который я собираюсь ответить сам, потому что даже в мире ИИ мне потребовалось слишком много времени, чтобы заставить это работать.
Сценарий таков, что у меня есть< /p>
  • полный домен
  • работающий VPS-сервис Ubuntu
  • nginx
  • mysql работает на компьютере, а НЕ из Docker-контейнера.
  • phpmyadmin работает из Docker-контейнера
Я столкнулся с ошибкой, которая беспокоила многих людей, — это mysqli_connect(): ( HY000/2002): Ошибка в соединении отклонена, хотя тестирование доступа непосредственно на машине доказывает что пользователи и пароли верны.
Подобные вопросы возникали с течением времени, и даже ChatGPT, Клод и другие не смогли определить ответ, поскольку все они предполагали, что были ошибки подключения, но на самом деле все это была проблема с портом, которую неочевидно решить.
Вот настройка:
Nginx

Код: Выделить всё

server {
server_name database.your-domain.com;

location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;

# Add these headers for secure cookies
proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";

# Optional: Set timeouts to prevent long idle connections
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/database.your-domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/database.your-domain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
if ($host = database.your-domain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot

listen 80;
listen [::]:80;
server_name database.your-domain.com;
return 404; # managed by Certbot
}
MySQL
Порт и адрес привязки в mysql:

Код: Выделить всё

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

#... set in file (you can adjust the port - but just make sure it is aligned with the phpmysql start script)

port = 3306
bind-address = 127.0.0.1

И перезапустите MySQL:

Код: Выделить всё

sudo systemctl restart mysql
Настройка пользователя MySQL:

Код: Выделить всё

sudo mysql -u root -p

Код: Выделить всё

CREATE USER 'testuser'@'127.0.0.1' IDENTIFIED BY 'created_user_password';
GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'127.0.0.1';
FLUSH PRIVILEGES;
SELECT User, Host FROM mysql.user;

Результат показывает, что я создаю пользователя, доступ к которому ограничен по указанному IP-адресу (в данном случае IP-адресу локального хоста)

Код: Выделить всё

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| testuser         | 127.0.0.1 |
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
Наконец-то phpmyadmin
Конфигурация запуска для запуска Docker

Код: Выделить всё

#!/bin/bash

docker run -d \
--name phpmyadmin \
-p 127.0.0.1:8081:80 \
-e PMA_HOST=127.0.0.1 \
-e PMA_PORT=3306 \
-e PMA_ABSOLUTE_URI=https://database.your-domain.com/ \
phpmyadmin/phpmyadmin
Этого должно быть достаточно, чтобы все заработало, но phpmyadmin позволит вам получить доступ к странице входа в систему, он не выдаст сообщение об ошибке, но, к сожалению, он зависнет, не вызывая ничего, кроме Тайм-аут 504.
Я не увижу никаких сообщений об ошибках.
В ответе я опишу простое изменение и поясню, почему оно работает.

Подробнее здесь: https://stackoverflow.com/questions/793 ... x-on-linux
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу запустить докер-контейнер через независимый докер-контейнер?
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как настроить докер и запустить докер для golang+redis+postgres и прослушать порт 8089
    Anonymous » » в форуме Linux
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Как подключиться к докер-контейнеру MySQL через phpMyAdmin?
    Anonymous » » в форуме Php
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Докер-контейнер MySQL завис при перезагрузке
    Anonymous » » в форуме Php
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Докер-контейнер MySQL завис при перезагрузке
    Anonymous » » в форуме Php
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «MySql»