主机上 Docker/MySQL 上的 PhpMyadmin

问题描述 投票:0回答:5

我正在尝试在 Ubuntu 14.04 中使用 docker 安装/配置 phpmyadmin。我是这样开始的:

docker run --name myadmin -d -e PMA_HOST=localhost -e PMA_PORT=3306 -p 8282:80 phpmyadmin/phpmyadmin

当我尝试登录时,出现以下错误:

 #2002 - Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2 "No such file or directory") — The server is not responding (or the local server's socket is not correctly configured).

 mysqli_real_connect(): (HY000/2002): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2 "No such file or directory")

MySQL服务器直接安装在Ubuntu中,而不是安装在docker中。

有什么想法吗?

mysql ubuntu docker phpmyadmin
5个回答
8
投票

您不能在 docker 容器中使用 localhost。

docker run --rm --name myadmin -it -e PMA_HOST=172.17.0.1 -e PMA_PORT=3306 -p 8282:80 phpmyadmin/phpmyadmin

其中172.17.0.1是我的docker0网桥的主机IP。


2
投票

这对我有用:

  1. 检查您的数据库是否已启动并正在运行:
    "service mysql status" or "systemctl status mysqld"

(应该说活跃(正在运行))

  1. 在容器中运行 phpMyAdmin:
    docker run --name="phpMyAdmin-local" -itd -e PMA_HOST=$(ip route show | grep docker0 | awk '{print $9}') -p 8283:80 phpmyadmin/phpmyadmin
  1. 检查容器是否已启动并正在运行:
    docker ps -a 

(检查 phpMyAdmin-local 状态是否已启动)

  1. 转到“localhost:8283”并检查 phpMyAdmin 是否在那里

  2. 让您的数据库接收外部请求:

以 sudo 方式编辑文件:

玛丽亚数据库: 纳米/etc/mysql/mariadb.conf.d/50-server.cnf

MySQL: 纳米/etc/mysql/my.cnf

(nano是文本编辑器,可以更改)

并更改此行:

bind-address            = 127.0.0.1

到这一行:(注意“#”)

# bind-address            = 127.0.0.1

(ctrl+x退出,y保存,回车确认)

  1. 授予用户/用户从不同位置(不同于本地主机)连接的权限:

修改用户并以root权限登录mysql/mariadb cli:

    mysql -uroot -p -P3306 

(运行命令后输入密码)

使用mysql数据库编辑用户:

use mysql;

向特定用户授予特权:(如果您有其他用户,则可以与 root 不同):

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

然后:

FLUSH PRIVILEGES;

和:

exit;

重启mysql服务:

service mysqld stop 
service mysqld start

现在您可以使用您在前面指定的用户名和密码登录 phpMyAdmin。命令和 mysql/mariadb 将接受连接。


1
投票

对于 mac OS 用户,使用 host.docker.internal 作为主机地址,docker 将解析为主机的 IP 地址。

docker run --rm --name myadmin -it -e PMA_HOST=host.docker.internal -e PMA_PORT=3306 -p 8282:80 phpmyadmin/phpmyadmin

0
投票

我遇到了同样的问题,之前的答案都不适合我。我在GitHub Issue 271中找到了解决方案,将本地socket映射到docker容器中:

docker run --rm --name pma-socket -p 8080:80 -e PMA_SOCKET=/run/mysqld/mysqld.sock -v /run/mysqld/mysqld.sock:/run/mysqld/mysqld.sock phpmyadmin:最新


-2
投票

不要通过套接字文件连接,而是尝试使用 IP (127.0.0.1) 连接,对于 PMA 端口,请使用您的计算机 IP,您可以通过 ifconfig 命令获取该 IP。

© www.soinside.com 2019 - 2024. All rights reserved.