socket只能连接本地mysql_无法通过socket home连接到本地MySQL服务器

无法通过socket home连接到本地MySQL服务器

我最近尝试用自制软件安装MySQL(mysql.sock),当我尝试运行它时,我收到以下错误:

ERROR 2002(HY000):无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器(2)

没有mysql.sock也没有/var/lib/mysql.sock。

我搜索过,但未找到任何mysql.sock文件。

我怎样才能解决这个问题?

socketman asked 2019-06-16T18:08:56Z

12个解决方案

71 votes

当你让服务器运行时

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

你应该在/tmp/mysql.sock中看到套接字。 但是,系统似乎期望它在/var/mysql/mysql.sock中。 要解决这个问题,你必须在/ var / mysql中创建一个符号链接:

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

这解决了我。 现在我的phpMyAdmin与localhost和127.0.0.1一起工作愉快。

归功于亨利

AAGD answered 2019-06-16T18:09:39Z

48 votes

看起来你的mysql服务器没有启动。 我通常运行stop命令,然后再次启动它:

mysqld stop

mysql.server start

同样的错误,这对我有用。

jesuis answered 2019-06-16T18:10:10Z

21 votes

尝试使用“127.0.0.1”而不是“localhost”进行连接。

Iswanto San answered 2019-06-16T18:10:34Z

11 votes

1)如果你在以下命令下运行时能够看到“mysql stopped”;

brew services list

2)如果你能用下面的命令启动mysql;

mysql server start

然后,将mysql添加到服务将解决您的问题。 使用此方法,mysql将在您的操作系统启动时作为服务启动。 为此,您可以运行以下命令;

brew services start mysql

之后,您可以重新启动操作系统并尝试连接到mysql。 我做了同样的事情并停止接收以下错误;

ERROR 2002(HY000):无法通过套接字连接到本地MySQL服务器   '/tmp/mysql.sock'(2)

我希望这有帮助。

Berk answered 2019-06-16T18:11:28Z

3 votes

我得到了同样的错误,这对我有所帮助:

$ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents

$launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

$mysql -uroot

mysql>

gouravtiwari21 answered 2019-06-16T18:11:52Z

2 votes

我在mac上遇到了同样的问题并通过以下教程解决了它

[https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew]

但是在继续之前不要忘记杀死或卸载旧版本。

命令:

brew uninstall mariadb

xcode-select --install

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - See more at: https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew#sthash.XQoxRoJp.dpuf

brew doctor

brew update

brew info mariadb

brew install mariadb

mysql_install_db

mysql.server start

Hany Sakr answered 2019-06-16T18:12:31Z

2 votes

由于我花了很长时间试图解决这个问题,并且在查找此错误时总是回到此页面,我会在此处留下我的解决方案,希望有人能节省我丢失的时间。 虽然在我的情况下我使用的是mariadb而不是MySql,但您仍然可以根据自己的需要调整此解决方案。

我的问题

是一样的,但我的设置有点不同(mariadb而不是mysql):

用自制软件安装mariadb

$ brew install mariadb

启动守护进程

$ brew services start mariadb

试图连接并得到上述错误

$ mysql -uroot

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

我的解决方案

找出/tmp/mysql.sock中所使用的/usr/local/mariadb/data/mariadb.sock文件(如本评论中所述):

$ mysql --verbose --help | grep my.cnf

/usr/local/etc/my.cnf ~/.my.cnf

order of preference, my.cnf, $MYSQL_TCP_PORT,

检查Unix套接字文件的运行位置(几乎与此处描述的一样):

$ netstat -ln | grep mariadb

.... /usr/local/mariadb/data/mariadb.sock

(你可能想要/usr/local/mariadb/data/mariadb.sock而不是mariadb)

将找到的套接字文件添加到/usr/local/mariadb/data/mariadb.sock(必要时创建文件)(假设从上面运行.my.cnf命令时列出了/tmp/mysql.sock):

[client]

socket = /usr/local/mariadb/data/mariadb.sock

重启你的mariadb:

$ brew services restart mariadb

在此之后,我可以运行mysql并得到:

$ mysql -uroot

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

所以我用超级用户权限运行命令,输入密码后我得到:

$ sudo mysql -uroot

MariaDB [(none)]>

笔记:

我不太确定你必须添加套接字的组,首先我有它[客户端 - 服务器],但后来我认为[客户端]应该足够了。 所以我改变它,它仍然有效。

运行/usr/local/mariadb/data/mariadb.sock时,我得到:/tmp/mysql.sock这有点令人困惑,因为它似乎是.my.cnf的实际位置(至少在我的机器上)

我想知道我在哪里可以配置/usr/local/mariadb/data/mariadb.sock实际上是/tmp/mysql.sock所以我可以使用默认设置而不是编辑我的.my.cnf(但我现在太累了,想出来......)

在某些时候,我在做出这个之前也做了其他答案中提到的事情。

dingalapadum answered 2019-06-16T18:14:42Z

1 votes

您需要运行mysql_install_db - 最简单的方法是,如果您在安装目录中:

$ cd /usr/local/Cellar/mysql//

$ mysql_install_db

或者,您可以输入mysql_install_db basedir参数,如下所示:

$ mysql_install_db --basedir="$(brew --prefix mysql)"

Kelley Robinson answered 2019-06-16T18:15:14Z

0 votes

只是为了添加这些答案,在我的情况下,我没有本地的mySQL服务器,它在docker容器内运行。 因此套接字文件不存在,并且“mysql”客户端无法访问。

sock文件由mysqld创建,mysql使用它与之通信。但是,如果您的mySql服务器未运行本地,则不需要sock文件。

通过指定主机名/ ip,不需要sock文件,例如

mysql --host=127.0.0.1 --port=3306 --user=xyz --password=xyz

Wayne answered 2019-06-16T18:15:54Z

0 votes

只是为了完成这个线程。因此经常使用MAMP(PRO)

这里的道路是

/Applications/MAMP/tmp/mysql/mysql.sock

alexdd55 answered 2019-06-16T18:16:25Z

0 votes

安装macos mojave后,不得不擦除/usr/local/var/mysql下的mysql文件夹,然后通过brew install mysql重新安装,否则权限相关的东西会出现在各处。

GnrlBzik answered 2019-06-16T18:16:51Z

0 votes

文件mysql.server start可能是命名管道,因为它位于临时文件夹中。 命名管道是永远不会永久存储的特殊文件。

如果我们制作两个程序,并且我们希望一个程序将消息发送到另一个程序,我们就可以创建一个文本文件。 我们有一个程序在文本文件中写一些东西,另一个程序读取我们的其他程序写的东西。 这就是管道,除了它不会将文件写入我们的计算机硬盘,IE不会永久存储文件(就像我们创建文件并保存它时一样)。

套接字与管道完全相同。 不同之处在于套接字通常用于网络 - 计算机之间。 套接字将信息发送到另一台计算机,或从另一台计算机接收信息。 管道和套接字都使用临时文件进行共享,以便它们可以“通信”。

在这种情况下很难辨别MySql正在使用哪一个。 不过没关系。

命令mysql.server start应该让'server'(程序)运行其无限循环,该循环将创建该特殊文件并等待更改(listen用于写入)。

之后,一个常见问题可能是MySql程序没有在您的计算机上创建文件的权限,因此您可能必须为其授予root权限

sudo mysql.server start

Tyler Curtis Jowers answered 2019-06-16T18:17:54Z

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值