用户 debian-sys-maint 的访问被拒绝
Posted
技术标签:
【中文标题】用户 debian-sys-maint 的访问被拒绝【英文标题】:access denied for user debian-sys-maint 【发布时间】:2012-07-23 13:32:18 【问题描述】:我遇到了 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)。
【问题讨论】:
【参考方案1】:这是因为 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>';
【讨论】:
我在 /etc/mysql/debian.cnf 中有字段 [client] 和 [mysql_upgrade]。用户在文件和数据库中的密码相同。 是的,您只需要更新密码,因为此通行证对于每个安装都是唯一的。例如:您将 data_dir 从一台服务器移动到另一台服务器,因此 pass 不匹配【参考方案2】:问题是,您的GRANT
语句使用IDENTIFIED BY PASSWORD
子句,在这种情况下,mysql 期望得到一个 散列 密码,而不是明文密码。
如果您希望提供明文密码,请改用IDENTIFIED BY 'your password'
。
【讨论】:
【参考方案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 所需要的。
【讨论】:
@specializt。它解决了我的问题。请注意上述符号。 为什么我要“小心”一些“符号”?这没有任何意义。 因为如果在运行该命令之前,mysql服务没有停止,可能该命令不能在mysql中的某些表上执行。 这导致/usr/sbin/dpkg-reconfigure: mysql-server-5.7 is broken or not fully installed
以上是关于用户 debian-sys-maint 的访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
“aaaaa”存储库的拉取访问被拒绝不存在或可能需要“docker login”