Docker上的PhpMyadmin/host上的MySQL

Docker上的PhpMyadmin/host上的MySQL,mysql,ubuntu,docker,phpmyadmin,Mysql,Ubuntu,Docker,Phpmyadmin,我正在尝试使用Ubuntu14.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.s

我正在尝试使用Ubuntu14.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是docker网桥的主机ip。

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

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

这就是我的工作原理:

  • 检查数据库是否已启动并运行:
  • (应该说是活动(正在运行))

  • 在容器中运行phpMyAdmin:
  • 检查容器是否已启动并正在运行:
  • (检查phpMyAdmin本地状态是否已启动)

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

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

  • 以sudo格式编辑文件:

    马里亚布: nano/etc/mysql/mariadb.conf.d/50-server.cnf

    MySQL: nano/etc/mysql/my.cnf

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

    并更改此行:

    bind-address            = 127.0.0.1
    
    这一行:(注意“#”)

    (按ctrl+x键退出,按y键保存,按enter键确认)

  • 授予用户/用户从不同位置(不同于本地主机)连接的权限:
  • 使用root权限修改用户并登录到mysql/mariadb cli:

        mysql -uroot -p -P3306 
    
    (运行命令后输入密码)

    使用mysql数据库编辑用户:

    use mysql;
    
    为特定用户提供pribvileges:(如果您有其他用户,则可以与root用户不同):

    然后:

    FLUSH PRIVILEGES;
    
    以及:

    重新启动mysql服务:

    service mysqld stop 
    

    现在,您可以使用在prev中指定的用户和密码登录到phpMyAdmin。命令和mysql/mariadb将接受连接。

    这就是我的工作原理:

  • 检查数据库是否已启动并运行:
  • (应该说是活动(正在运行))

  • 在容器中运行phpMyAdmin:
  • 检查容器是否已启动并正在运行:
  • (检查phpMyAdmin本地状态是否已启动)

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

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

  • 以sudo格式编辑文件:

    马里亚布: nano/etc/mysql/mariadb.conf.d/50-server.cnf

    MySQL: nano/etc/mysql/my.cnf

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

    并更改此行:

    bind-address            = 127.0.0.1
    
    这一行:(注意“#”)

    (按ctrl+x键退出,按y键保存,按enter键确认)

  • 授予用户/用户从不同位置(不同于本地主机)连接的权限:
  • 使用root权限修改用户并登录到mysql/mariadb cli:

        mysql -uroot -p -P3306 
    
    (运行命令后输入密码)

    使用mysql数据库编辑用户:

    use mysql;
    
    为特定用户提供pribvileges:(如果您有其他用户,则可以与root用户不同):

    然后:

    FLUSH PRIVILEGES;
    
    以及:

    重新启动mysql服务:

    service mysqld stop 
    

    现在,您可以使用在prev中指定的用户和密码登录到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
    

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

    什么
    服务mysql状态
    回复?正在运行。。。Mysql数据库与一些站点一起运行。什么
    服务Mysql状态
    回复?正在运行。。。Mysql数据库与一些站点一起使用。