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

时间:2017-02-10 06:43:45

标签: mysql sockets

使用mysqld_safe启动mysql server 5.7.17时,出现以下错误occcours。

scala> object E extends Enumeration { val X, Y, Z_* = Value }
defined object E

scala> val r = E.values.mkString("|").r
r: scala.util.matching.Regex = X|Y|Z_$times

scala> object E extends Enumeration { val X, Y = Value ; val Z = Value("*") }
defined object E

scala> val r = E.values.mkString("|").r
java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 4
X|Y|*
    ^
  at java.util.regex.Pattern.error(Pattern.java:1955)
  at java.util.regex.Pattern.sequence(Pattern.java:2123)
  at java.util.regex.Pattern.expr(Pattern.java:1996)
  at java.util.regex.Pattern.compile(Pattern.java:1696)
  at java.util.regex.Pattern.<init>(Pattern.java:1351)
  at java.util.regex.Pattern.compile(Pattern.java:1028)
  at scala.util.matching.Regex.<init>(Regex.scala:209)
  at scala.collection.immutable.StringLike.r(StringLike.scala:287)
  at scala.collection.immutable.StringLike.r$(StringLike.scala:287)
  at scala.collection.immutable.StringOps.r(StringOps.scala:29)
  at scala.collection.immutable.StringLike.r(StringLike.scala:276)
  at scala.collection.immutable.StringLike.r$(StringLike.scala:276)
  at scala.collection.immutable.StringOps.r(StringOps.scala:29)
  ... 29 elided

scala> object E extends Enumeration { val X, Y = Value ; val Z = Value(".*") }
defined object E

scala> val r = E.values.mkString("|").r
r: scala.util.matching.Regex = X|Y|.*

scala> "junk" match { case r() => }

如何解决?

6 个答案:

答案 0 :(得分:344)

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

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

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

答案 1 :(得分:39)

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

  

mysqld_safe目录&#39; / var / run / mysqld&#39;对于UNIX套接字文件不存在。

$ 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和/或其注册商标 分支机构。其他名称可能是其各自的商标 所有者。

输入&#39;帮助;&#39;或者&#39; \ h&#39;求助。输入&#39; \ c&#39;清除当前的输入声明。

的MySQL&GT;

  

现在是时候更改密码了:

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

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

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

现在再次`mysql -u root -p&#39;并使用新密码获取

  

的MySQL&GT;

答案 2 :(得分:4)

在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

答案 3 :(得分:0)

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

我们很可能已经安装了&#34; mysql_secure_installation&#34;因为这是一种最佳做法。导航到存在mysql_secure_installation的bin目录。它可以在Ubuntu系统的/ bin目录中找到。通过重新运行安装程序,系统将提示您是否更改根数据库密码。

答案 4 :(得分:0)

看到这个错误: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.

答案 5 :(得分:0)

发生在我身上。
消息实际上是不正确的(而且英语很糟糕:-))。

为了找出有问题的文件,我运行了这个命令(以 root 身份):
sh -x /etc/init.d/mysqld 启动

它打印了这个:

错误:无法通过套接字'/mysql-dir/mysql.sock'连接到本地MySQL服务器
检查 mysqld 是否正在运行以及套接字:'/mysql-dir/mysql.sock' 是否存在!

所以看起来套接字文件需要预先存在,所以我再次以root身份这样做:

cd /mysql-dir
触摸 mysql.sock
chown mysql:mysql mysql.sock

然后:
服务mysqld启动

瞧!