使用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() => }
如何解决?
答案 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启动
瞧!