Docker Mysql可以';t通过套接字连接到本地MySQL服务器

Docker Mysql可以';t通过套接字连接到本地MySQL服务器,docker,Docker,我使用下面的命令来运行mysql docker容器 docker container run -it --name mysql-test -e MYSQL_ROOT_PASSWORD=secret mysql bash 然后我尝试使用下面的命令连接到docker容器内的mysql mysql -uroot -psecret 这给了我以下的错误 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/va

我使用下面的命令来运行mysql docker容器

docker container run -it --name mysql-test -e MYSQL_ROOT_PASSWORD=secret mysql bash
然后我尝试使用下面的命令连接到docker容器内的mysql

mysql -uroot -psecret
这给了我以下的错误

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
如果我在下面做的话,有时它会起作用,但不是所有的时间

touch /var/run/mysqld/mysqld.sock
然后我尝试在分离模式下运行容器,但它也给了我同样的错误

docker container run -d -p 3306:3306 --name mysql-test -e MYSQL_ROOT_PASSWORD=secret mysql
docker exec -it mysql-test bash
mysql -uroot -p
我做错了什么?

这可能会有帮助

  • mysql命令尝试通过mysqld.sock连接,但您的mysql服务器在容器中运行,因此这里没有.sock文件。您可以尝试将其装载到主机
  • 您触摸一个.sock文件,当然它不能使任何东西工作,也许您想了解什么是sock文件:)

  • 如果您在使用docker容器时,在登录MySQL服务器时遇到“无法通过套接字连接到本地MySQL服务器”/var/run/mysqld/mysqld.sock“(2)”错误:

    检查/etc/mysql/my.cnf中套接字文件的路径

    检查/var/run/mysqld/目录中是否存在mysqld.sock和mysqld.pid文件

    如果没有,请将这些文件创建为:

    touch /var/run/mysqld/mysqld.sock
    touch /var/run/mysqld/mysqld.pid
    chown -R mysql:mysql /var/run/mysqld/mysqld.sock
    chown -R mysql:mysql /var/run/mysqld/mysqld.sock
    chmod -R 644 /var/run/mysqld/mysqld.sock
    
    现在重新启动mysql服务器,如下所示:

    service mysql-server restart
    

    现在,尝试再次登录mysql服务器。

    可能是@paulsm4的副本,我没有远程连接。我正在连接同一个容器。请阅读。。。这个响应。所有响应。您是否正在尝试从docker内部连接本地安装的mysql?如果是,您是否使用-v/var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock装载卷?@deosha我正在连接到mysql容器的bash。我没有从主机连接。我是从集装箱接过来的,很抱歉。你能给出docker容器日志mysql测试的输出吗?我忘了检查日志,把它弄丢了。我试着再做一次