使用 Docker 和 MySQL 映像连接到外部驱动器上的辅助数据库后,无法连接到本地 MySQL 安装

使用 Docker 和 MySQL 映像连接到外部驱动器上的辅助数据库后,无法连接到本地 MySQL 安装

非常感谢您的帮助。使用 Ubuntu 22.04 和 MySQL 8。

我在外部硬盘上有一个旧版 MySQL DB,在我的 Ubuntu 机器上也有一个本地安装,两者都使用 MySQL 8。

我设置了一个 Docker 容器,MySQL 映像连接到旧数据库以转储数据以供其他地方使用。这没有问题,但现在我无法连接到现有的本地 MySQL 安装。

启动 MySQL 的标准调用返回错误,指出无法通过套接字连接:

chris@chris-X1C6:/etc/mysql$ mysql -u admin -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

我检查了服务器是否正在运行,重新启动了 MySQL 和系统,但都无济于事。我还编辑了配置文件 ( ) 以指定套接字文件的位置(.sock 文件实际存在的位置),并尝试在本地安装 ( ) 中在指定文件和 sock 文件的实际位置/etc/mysql/my.cnf之间创建符号链接。这些都不允许我连接,错误消息现在显示为:/tmp/mysql.sock/var/lib/mysql/mysql.sock

chris@chris-X1C6:/etc/mysql$ mysql -u admin -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

经过反复尝试才能够访问外部驱动器上的数据(即指定数据在 Docker 中的位置),因此我很可能在它仍指向我的本地安装目录时无意中通过 Docker 连接到了 MySQL 映像。不确定这是否会/如何弄乱设置/配置,但自从使用 Docker 以来就无法连接,所以想知道这可能有什么关系。

非常感谢任何关于解决或调试的想法。

答案1

我有点不明白你为什么之前要设置一个新的 Docker 容器,我理解切换到容器。你应该使用它mysqldump来创建数据库转储,然后使用以下命令在容器中恢复它:

cat dump.sql | docker exec -i <container_name> mysql --protocol tcp -uroot -p<rootpw> yourdbname

对于 sock 内容,您只需使用 TCP 监听并在本地主机上监听并使用 mysql-h参数连接,例如:

mysql -h 127.0.0.1 -uroot -p

数据库转储也非常简单:

mysqldump -uroot -p --all-databases > dump.sql

或者

mysqldump -uroot -p yourdbname > dump.sql

相关内容