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

Bar*_*zyk 42 mysql debian admin

我有mysql的问题.我试图执行这个:

echo "show databases" | mysql -B -N
Run Code Online (Sandbox Code Playgroud)

但我得到了:

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

但当我执行时:

/etc/init.d/mysql restart 
Run Code Online (Sandbox Code Playgroud)

我得到了'好'.

我做到了

GRANT ALL PRIVILEGES on *.* TO debian-sys-maint@localhost IDENTIFIED BY PASSWORD 'your password' WITH GRANT OPTION; FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

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

Ome*_*esh 112

这是因为Debian有一个debian-sys-maint用于打开/关闭和检查状态的MySQL帐户.该用户的密码应与存储的密码相同/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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 是的,您所需要的只是 - 更新密码,因为此通行证对于每次安装都是唯一的。例如:您将 data_dir 从一台服务器移动到另一台服务器,因此传递不匹配 (2认同)

pon*_*cha 17

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

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