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

falq053o  于 2023-04-19  发布在  Mysql
关注(0)|答案(6)|浏览(135)

使用mysqld_safe启动mysql server 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.

怎么修?

azpvetkf

azpvetkf1#

这个目录没有在安装时创建似乎很奇怪-您是否手动更改了my.cfg中套接字文件的路径?
你有没有试过自己简单地创建这个目录,然后重新启动服务?

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

xggvc2p62#

当我使用代码mysqld_safe --skip-grant-tables &,但我得到错误:
UNIX套接字文件的mysqld_safe目录'/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)
Oracle和/或其附属公司版权所有(c)2000,2017。保留所有权利。
Oracle是Oracle Corporation和/或其附属公司的注册商标。其他名称可能是其各自所有者的商标。
键入“help;”或“\h”以获得帮助。键入“\c”以清除当前输入语句。
联系我们
现在是时候更改密码了:

mysql> use mysql
mysql> describe user;

阅读表信息以完成表和列名您可以使用-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'并使用新密码获取
联系我们

bwntbbo3

bwntbbo33#

在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
  • 更新:

在较新版本的MySQL中,命令是:

use mysql; # use mysql table
  update user set authentication_string=PASSWORD("") where 
  User='root'; # update password to ""
  update user set plugin="mysql_native_password" where 
  User='root'; 

  flush privileges;
  quit;
s5a0g9ez

s5a0g9ez4#

发生在我身上。
消息实际上是不正确的(和在糟糕的英语:-))。
为了找出有问题的文件,我运行了这个命令(作为root用户):

sh -x /etc/init.d/mysqld start

它打印了这个:
错误:无法通过套接字连接到本地MySQL服务器'/mysql-dir/mysql.sock'
检查mysqld是否正在运行以及套接字:'/mysql-dir/mysql.sock'存在!
所以看起来socket文件需要预先存在,所以我这样做了,再次作为root用户:

**cd /mysql-dir

触摸mysql.sock
chown mysql:mysql mysql.sock**
然后:

service mysqld start

瞧!

ffscu2ro

ffscu2ro5#

看看这个bug: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.
q35jwt9p

q35jwt9p6#

如果你的数据库没有任何数据,或者你有另一个备份来恢复数据,你可以尝试以下方法。你需要知道Ubuntu服务器的root密码,而不是mysql的root密码。
我们中的许多人很可能已经安装了“mysql_secure_installation”,因为这是一个最佳实践。导航到mysql_secure_installation所在的bin目录。它可以在Ubuntu系统上的/bin目录中找到。通过重新运行安装程序,您将被提示是否更改根数据库密码。

相关问题