我只需要重新安装mysql,我就无法启动它。它找不到套接字(mysql.sock)。问题是我不能。在我的Mac OS X 10.4终端中,键入:locate mysql.sock
,然后返回/private/tmp/mysql.sock
。套接字文件存在于该位置是有道理的,但实际上并不存在。
如何找到套接字文件?
如果locate返回错误的位置,则它必须具有某种内存,并且可能具有索引。如何刷新该索引?
Answers:
回答问题的第一部分:
跑
% mysqladmin -p -u <user-name> variables
并检查“ socket”变量
mysqladmin variables
。什么时候做什么error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
?:)
sudo find / -name mysql.sock
从根目录运行,无法在系统上的任何位置找到mysql.sock。我使用Mac OS 10.7的64位dmg文件安装了MySQL。当前正在运行小牛。
这解决了我的问题
mysql_config --socket
更新
mysql_config可以告诉我们mysql.sock文件应该在哪里,但就我而言,该文件不存在。因此,我删除了my.cnf:
sudo rm -rf /etc/my.cnf
然后重启mysql:
brew services restart mysql
该文件已创建,并且mysql现在运行良好。
ls: /etc/my.cnf: No such file or directory
可能是我必须首先创建它吗?
/etc/my.cnf
尝试看的文件/usr/loca/etc/my.cnf
-@Abhi
套接字文件应在MySQL守护程序启动时自动创建。
如果找不到该目录,则很可能应该包含该目录的目录不存在,或者其他一些文件系统问题阻止了套接字的创建。
要找出文件应该在哪里,请使用:
% mysqld --verbose --help | grep ^socket
mysqld
是它应该告诉您服务器实际将其放置在何处!
我的问题也是mysql.sock文件。
在drupal安装过程中,我不得不说我想使用哪个数据库,但是找不到我的数据库
mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock
系统正在搜索mysql.sock,但是它在错误的目录中
您要做的就是将其链接;)
我花了很多时间来搜索所有重要信息,但是花了我什至花了几个小时才能找到适应方法,但是现在我可以展示结果了:D
ps:如果要精确,必须将您的链接/tmp/mysql.sock-file
(如果它也位于系统中)链接到php.ini(或php.default.ini)给定的目录,其中pdo_mysql.default_socket= ...
pdo_mysql.default_socket
您需要重新启动网络服务器以加载更改sudo apachectl restart
我得到使用的确切路径:
netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'
由于这仅返回路径并且不需要任何输入,因此您可能会在Shell脚本中使用它。
MySQL必须当前在您的计算机上运行,才能正常工作。也适用于MariaDB。
最初的问题似乎来自对以下问题的困惑:a)文件在哪里,b)在哪里寻找(以及为什么在执行定位或grep时为什么找不到文件)。我认为Alnitak的意思是您想找到它的链接位置-但是grep不会显示链接,对吗?该文件不存在于此,因为它是一个链接,因此只是一个指针。您仍然需要知道将链接放在何处。
我的袜子文件肯定在/ tmp中,而我得到的错误正在/ var / lib /中查找(而不只是/ var),我现在链接到/ var和/ var / lib了,但我仍然遇到错误“无法通过套接字'var / lib / mysql.sock'(2)连接到本地MySQL服务器”。
请注意错误后的(2)。...我在另一个线程上发现,这意味着确实可以尝试使用套接字,但是套接字本身出了点问题-因此,请完全关闭计算机,以便插座关闭。然后重启应该解决它。我尝试了一下,但是对我没用(现在我问我重启得太快了吗?真的吗?)也许这将是其他人的解决方案。
(Q1)如何找到套接字文件?
套接字文件的默认位置是/tmp/mysql.sock,要查找系统的套接字文件,请使用此文件。
mysqladmin variables | grep socket
如果您刚刚安装了MySql,则在启动服务器之前不会创建mysql.sock文件。使用此命令启动它。
sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
如果提示您输入密码,则可以传递用户名root或其他类似的用户名。终端会提示您输入密码。
mysqladmin --user root --password variables | grep socket
(Q2)如何刷新定位索引
使用此命令刷新定位数据库。
sudo /usr/libexec/locate.updatedb
在Mac OS X 10.11.6上出现相同的错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
经过对这里和相关问题的建议进行了许多苦恼和挖掘之后,似乎都无法解决问题,我回去删除了已安装的文件夹,然后执行了brew install mysql
。
大多数命令仍会出现相同的错误,但这可行:
/usr/local/bin/mysqld
并返回:
/ usr / local / bin / mysqld:准备连接。
版本:'5.7.12'套接字:'/tmp/mysql.sock'端口:3306 Homebrew
我根本找不到mysql套接字,因此重新安装了mysql服务器(保留了所有表和phpmyadmin设置)。以下是命令:
1)安装
须藤apt-get install mysql-server
2)遵循终端配置步骤
须藤mysql_secure_installation
3)检查状态:(应返回“活动:活动(运行中)”)
systemctl状态mysql.service
不幸的是,以上情况均不适用于我。但是最后我找到了解决方案。
要查找mysql.sock文件在哪里,只需打开xampp管理器,选择MySQL,然后单击右侧的Configure。在配置面板上,单击“打开配置文件”,然后只需按CMD + F快捷方式搜索mysql.sock。
就我而言,mysql.sock的所有者已更改,我必须使用以下命令将其更改回root admin:chmod root:admin mysql.sock
之后,就可以访问数据库了。
/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock