Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 错误1044(42000):拒绝访问';根';以所有特权_Mysql_Mysqladmin - Fatal编程技术网

Mysql 错误1044(42000):拒绝访问';根';以所有特权

Mysql 错误1044(42000):拒绝访问';根';以所有特权,mysql,mysqladmin,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

我有个奇怪的错误。我通过命令行以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'
根目录(show grants;)的权限显示:

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

select current_user();
这确认了我是以“root@“localhost”身份登录的

我多次创建数据库和分配用户,从未遇到过问题。为什么在以root用户身份登录时无法将用户分配到root用户创建的数据库

p、 从其他帖子来看,我认为这个问题可能是由于一些奇怪的用户引起的

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

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

我无法通过'drop'语句删除一些用户的原因是Mysql中有一个错误,主机名包含大写字母。解决方案正在运行以下查询:

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

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

我无法通过“drop”语句删除部分用户的原因是Mysql中存在一个错误,主机名包含大写字母。解决方案正在运行以下查询:

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

我仍在试图解决另一个问题,即拥有所有权限的root用户无法向特定数据库的新用户授予权限。首先,确定您登录的用户:

 select user();
 select current_user();
第一个命令的结果是您试图以身份登录,第二个命令是您实际连接的身份。确认您以
root@localhost
在mysql中

授予
root@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. 这需要为Y。以下是如何修复此问题:

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

我重新登录,一切正常

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

 select user();
 select current_user();
第一个命令的结果是您试图以身份登录,第二个命令是您实际连接的身份。确认您以
root@localhost
在mysql中

授予
root@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. 这需要为Y。以下是如何修复此问题:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';
我重新登录,一切正常

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

  • 关闭MySQL命令提示符

  • 打开cmd提示符(从开始菜单->运行->命令),它将显示:C:\Users\User>_

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

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

  • 现在尝试通过键入以下内容创建新数据库:

    mysql> create database employee;
    
    如果显示:

    Query OK, 1 row affected (0.00 sec)
    mysql>
    
    那么恭喜你!你可以走了

  • 如果尝试在MySQL(随XAMPP服务器安装)cmd提示符下运行SQL命令时出现错误1044(42000),则解决方案如下:

  • 关闭MySQL命令提示符

  • 打开cmd提示符(从开始菜单->运行->命令),它将显示:C:\Users\User>_

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

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

  • 现在尝试通过键入以下内容创建新数据库:

    mysql> create database employee;
    
    如果显示:

    Query OK, 1 row affected (0.00 sec)
    mysql>
    
    那么恭喜你!你可以走了


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

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

    您没有在第一个
    GRANT
    语句中引用用户名。例如,“我的根”
    SHOW GRANTS
    表示:
    将*.*上的所有权限授予由。。。使用授权选项
    。最后一部分对于能够授予特权有点重要;)谢谢你的建议。也许,这些都是好的,但没有确切的必要,这并不能解决问题。再次感谢@Phil和@Wrikken指出,那么“授予”选项是一个特例,不包括在“所有特权”条款中。您没有在第一次
    grant
    声明中引用用户名。例如,“我的根”
    SHOW GRANTS
    表示:
    将*.*上的所有权限授予由。。。使用授权选项
    。最后一部分对于能够授予特权有点重要;)谢谢你的建议。也许,这些都是好的,但没有确切的必要,这并不能解决问题。再次感谢@Phil和@Wrikken,那么“授予”选项是一个特例,不包括在“所有特权”条款中。发誓……这太棒了!非常感谢。这就解决了问题。我不知道有两种类型授予权限以及如何查看和设置它们。学得好。非常感谢mysql 5.5.37 Ubuntu12.04 LTS,根据这个答案,我看到所有的东西都是正确的,并且仍然得到用户“root”@“localhost”对数据库的访问被拒绝的错误1044(42000)…否-解决方法是确保在使用的/etc/和/var/lib/mysql中没有原始安装的残留。最初的安装没有任何根用户,由我的主机提供商完成。添加根用户和手动设置权限没有帮助!我必须从头开始重新安装,没有/etc和/var/lib/mysql内容,并且从