主机上 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的主要内容,如果未能解决你的问题,请参考以下文章