Docker上的PhpMyadmin/主机上的MySQL

xmd2e60i  于 12个月前  发布在  Mysql
关注(0)|答案(5)|浏览(150)

我尝试在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中。
有什么想法吗?

tsm1rwdh

tsm1rwdh1#

你不能在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。

bbuxkriu

bbuxkriu2#

这就是我的工作:
1.检查你的数据库是否已经启动并运行:

"service mysql status" or "systemctl status mysqld"

字符串
(It应该说活动(运行))
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状态是否为up)
1.转到“localhost:8283”并检查phpMyAdmin是否存在
1.让你的数据库接收外部请求:
以sudo方式编辑文件:
/etc/mysql
MySQL:nano /etc/mysql/my.cnf
(nano是文本编辑器,可以更改)
并更改这一行:

bind-address            = 127.0.0.1


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

# bind-address            = 127.0.0.1


(ctrl+x退出,“y”保存,“enter”确认)
1.给予用户/用户从不同位置(不同于localhost)连接的权限:
修改用户并以root权限登录mysql/mariadb服务器:

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将接受连接。

v9tzhpje

v9tzhpje3#

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

字符串

nhhxz33t

nhhxz33t4#

我遇到了同样的问题,之前的答案都不适用于我。我在GitHub issue 271中找到了解决方案,它将本地套接字Map到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:latest

sg3maiej

sg3maiej5#

不要通过套接字文件连接,尝试使用IP(127.0.0.1)连接,PMA端口使用您的机器IP,您可以通过ifconfig命令获得。

相关问题