我遇到了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)。
答案 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所必需的。