我在生产中运行了一个MySQL 5.6,它有一个多年使用的遗留root
帐户。作为一个强化程序的一部分,我想删除这个root
帐户--通过另一个基本不命名为root
的帐户来提供它。
在创建另一个名为adminacc
的帐户并在DB上进行完全访问之后,我删除了名为root
的帐户。在此操作之后,所有(adminacc
仍可登录)我的其他帐户无法再登录接收以下消息
SQL State 28000 Error 1045: Access denied for user 'XXX'@'wathever' (using password: YES)
我在数据库上授予了拒绝帐户的全部访问权--但没有成功。最后,我重新创建了我的root
帐户(使用相同的密码,不确定这里是否相关),我的DB帐户返回了。
它怎么可能在帐户(它是初始root
)和MySQL中的另一个帐户之间存在依赖关系?是不是因为我在以root
用户的身份连接时创建了另一个帐户?还是另一个帐户试图查询由root
帐户创建的视图?我相信没有,只是抛出想法试图去理解。
我觉得最奇怪的是,被拒绝帐户的连接并没有被完全拒绝。当测试来自Windows odbcad32.exe
实用程序的连接时,它成功了!但是,无论何时在app上下文中使用(从同一个窗口主机运行),它都失败了。
我确实运行了一个捕获,这是输出(这是来自应用程序上下文)
您可以看到登录实际上进行得很好;很少有查询是正确执行的(基本上是在会话开始时的init状态,如SET NAMES utf8
或SET SQL_AUTO_IS_NULL = 0
)。然后,当用户试图对其中一个DB视图执行SELECT时,会引发错误。
Nota:我发现MySQL文档中没有建议不要删除初始的root
帐户。没有描述这种情况。我在网上浏览了一下,发现了以前的StackOverflow问题,但仍然没有人接。
发布于 2022-05-31 09:23:27
https://stackoverflow.com/questions/72424554
复制