我正在尝试安装 mysql 5.1.42 并在运行以下行后
sudo /usr/local/mysql/bin/mysqladmin -u root -p 密码
我收到此错误:
/usr/local/mysql/bin/mysqladmin:连接到“localhost”上的服务器失败错误:“无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器 (2)”请检查 mysqld 是否正在运行以及套接字:“/var/run/mysqld/mysqld.sock”是否存在!
我已经创建了 mysqld.sock 并授予它权限。但仍然出现相同的错误。
有人可以帮忙吗
谢谢
答案1
你确定 mysql 真的在运行吗?
ps aux | grep mysql
检查这一点。另外,通过 TCP/IP 连接通常比通过套接字连接更容易:
mysql -u root -p -h 127.0.0.1
答案2
您的客户端和服务器很可能对于套接字所在的位置有不同的看法。
如果你有一个 /proc 文件系统,找到服务器放置套接字的位置就很容易了。输出来自:
ps -elf | grep mysqld
应该包括其中一个 mysqld 服务器线程的进程 ID(任何线程都可以)。然后查看 /proc 以查看套接字被写入的位置:
sudo ls -l /proc/NNN/fd
其中 NNN 是来自“ps”调用的进程 ID。
一旦知道套接字在哪里,就将其位置传递到连接字符串中:
sudo /usr/local/mysql/bin/mysqladmin -u root -S /path/to/mysqld.sock -ppassword
套接字位置通常在 mysql.cnf 文件(/etc/mysql/mysql.cnf 或 /etc/mysql.cnf 或任何其他文件)的标题为“[mysqld]”的部分中指定。如果其中没有套接字条目,则服务器将使用默认编译的 /tmp/mysql.sock。您可以随时停止(或终止)服务器,并在配置文件中添加显式套接字条目,例如:
[mysqld]
socket=/var/run/mysqld/mysqld.sock
值得将相同的内容添加到[客户端]部分,以便所有客户端工具都有相同的想法。