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

在使用mysqld_safe启动mysql服务器5.7.17时,出现以下错误消息。

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. 

如何解决它?

这似乎很奇怪,这个目录不是在安装时创build的 – 是否手动更改了my.cfg中套接字文件的path?

你有没有尝试简单地创build这个目录自己,并重新启动服务?

 mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld 

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

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

 $ systemctl stop mysql.service $ ps -eaf|grep mysql $ mysqld_safe --skip-grant-tables & 

我解决了:

 $ mkdir -p /var/run/mysqld $ chown mysql:mysql /var/run/mysqld 

现在我使用相同的代码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和/或其附属公司的注册商标。 其他名称可能是其各自所有者的商标。

input'help' 或'\ h'寻求帮助。 input'\ c'清除当前的input语句。

MySQL的>

现在时间更改密码:

 mysql> use mysql mysql> describe user; 

阅读表格信息以完成表格和列名称您可以closures此function以使用-A更快地启动

数据库改变了

 mysql> FLUSH PRIVILEGES; mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd'); 

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

 UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root'; 

替代方法:

  USE mysql UPDATE user SET Password = PASSWORD('newpwd') WHERE Host = 'localhost' AND User = 'root'; 

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

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

现在需要quit mysql并停止/启动

 FLUSH PRIVILEGES; sudo /etc/init.d/mysql stop sudo /etc/init.d/mysql start 

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

MySQL的>

如果您的数据库没有任何数据,或者您有另一个数据库来恢复该数据,则可以尝试以下操作。 您将需要知道Ubuntu服务器的root密码,但不知道mysql的root密码。

很可能是我们很多人安装了“mysql_secure_installation”,因为这是最佳做法。 导航到mysql_secure_installation存在的bin目录。 它可以在Ubuntu系统上的/ bin目录中find。 通过重新运行安装程序,系统将提示是否更改根数据库密码。