Mysql 停止工作了

Mysql 停止工作了

Mysql 已在我的系统上启动并运行,但我无法以任何用户身份登录。我也无法启动/停止/查看服务器状态。我得到的只是:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

/usr/bin/mysqladmin: connect to server at 'localhost' failed

错误:'拒绝用户'debian-sys-maint'@'localhost' 访问(使用密码:是)

从日志中:

Mar 24 08:30:13 debian /etc/mysql/debian-start[1074]: Upgrading MySQL tables if necessary.
Mar 24 08:30:13 debian /etc/mysql/debian-start[1078]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Mar 24 08:30:13 debian /etc/mysql/debian-start[1078]: Looking for 'mysql' as: /usr/bin/mysql
Mar 24 08:30:13 debian /etc/mysql/debian-start[1078]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Mar 24 08:30:13 debian /etc/mysql/debian-start[1078]: Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock' '--host=localhost' '--socket=/var/run/mysqld/mysqld.sock' '--host=localhost' '--socket=/var/run/mysqld/mysqld.sock' 
Mar 24 08:30:13 debian /etc/mysql/debian-start[1078]: /usr/bin/mysqlcheck: Got error: 1045: Access denied for user 'debian-sys-maint'@'localhost' (using password: YES) when trying to connect
Mar 24 08:30:13 debian /etc/mysql/debian-start[1078]: FATAL ERROR: Upgrade failed
Mar 24 08:30:13 debian /etc/mysql/debian-start[1111]: Checking for insecure root accounts.

我可以在终止进程后登录并启动 mysql,mysqld --skip-grant-tables但我无法重置 debian-sys-maint 密码:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'mypass';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

更新

UPDATE mysql.user set password=PASSWORD('secret') where user='debian-sys-maint';可以重置我的密码,但重新启动后,我再次遇到与该用户/mysql 相同的问题。

我该如何重置此密码以及为什么 mysql 停止工作?

答案1

您可以像这样手动启动 mysql 服务器:

$ sudo mysqld --skip-grant-tables

然后,您应该能够在没有有效密码的情况下登录。要解决用户debian-sys-maint问题,您可以从文件中获取密码/etc/mysql/debian.cnf。用您在此文件中找到的密码覆盖此用户的当前密码。此外,如果您忘记了 root 密码,请不要忘记覆盖它。

完成后,正常重新启动 mysqld。

答案2

当使用 skip grant 运行时,您必须使用以下命令重置密码:

UPDATE mysql.user set password=PASSWORD('secret') where user='debian-sys-maint';

而不是 GRANT。

(我没有测试语法是否正确。但只是对 mysql.user 表进行了更新!)

相关内容