Назад | Перейти на главную страницу

phpMyAdmin туннель к mySQL

Как я могу подключить локальный phpMyAdmin через SSH-туннель к удаленному dockerized контейнеру mySQL (example.com)? Это локальный phpMyadmin в docker compose:

pma:
  image: phpmyadmin/phpmyadmin
  container_name: pma
  environment:
    - PMA_ARBITRARY=1
    - 'PMA_ABSOLUTE_URI=https://pma.local/'
  volumes:
    - './config.user.inc.php:/etc/phpmyadmin/config.user.inc.php'
  restart: always

Это настраиваемая конфигурация для PMA:

$cfg['Servers'][$i]['verbose']       = 'Localhost';
$cfg['Servers'][$i]['host']          = 'localhost';
$cfg['Servers'][$i]['port']          = '3306';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysqli';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
$i++;

$cfg['Servers'][$i]['verbose']       = 'Remote Server';
$cfg['Servers'][$i]['host']          = '127.0.0.1';
$cfg['Servers'][$i]['port']          = '3307';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysqli';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
$i++;

Используя Core Tunnel, я установил это на своем локальном компьютере:

Это мой тестовый контейнер на example.com:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

Теперь, если я введу в PMA следующее (после включения туннеля):

Server: 127.0.0.1
User: root
Password: my-secret-pw

Я получаю:

mysqli_real_connect(): (HY000/2002): Connection refused

Я действительно новичок в этом и, конечно же, делаю что-то очень плохое. Не могли бы вы дать мне несколько советов? Спасибо заранее.

Докер создает внутреннюю сеть, в которой он, возможно, лжет Mysql, введите «ifconfig» и «netstat -lptn» для просмотра данных сервера.

Попробуйте запустить докер с «--network host» и предположите, что локальный IP-адрес, mysql экземпляра будет прослушивать 127.0.0.1 или какой-либо другой IP-адрес вашего «физического» сервера.

Другой вариант - указать докеру выполнять PAT и NAT с такой опцией

-p 127.0.0.1:3107:3106

Итак, вы говорите ему, что все запросы, поступающие на все интерфейсы 127.0.0.1, поступают в экземпляр докера: 3106