mysqld_safe UNIX套接字文件的目录'/ var/run/mysqld'不存在

Raj*_*dip 156 mysql sockets

在使用mysqld_safe启动mysql server 5.7.17时,会出现以下错误:occcours.

2017-02-10T17:05:44.870970Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.872874Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.874547Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
Run Code Online (Sandbox Code Playgroud)

怎么解决?

Mat*_*ark 421

这个目录在安装时没有创建似乎很奇怪 - 您是否手动更改了my.cfg中套接字文件的路径?

您是否尝试过自己创建此目录,然后重新启动该服务?

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
Run Code Online (Sandbox Code Playgroud)

  • 它发生在mysql 5.7上.当你停止mysql服务时,/ var/run/mysqld会被删除,并在你重新启动服务时重新创建. (8认同)
  • 哇.这只是我在Linux之旅中遇到的众多错误之一.什么时候Linux社区意识到命令行不是要走的路,只是让UI工作. (7认同)
  • 必须对两者都使用 sudo (4认同)
  • 不,我没有手动进行任何更改。我将通过创建目录来尝试此操作。感谢您的建议 (2认同)
  • @Capy - 已投票 - @Matt Clark - 请编辑您的答案以包含以下信息:即使 DIR 可能已创建,但如果我们运行 - ```$ sudo /etc/init.d/mysql stop 则应将其删除````,谢谢 (2认同)

Par*_*Sen 54

当我使用代码mysqld_safe --skip-grant-tables &但我收到错误:

mysqld_safe UNIX套接字文件的目录'/ var/run/mysqld'不存在.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &
Run Code Online (Sandbox Code Playgroud)

我解决了:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld
Run Code Online (Sandbox Code Playgroud)

现在我使用相同的代码mysqld_safe --skip-grant-tables &并得到

mysqld_safe使用/ var/lib/mysql中的数据库启动mysqld守护程序

如果我使用$ mysql -u root我会得到:

服务器版本:5.7.18-0ubuntu0.16.04.1(Ubuntu)

版权所有(c)2000,2017,Oracle和/或其附属公司.版权所有.

Oracle是Oracle Corporation和/或其附属公司的注册商标.其他名称可能是其各自所有者的商标.

输入'help;' 或'\ h'寻求帮助.输入'\ c'清除当前输入语句.

MySQL的>

现在是时候更改密码了:

mysql> use mysql
mysql> describe user;
Run Code Online (Sandbox Code Playgroud)

读取表信息以完成表名和列名您可以关闭此功能以使用-A更快地启动

数据库已更改

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');
Run Code Online (Sandbox Code Playgroud)

或者如果你有一个可以从任何地方连接的mysql root帐户,你还应该这样做:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
Run Code Online (Sandbox Code Playgroud)

替代方法:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';
Run Code Online (Sandbox Code Playgroud)

如果您有一个可以从任何地方访问的root帐户:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here
Run Code Online (Sandbox Code Playgroud)

现在需要quit从mysql和停止/启动

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
Run Code Online (Sandbox Code Playgroud)

现在再次`mysql -u root -p'并使用新密码来获取

MySQL的>

  • 自MySQL 5.7.6以来,密码列被重命名为"authentication_string"在这里您可以阅读更多相关信息:https://bugs.mysql.com/bug.php?id = 76655 (8认同)

Hel*_*rez 5

在CentOS中为我工作:

$ service mysql stop
$ mysqld --skip-grant-tables &
$ mysql -u root mysql

mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

$ service mysql restart
Run Code Online (Sandbox Code Playgroud)