phpMyAdmin 隧道到 mySQL

phpMyAdmin 隧道到 mySQL

如何通过 SSH 隧道将本地 phpMyAdmin 连接到远程 mySQL dockerized 容器 (example.com)?这是 docker compose 中的本地 phpMyadmin:

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

我真的是新手,而且肯定做得很糟糕。你能给我一些建议吗?提前谢谢了。

答案1

Docker 创建一个内部网络,可能对 Mysql 进行欺骗,输入“ifconfig”和“netstat -lptn”来查看服务器数据。

尝试使用“--network host”启动docker并假设本地ip,实例的mysql将监听127.0.0.1或“物理”服务器的其他ip。

另一个选项是告诉 docker 执行 PAT 和 NAT,如下所示

-p 127.0.0.1:3107:3106

所以你告诉他所有到达所有接口 127.0.0.1 的请求都会转到 docker 实例:3106

相关内容