mac终端运行mysql出现Can't connect to local MySQL server through socket '/tmp/mysql.sock'

打开mac的终端,输入mysql -u root -p****** 之后,出现Can't connect to local MySQL server through socket '/tmp/mysql.sock',十分惊讶,因为几个月前运行这个命令还是成功的。然后我就cd /tmp,再 ll,发现/tmp下真的没有mysql.sock。

网上搜了一大堆教程,都是说什么文件权限啊,连接个数超阈值的问题,这些一看就不能解决我的问题。还有的解决方案是linux上的mysql,文件夹名根本不能对应。之后我自己找办法,发现我的mysql server居然处于关闭状态。奇怪,mysql应该是开机自启项,怎么会关了呢?然后我就在设置中点开mysql,再点击Start MySQL Server,发现无法启动,显示:Warning:The /usr/local/mysql/data directory is not owned by the 'mysql' or '_mysql'。

再次找寻这个问题的解决方案,发现是因为Mac OS X的升级或其他原因会导致MySQL启动或开机自动运行时/usr/local/mysql/data的宿主发生了改变,没有了这个文件夹的权限了,所以在终端上执行:

sudo chown -R mysql /usr/local/mysql/data
即可解决。之后再点击Start MySQL Server,启动成功。然后/tmp下会自动生成mysql.sock,此时再在终端上运行mysql命令就可以成功启动mysql了。

下面说明一下这个语句的意思:sudo是非root用户临时获取root权利来执行,chown是修改文件或者文件夹的属主或者属组,-R是递归,即该目录下的子目录和文件都生效,mysql是要改成的文件夹属主,/usr/local/mysql/data就是你要修改的目标,可以是文件或文件夹。

如sudo chown -R user dir   指把dir以及它的所有子文件/文件夹的owner改成user.




chmod 与chown很相似,但是是控制文件/文件夹的读写执行权限的
范例 :将档案 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该档案拥有者可以执行 :
chmod u+x ex1.py
将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *
此外chmod也可以用数字来表示权限如 chmod 777 file
语法为:chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
范例:
chmod a=rwx file

chmod 777 file
效果相同
chmod ug=rwx,o=x file

chmod 771 file
效果相同
若用chmod 4755 filename可使此程序具有root的权限

sudo chmod -R 755 /var/dedecms/data/
sudo是非root用户临时获取root权利来执行
chmod是修改文件或者文件夹的档案如何被他人所调用
-R是递归,即该目录下的子目录和文件都生效
755 表示文件或文件夹的所有者有读、写、执行的权限,文件所有者同组的用户有读和执行的权限,其它用户有读和执行的权限
/var/dedecms/data/ 就是你要修改的目标

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当你遇到"Can't connect to local MySQL server through socket '/tmp/mysql.sock'"错误时,这意味着MySQL客户端无法通过指定的UNIX socket连接到MySQL服务器。UNIX socket是一种在同一台机器上的进程之间进行通信的方法。 该错误通常出现在以下情况下: 1. MySQL服务器没有运行或已经关闭。 2. MySQL服务器正在运行,但UNIX socket文件路径不正确。 3. 对UNIX socket文件路径的访问权限不正确。 要解决此问题,您可以按照以下步骤进行操作: 1. 确保MySQL服务器正在运行。您可以使用以下命令检查MySQL服务器的状态: ``` /usr/local/mysql/bin/mysqladmin -u root -S /var/lib/mysql/mysql.sock status ``` 2. 检查UNIX socket文件的路径是否正确。默认情况下,MySQL UNIX socket文件的路径为`/tmp/mysql.sock`,但在某些情况下,可能已被更改为其他位置。您可以使用以下命令查找UNIX socket文件的路径: ``` mysql_config --socket ``` 3. 如果UNIX socket文件路径不正确,您可以通过编辑MySQL配置文件来更正。MySQL配置文件通常位于`/etc/my.cnf`或`/etc/mysql/my.cnf`,您可以使用任何文本编辑器打开它并找到`socket`参数。将其更改为正确的路径,并保存更改。 4. 确保对UNIX socket文件的访问权限正确。MySQL服务器和客户端都需要对UNIX socket文件具有适当的访问权限。您可以使用以下命令更改文件权限: ``` sudo chmod 777 /tmp/mysql.sock ``` 通过执行上述步骤,您应该能够解决"Can't connect to local MySQL server through socket '/tmp/mysql.sock'"错误,并成功连接到MySQL服务器。 参考文献: ERROR 2002: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (111) mysql.sock 这个文件有什么用?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值