当前位置: 首页 > 面试题库 >

错误1044(42000):具有所有特权的“ root”访问被拒绝

常飞翼
2023-03-14
问题内容

我有一个奇怪的错误。我通过命令行以root用户身份登录到本地Mysql。创建数据库后:

create database some_db;

然后给某些用户特权:

grant all privileges on some_db.* to some_user@'localhost' identified by 'password';

这给出了错误:

ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'some_db'

根目录的权限(显示授予;)显示:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*8919C53DC7A4DFBF3F8584382E96463583EB7FDA'

我还要确保以root用户身份登录:

select current_user();

这确认我以“ root” @“ localhost”的身份登录

我已经创建了数据库并多次分配了用户,但从未遇到问题。为什么以root用户身份登录时无法将用户分配给root用户创建的数据库?

PS从其他职位,我想这个问题可能是由于一些奇怪的用户引起的

select host, user from mysql.user;

我尚未添加但确实出现的一些用户:

 MY_COMPuTER_name.local |       ''
 MY_COMPuTER_name.local |     root

我试图删除这些用户

drop user 'root'@'MY_COMPuTER_name.local';
drop user ''@'MY_COMPuTER_name.local';

但是,尽管状态查询成功运行,但即使具有刷新特权也不会删除用户。为什么我无法删除用户?任何帮助都非常有用


问题答案:

首先,将您登录的用户标识为:

 select user();
 select current_user();

第一个命令的结果是您尝试登录时的身份,第二个命令是您实际连接时的身份。确认您root@localhost以mysql 身份登录。

Grant_privroot@localhost。这是您可以检查的方式。

mysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;
+-----------+------------------+-------------------------------------------+------------+------------+
| host      | user             | password                                  | Grant_priv | Super_priv |
+-----------+------------------+-------------------------------------------+------------+------------+
| localhost | root             | ***************************************** | N          | Y          |
| localhost | debian-sys-maint | ***************************************** | Y          | Y          |
| localhost | staging          | ***************************************** | N          | N          |
+-----------+------------------+-------------------------------------------+------------+------------+

您可以看到,对于root @ localhost,Grant_priv设置为N。必须为Y。下面是解决方法:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';

我重新登录,一切正常。



 类似资料:
  • 问题内容: 我想开始在MySQL中编写查询。 显示: 我没有任何用户ID,但是当我要成为一个用户时,我没有特权,即使我没有一个用户,我也不知道如何授予特权! 我试图以root用户身份登录: 问题答案: 不,您应该在bash中运行,而不是在MySQL命令行中运行。如果您使用的是mysql,则可以输入 exit退出 。

  • 问题内容: $ ./mysqladmin -u root -p ‘ 编辑 ‘ 输入密码: mysqladmin:在“ localhost”处连接到服务器失败错误: “对用户“ root” @“ localhost”的访问被拒绝(使用密码:是) 我怎样才能解决这个问题? 问题答案: 打开并编辑或,具体取决于您的发行版。 在下添加 重启MySQL 您现在应该可以使用以下命令登录mysql 跑 设置新密

  • 问题内容: 我正在设置新服务器,并继续遇到此问题。 当我尝试以root用户登录MySQL数据库时,出现错误: 错误1698(28000):用户’root’@’localhost’的访问被拒绝 是否通过终端(SSH),PHPMyAdmin或MySQL客户端(例如Navicat)连接都没有关系。他们都失败了。 我在mysql.user表中查看了以下内容: 如您所见,root应该具有访问权限。 该服务器

  • 问题内容: 通过将此Applet与JDBC结合使用,我将获得以下错误 问题答案: 如果不采取措施为小程序赋予适当的权限,您将无法在小程序中运行JDBC。Oracle 的本教程详细介绍了该主题。

  • 我不断收到这个错误。 我使用的是mySQL Workbench,我发现root的模式特权为空。根本没有特权。 我在我的服务器所使用的平台上遇到了麻烦,这是一个突如其来的问题。 root@127.0.0.1显然有很多访问权限,但我是以这个身份登录的,但它只是分配给localhost-localhost没有特权。 我已经做了一些事情,如,等,但没有发现成功的从它或互联网。 我如何恢复root的访问权限

  • 我安装了以下版本的MySQL: 我记得我在安装过程中没有为root用户设置密码。然而,如果我尝试使用命令简单地启动它,我会得到以下错误: 同样,作为root用户, 我尝试按照重置根密码:Unix和类Unix系统的说明进行操作;我在我的主目录中制作了文本文件,并从那里尝试使用选项启动MySQL服务器。但是,我再次收到权限错误: 我读到过类似的错误,无法连接到Mysql服务器;无法创建/写入pid文件