主机上 Docker/MySQL 上的 PhpMyadmin

Posted

技术标签:

【中文标题】主机上 Docker/MySQL 上的 PhpMyadmin【英文标题】:PhpMyadmin on Docker/MySQL on host 【发布时间】:2017-06-10 03:58:35 【问题描述】:

我正在尝试在 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 中。

有什么想法吗?

【问题讨论】:

service mysql status 回复了什么? 正在运行... Mysql 数据库已与一些站点一起使用。 【参考方案1】:

您不能在 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】:

这对我有用:

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

(应该说活动(运行))

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

(检查 phpMyAdmin-local 状态是否正常)

    转到“localhost:8283”并检查 phpMyAdmin 是否存在

    让你的数据库接收外部请求:

使用 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保存,enter确认)

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

修改用户并以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 将接受连接。

【讨论】:

【参考方案3】:

对于 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

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于主机上 Docker/MySQL 上的 PhpMyadmin的主要内容,如果未能解决你的问题,请参考以下文章

docker mysql 容器 数据库文件怎么娴宿主机器上

docker mysql 容器 数据库文件怎么娴宿主机器上

Docker部署mysql5.7

OpenShift 数据库主机价值?

Docker mysql主机没有特权

使用PHPMyAdmin管理工具修复MySQL数据库表