在装有 MySQL 8 的 Ubuntu 22.04 系统上工作。我在外部硬盘上有一个 MySQL 数据/db 的旧集合,我使用 Docker 容器和 MySQL 映像连接并导出它。这工作正常,但是当我尝试通过命令行连接到我现有的 MySQL 安装时,尽管服务器通过显示为“活动”,但我还是收到以下错误systemctl
:
chris@chris-X1C6:~$ mysql -u admin -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
我在谷歌上搜索了一下,找到了很少(和这) 补救措施,但都无法解决问题。系统重启也无法解决问题。
作为第一次常识检查,我没有在引用的位置看到 mysql sock 文件,但在目录中/tmp
看到了一个 ( ) 。我也没有在 mysql 目录中看到要检查的 .cnf 文件 ( )。mysqld.sock
/var/run/mysqld
/var/lib/mysql
我还应该关注什么?
答案1
文档中提到,服务器用于与本地客户端通信的 Unix 套接字文件的默认位置是/tmp/mysql.sock
。 (对于某些分发格式,目录可能会有所不同,例如/var/lib/mysql
RPM。)
尝试此处的故障排除步骤:https://dev.mysql.com/doc/refman/8.0/en/problems-with-mysql-sock.html
- 在全局或本地选项文件中指定路径。例如,输入以下一行或两行来
/etc/my.cnf
设置服务器端或客户端路径:[mysqld] socket=/path/to/socket [client] socket=/path/to/socket
--socket
在命令行上为 mysql 客户端指定一个选项,例如mysql
或mysqladmin --socket=/path/to/socket
- 将环境变量设置
MYSQL_UNIX_PORT
为 Unix 套接字文件的路径。您可以尝试用以下命令连接服务器来测试新的套接字位置是否有效:
$> mysqladmin --socket=/path/to/socket version