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

时间:2014-02-11 22:51:52

标签: mysql mysqladmin

我有奇怪的错误。我通过命令行以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'

root(show grants;)的权限显示:

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

我也确保以root身份登录:

select current_user();

这确认我以“root”@“localhost”

登录

我已多次创建数据库并分配了用户,但从未出现过问题。为什么我无法在root用户登录时将用户分配给root创建的数据库?

P.S。从其他帖子,我认为这个问题可能是由于一些奇怪的用户造成的

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';

但是,虽然它表明查询运行成功,但即使在刷新权限之后也不会删除用户。为什么我无法删除用户?任何帮助都非常适合

4 个答案:

答案 0 :(得分:41)

首先,确定您登录的用户:

 select user();
 select current_user();

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

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';

我重新登录,很好。

答案 1 :(得分:2)

当您尝试在MySQL(沿XAMPP服务器安装)cmd提示符下运行SQL命令时出现错误1044(42000),那么这是解决方案:

  1. 关闭MySQL命令提示符。

  2. 打开cmd提示符(从“开始”菜单 - >运行 - > cmd),将显示:C:\ Users \ User> _

  3. 通过键入以下命令转到MySQL.exe:

  4. C:\Users\User>cd\ C:\>cd xampp C:\xampp>cd mysql C:\xxampp\mysql>cd bin C:\xampp\mysql\bin>mysql -u root

    1. 现在尝试输入以下内容来创建新数据库:

      mysql> create database employee;
      

      如果显示:

      Query OK, 1 row affected (0.00 sec)
      mysql>
      

      然后恭喜!你很高兴...

答案 2 :(得分:1)

我无法通过'drop'语句删除某些用户的原因是Mysql http://bugs.mysql.com/bug.php?id=62255中存在一个主机名包含大写字母的错误。解决方案正在运行以下查询:

DELETE FROM mysql.user where host='Some_Host_With_UpperCase_Letters';

我仍在尝试解决另一个问题,即具有所有权限的root用户无法为特定数据库的新用户授予权限

答案 3 :(得分:0)

尝试在文件my.cnf中注释字符串“ sql-mode = ...”,然后重新启动mysql。