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

如何解决?


这个目录在安装时没有创建,这看起来很奇怪——您是否手动更改了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根我将得到:

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

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

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

输入'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

现在需要退出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开始 它打印了这个: 无法通过套接字'/ MySQL -dir/ MySQL .sock'连接到本地MySQL服务器 检查mysqld是否正在运行,并且socket: '/mysql-dir/mysql. conf袜子的存在! 因此,套接字文件似乎需要预先存在,所以我这样做了,同样以root身份: cd / mysql-dir 触摸mysql.sock Chown mysql:mysql mysql.sock 然后: 服务mysqld启动 瞧!