完全锁定MySQL!

时间:2011-06-17 13:52:18

标签: php mysql wamp

我已经设法在WAMP上完全锁定了MySQL。似乎所有用户都拒绝所有权限。我可以进入MySQL的唯一方法是通过命令提示符,但不输入用户。从那里,我完全不能做任何事......所有特权都被拒绝。我尝试更新root密码无济于事。

我也试过完全卸载WAMP和MySQL。卸载MySQL后,我删除了其中的数据目录,以摆脱那里的所有信息。重新安装WAMP后,问题仍然存在。

尝试访问PHPMyAdmin会导致:

#1045 - Access denied for user 'root'@'localhost' (using password: NO) 

任何人都可以帮忙吗?

编辑为什么人们投票结束这篇文章......?

EDIT2 出现了狂野secondary problem!你想让我做什么?回答或导航?

5 个答案:

答案 0 :(得分:11)

您需要使用命令行中的mysqladmin重置root密码。

mysqladmin password your-new-root-password

可能需要明确指定root用户:

mysqladmin -u root password your-new-root-password

也可能有助于从mysqladmin中刷新权限:

mysqladmin flush-privileges

然后,您可能需要将所有权限授予root。不确定是否有必要。

GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'your-new-password';

答案 1 :(得分:1)

http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

在尝试重置之前,请确保mysqld进程已被终止。尝试登录到mysql客户端,正如你在问题中所说的那样。

答案 2 :(得分:1)

如果完全擦除并重新安装导致同样的问题,则可能是您的环境中存在问题。

你没有提到你正在使用的Windows版本,但是我认为这些版本是Vista或更高版本的那些愚蠢的用户权限问题。我会检查以确保mysql服务用户帐户具有对mysql数据目录的读/写访问权限。文件。

要求的修复:

要检查运行服务的帐户,请打开services.msc,向下滚动相应的服务,然后查看“登录身份”列(或双击该服务,然后单击“登录”选项卡)。

要检查MySQL数据文件和文件夹的权限,请右键单击父文件夹并选择“属性”,然后选择“安全”选项卡(我不确定您是否有一个带有Home的安全选项卡,虽然 - 你不会在XP中。)

如果运行该服务的帐户无法完全控制文件夹及其中的文件,则需要编辑添加该用户的权限(或更改运行该服务的用户)。

如果所有这些都没有指向正确的方向,那么您应该查找在Win7 Home上安装WAMP的详细说明,并确保跟随它们,因为权限等等是Win7上的PITA。甚至可能是Win7 Home不允许你将web服务器/ sql服务器作为服务运行,因为Windows的主页版本经常被故意瘫痪(实际上,你不能在WinXP Home上运行IIS,以及文件夹安全权限被隐藏)。

答案 3 :(得分:0)

我只能通过从命令行运行mysql_secure_installation来重新获得访问权限。它让我经历了一些y / n问题并允许我(重新)设置根pw。

答案 4 :(得分:0)

只是在这上面花了很多时间。所以很多解决方案都行不通。终于这对我有用了。

使用skip-grant-tables重新启动MySQL,这绕过了安全性,现在您可以登录并运行:

USE mysql;
CHECK TABLE user;
REPAIR TABLE user;

很明显,我损坏了用户或其他东西。这解决了。此后,我发现我不再具有root用户。因此,我必须添加以下命令(与skip-grant-tables一起使用):

INSERT INTO mysql.user 
SET user = 'root', 
host = 'localhost', 
password = Password('yournewrootpw'), 
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';

希望这可以为其他人节省很多时间。