用户'root'@'localhost'访问被拒绝(使用密码:是)- 没有权限?

217

我一直收到这个错误。

我正在使用mySQL Workbench,发现root的模式权限为空。没有任何权限。

我的服务器在不同平台上都出现了问题,这是突然出现的问题。

root@127.0.0.1显然拥有很多访问权限,但我以该用户登录,但它仍然只分配给本地主机 - 本地主机没有权限。

我已经做了一些事情,如FLUSH HOSTSFLUSH PRIVILEGES等,但是从那以后或者说从互联网上都没有找到成功的方法。

如何恢复root的访问权限?我感到沮丧,因为当我四处看看时,人们都指望你“拥有访问权限”,但我没有访问权限,所以无法进入命令行或其他任何东西,并且不能给自己授权 GRANT

运行SHOW GRANTS FOR root时,返回以下内容:

  

错误代码:1141。 用户'root'在主机'%'上没有定义这样的授权


在查询中运行 SHOW GRANTS FOR root,并将结果发布在您的问题中。 - NobleUplift
你是想从本地主机或使用MySQL Workbench从另一台主机访问数据库吗? - Andy Jones
使用 --skip-grant-table 选项重新启动服务器,并使用任何用户登录并为 root 提供完全权限,然后再次在不使用上述选项的情况下重新启动服务器。 - vidyadhar
@AndyJones 不是的,我正在使用一台专用服务器。 - Chase
问题不在于忘记密码,而是所有权限都设置为本地主机,而您正在尝试从另一台计算机(非本地主机)访问数据库。 - Andy Jones
显示剩余3条评论
28个回答

0
请在本地主机上的phpmyadmin登录网页上仔细核对您的密码,如果正确无误,则可以正常使用,无需更改您的凭据。

0

我使用下面的SQL并重新启动MySQL服务器解决了相同的问题:

update mysql.user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y'
where user='root';

0

我在处理“Access Denied for User 'root'@'localhost' (using password: YES)”的问题上花费了数小时,最终找到了以下解决方案:

The answer to this problem was that in the my.cnf located within
/etc/mysql/my.cnf

the line was either 
bind-address = 127.0.0.1 
            (or)
bind-address = localhost
            (or)
bind-address = 0.0.0.0

I should prefer that 127.0.0.1

I should also prefer 0.0.0.0, it is more flexible 
because which will allow all connections

0
尝试以下步骤来解决此问题:
  1. 打开终端/命令提示符并导航到MySQL安装文件夹的bin文件夹。然后运行命令mysqld --console
  2. 如果您看到行171010 14:58:22 [Note] --secure-file-priv设置为NULL,则在执行上述命令后,与导入和导出数据相关的操作将被禁用。
  3. 然后您需要检查mysqld是否被Windows防火墙或其他程序阻止。
  4. 如果它被Windows防火墙阻止,则需要解除阻止并保存设置。
  5. 要解除mysqldmysql应用程序的阻止,请按照以下步骤操作:
    1. 转到命令提示符并键入wf.msc以打开防火墙设置。
    2. 单击“允许应用程序或功能通过Windows防火墙”。
    3. 检查mysqldmysqld实例是否在列表中可用,并选中域、公共和私有的复选框,然后保存设置。
  6. 返回bin文件夹,再次尝试步骤1中的命令。
  7. 它应该正常工作,不会显示任何错误。

现在应该可以无问题地运行MySQL控制台!


0

我认为你不必转义--init-file参数:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\\mysql-init.txt

应该是:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\mysql-init.txt


0
当我尝试使用Laravel应用程序连接Mysql数据库时,我遇到了同样的问题。我想建议您检查用户的密码。MySQL密码不应该有像#&等特殊字符...

在Bluehost上,从密码中删除特殊字符实际上解决了该问题。 - Mena

0

唯一有效的方法是在Ubuntu Mysql 5.5中执行sudo mysql,然后在/etc/my.cnf文件的[mysqld]部分添加skip-grant-tables


-2

我也遇到了同样的问题,结果发现我的数据库用户名是错的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接