44

我遇到了mysql的问题。我试图执行这个:

echo "show databases" | mysql -B -N

但我得到了:

ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)

但是当我执行时:

/etc/init.d/mysql restart 

我得到了一个“好的”。

我做了

GRANT ALL PRIVILEGES on *.* TO debian-sys-maint@localhost IDENTIFIED BY PASSWORD 'your password' WITH GRANT OPTION; FLUSH PRIVILEGES;

密码来自哪里/etc/mysql/debian.cnf。但这没有帮助。(当然我刷新了 priv 并重新启动了 mysql)。

4

3 回答 3

119

那是因为 Debian 有一个 MySQL 帐户debian-sys-maint,用于打开/关闭和检查状态。该用户的密码应与存储在/etc/mysql/debian.cnf. 该文件如下所示:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = <password>
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = <password>
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

如果密码不匹配(例如因为您手动更改了密码),初始化脚本将不再工作。您应该根据文件设置密码。所以

mysql -u root -p
# Then type MySQL root password
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>';
于 2012-07-25T07:10:20.637 回答
17

问题是,您的GRANT语句使用IDENTIFIED BY PASSWORD了子句,在这种情况下,mysql 期望得到一个散列密码,而不是明文密码。

IDENTIFIED BY 'your password'如果您希望提供明文密码,请改用。

于 2012-10-21T22:56:01.247 回答
3

恢复 debian-sys-maint 用户最简单的方法是重新配置包 mysql-server-5.5。如果您知道 MySQL 的 root 用户的密码,您可以尝试在 /etc/mysql/debian.cnf 中恢复用户及其密码。

sudo dpkg-reconfigure mysql-server-5.5

注意:如果您无法停止 mysql pid,只需运行sudo killall mysqld. 这是重新配置 mysql-server-5.5 所必需的。

于 2015-03-06T19:30:57.457 回答