如何调查/恢复 MySQL 权限?MySQL 错误 1045 (28000):拒绝用户访问

如何调查/恢复 MySQL 权限?MySQL 错误 1045 (28000):拒绝用户访问

错误 1045(28000):拒绝用户“root”@“localhost”访问(使用密码:是) Debian。

mysqld 据称正在监听 3306

Telnet 至 3306 有效

还尝试将其专门绑定到 localhost,然后绑定到 127.0.0.1,但没有任何区别

然而:

# netstat -ln | grep mysql
unix  2      [ ACC ]     STREAM     LISTENING     78993    /var/run/mysqld/mysqld.sock

# mysql -P3306 -ptest
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我尝试过的事情:

dpkg-reconfigure mysql-server-5.1  Doesn't help

http://www.debian-administration.org/articles/442没有帮助

此命令(来源):

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;

事实上没有帮助:

Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

那么该用户可能会被删除吗?可能性极小,因为这一切都是在一位同事更新软件包后发生的,一些单独的服务开始出现问题,但我的同事说他删除了违规者。

还有更多# mysqld_safe --skip-grant-tables运行时,只有使用有效密码才能访问数据表!因此,存在用户,并且会发生一些身份验证,因此出现0 rows affected上述情况。

权限表是否会以某种方式被损坏?当我获取 mysql 控制台的唯一方法是跳过它们时,我该如何重新创建/恢复它们?

我可以省去重新安装 MySQL 的麻烦吗?无论如何,现在我可以使用上述模式进入,因此我确实获得了数据库的转储。

答案1

基本上从 https://stackoverflow.com/questions/1709078/how-can-i-restore-the-mysql-root-users-full-privileges

我走进# mysqld_safe --skip-grant-tables开了一个# mysql -u root

做过 UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

做了正常的事情/etc/init.d/mysql start(在杀死特殊实例之后)

再次 # mysql -u root

然后 UPDATE mysql.user SET Password=PASSWORD('yrpass') WHERE User='root';

Root 有通行证。其他 mysql 用户在需要时也同样有通行证。

我发现根本没有任何特权/授权 - 无论--skip-grant-tables

使用 MySQL Workbench 首先 让root成为DBA但事实并非如此。

之后,我不得不恢复其他几个用户。幸运的是,我有table_priv之前的转储(在这一切发生之前),因此每个表的恢复应该没问题,但这只是我的情况。

我有几个 root 用户,'%' 'localhost' '127.0.0.1'其中一些用户有旧通行证。无需启动特殊实例,--skip-grant-tables我就可以与用户一起进入debian-sys-maint然而由于导入了其他系统的转储,所以密码不同!我通过查看解决了这个问题本文

我不知道最初是什么导致了这一切,有待讨论。

相关内容