我正在尝试在 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中。
有什么想法吗?
您不能在 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。
这对我有用:
"service mysql status" or "systemctl status mysqld"
(应该说活跃(正在运行))
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保存,回车确认)
修改用户并以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 将接受连接。
对于 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
我遇到了同样的问题,之前的答案都不适合我。我在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:最新
不要通过套接字文件连接,而是尝试使用 IP (127.0.0.1) 连接,对于 PMA 端口,请使用您的计算机 IP,您可以通过 ifconfig 命令获取该 IP。