用户debian-sys-maint的访问被拒绝

时间:2012-07-25 07:01:47

标签: mysql debian admin

我遇到了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)。

3 个答案:

答案 0 :(得分:107)

这是因为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

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

mysql -u root -p
# Then type MySQL root password
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>';

答案 1 :(得分:17)

问题是,您的GRANT语句使用IDENTIFIED BY PASSWORD子句,在这种情况下,mysql希望获得哈希密码,而不是明文密码。

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

答案 2 :(得分: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所必需的。