/var/run/ mysqld_safe '对于UNIX套接字文件don't存在

当使用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.

如何解决?

261220 次浏览

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

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

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

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

很可能我们中的许多人都安装了“mysql_secure_installation”,因为这是一个最佳实践。进入mysql_secure_installation所在的bin目录。它可以在Ubuntu系统的/bin目录中找到。通过重新运行安装程序,将提示是否修改root数据库密码。

当我使用代码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 &和get

mysqld_safe从/var/lib/mysql启动mysqld守护进程

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

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

版权所有(c) 2000,2017, Oracle和/或其关联公司。版权所有。

Oracle是Oracle公司和/或其公司的注册商标 子公司。其他名称可能是其各自的商标 主人。< / p >

输入'help;'或'\h'以获得帮助。输入'\c'清除当前输入语句。

mysql >

现在是时候改密码了:

mysql> use mysql
mysql> describe user;

读取表信息以完成表和列名 您可以通过-A

关闭此功能以更快地启动

数据库修改

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

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

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

替代方法:

   USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = 'localhost' AND User = '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 >

在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

请看这个错误:https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823

似乎有一个临时的解决办法

Create a newfile /etc/tmpfiles.d/mysql.conf:


# systemd tmpfile settings for mysql
# See tmpfiles.d(5) for details


d /var/run/mysqld 0755 mysql mysql -


After reboot, mysql should start normally.


发生在我身上 消息实际上是不正确的(在糟糕的英语中:-)) 为了找出有问题的文件,我运行了这个命令(作为root) Sh -x /etc/init.d / mysqld开始 < br >
它打印了这个:

错误:无法通过socket '/ MySQL -dir/ MySQL .sock'连接到本地MySQL服务器 检查mysqld是否正在运行,并且socket: '/mysql-dir/mysql. conf袜子的存在!< br >
因此,似乎套接字文件需要预先存在,所以我这样做了,同样作为root:
< br > < b > cd / mysql-dir < br > 触摸mysql.sock < br > chown mysql:mysql mysql. sock__abc0
然后:< br > Service mysqld start

瞧!< / p >