无法通过插座自制连接到本地MySQL服务器(Can't connect to local M

2019-07-20 08:29发布

我最近尝试用自制的MySQL安装( brew install mysql ),当我尝试运行它,我得到以下错误:

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

没有/tmp/mysql.sock也不是/var/lib/mysql.sock

我已经搜查,并没有发现任何mysql.sock文件。

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

Answer 1:

当你得到了服务器运行通过

mysql.server start

你应该看到/tmp/mysql.sock插座。 然而,该系统似乎期望它在/var/mysql/mysql.sock。 为了解决这个问题,你必须创建在/ var / mysql的一个符号链接:

sudo mkdir /var/mysql

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

这解决了这个问题对我来说。 现在我的phpMyAdmin的工作愉快地本地主机 ,127.0.0.1。

幸得亨利



Answer 2:

看起来像你的mysql服务器未启动。 我通常运行停止命令,然后重新启动它:

mysqld stop
mysql.server start

同样的错误,这对我的作品。



Answer 3:

尝试使用“127.0.0.1”,而不是“localhost”的连接。



Answer 4:

1) If you are able to see "mysql stopped" when you run below command;

brew services list

2) and if you are able to start mysql with below command;

mysql server start

then, adding mysql to services will fix your problem. With this method, mysql will start as service when your operating system started. To do so you can run below command;

brew services start mysql

After that, you can restart your operating system and try connecting to mysql. I did the same and stop receiving below error;

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

I hope this helps.



Answer 5:

我有一些目录从另一个MySQL(8.0)安装离开,未删除。

我解决了这个通过执行以下操作:

先卸载MySQL的

brew uninstall mysql@5.6

删除未删除的文件/文件夹

rm -rf /usr/local/var/mysql
rm /usr/local/etc/my.cnf

重新安装MySQL和它联系起来

brew install mysql@5.6
brew link --force mysql@5.6

启用并启动服务

brew services start mysql@5.6


Answer 6:

我得到了同样的错误,这就是帮了我:

$ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
$launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
$mysql -uroot
mysql>


Answer 7:

我面临着同样的问题在我的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


Answer 8:

我想补充到这些问题的答案,在我来说,我没有本地MySQL服务器,它是一个码头工人容器中运行。 所以套接字文件不存在,也不会为“MySQL的”客户端访问。

袜子文件被由mysqld的创建和MySQL使用此与之通信。 但是,如果你的MySQL服务器运行的不是地方,它不需要袜子文件。

通过指定主机名/ IP是不需要袜子文件,例如

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


Answer 9:

因为我花了相当长的一段时间,试图解决这个总是回来此页面寻找这个错误时,我会离开我的解决方案在这里希望有人可以节省我已经失去的时间。 虽然在我的情况,我使用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)

我的解决办法

找出my.cnf通过使用文件mysql (在此建议的评论 ):

$ 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

(你可能想grep mysql ,而不是MariaDB的)

添加您发现套接字文件~/.my.cnf (创建如有必要文件)(假设~/.my.cnf运行时,上市mysql --verbose ... -command从上面):

[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)]>

笔记:

  1. 我不太肯定,你必须添加插座组,第一我是有[客户端 - 服务器]但后来我想通[客户]应该够了。 所以我改变了它,它仍然有效。

  2. 当运行mariadb_config | grep socket mariadb_config | grep socket ,我得到: --socket [/tmp/mysql.sock]这是一个有点混乱,因为它似乎/usr/local/mariadb/data/mariadb.sock是实际的地方(至少在我的机器上)

  3. 我不知道我在哪里可以配置/usr/local/mariadb/data/mariadb.sock实际上被/tmp/mysql.sock这样我就可以使用,而不必修改我的默认设置.my.cnf (但我现在太累了,找出...)

  4. 在某些时候,我也想出此之前没有在其他的答案中提到的事情。



Answer 10:

安装MacOS的莫哈韦后,只好擦下的mysql目录/usr/local/var/mysql ,然后通过重新安装brew install mysql否则许可有关的东西会拿出所有的地方。



Answer 11:

该文件/tmp/mysql.sock可能是一个命名管道,因为它是在一个临时文件夹。 命名管道是永远不会被永久保存在特殊文件。

如果我们两个程序,我们希望一个程序来发送消息到另一个程序,我们可以创建一个文本文件。 我们在文本文件中的一个程序写的东西和其他程序读什么我们的其他程序中写道。 这是一个管道是什么,只是它不将文件写入到我们的电脑硬盘,IE不会永久存储文件(当我们创建一个文件并保存它像我们这样做。)

套接字是完全相同的一个管道。 不同的是,插座通常用于在网络上 - 计算机之间。 的插座将信息发送到另一台计算机,或者从另一台计算机接收信息。 这两种管道和套接字使用临时文件共享,使他们能够“沟通”。

这是很难辨别哪一个MySQL是在这种情况下使用。 虽然无所谓。

该命令mysql.server start应该得到的“服务器”(程序)运行其无限循环,这将创建一个特殊的文件,并等待变化( listen为写入)。

在此之后,一个常见的问题可能是mysql程序没有权限来创建你的机器上的文件,所以您可能必须给它root权限

sudo mysql.server start


Answer 12:

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

$ cd /usr/local/Cellar/mysql/<version>/ 
$ mysql_install_db

或者,你可以喂mysql_install_db一个basedir像下面的参数:

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


Answer 13:

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

这里的路径是

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


Answer 14:

我通过初始化数据库,然后启动它手动启动在系统偏好设置面板中的MySQL。 这解决了我的问题。



Answer 15:

室射频的/ usr /本地的/ var / mysql /下ib_logfile *



文章来源: Can't connect to local MySQL server through socket homebrew