Gumbo Asked: 2011-04-07 02:40:34 +0800 CST2011-04-07 02:40:34 +0800 CST 2011-04-07 02:40:34 +0800 CST 如何在不访问数据库“mysql”的情况下检索授予的权限? 772 作为无法访问mysql数据库的 MySQL 用户,是否可以恢复我的权限? mysql permissions 2 个回答 Voted Best Answer Gumbo 2011-04-07T03:23:12+08:002011-04-07T03:23:12+08:00 SHOW GRANTS在这种情况下似乎使用确实有效: SHOW GRANTS FOR CURRENT_USER; 尽管手册指出您仍然需要访问mysql数据库: SHOW GRANTS需要mysql数据库的SELECT权限。 直接访问mysql.user实际上是行不通的,可能是因为它还包含更多敏感信息,如其他用户的密码: mysql> SELECT * FROM mysql.user; ERROR 1142 (42000): SELECT command denied to user 'user'@'host' for table 'user' RolandoMySQLDBA 2011-04-07T08:43:25+08:002011-04-07T08:43:25+08:00 假设您对 /var/lib/mysql/mysql 文件夹具有只读访问权限,这是黑客的方法,不会中断正在运行的服务器并且不会暴露任何密码: 步骤 1) 在 Windows 机器上安装 MySQL。确保它与 Linux 版本的 MySQL 版本号相同。 步骤 2) 在 Windows 机器上关闭 mysql: C:\> net stop mysql 步骤 3) 从 Linux 服务器下载 mysql 模式并将各个文件存储在 Windows 机器上的 mysql 子文件夹中。mysql 模式包含各种 MyISAM 和 CSV 文件。 第 4 步)将“skip-grant-tables”行添加到 Windows 机器上的 my.ini 步骤 5) 在 Windows 机器上启动 mysql C:\> net start mysql 步骤 6) 在 Windows 机器上运行 mysql 客户端(此时不需要密码) 步骤 7) 在 mysql 客户端中运行此命令 插入 mysql.user SET Host = 'localhost', User = 'myhackeruser', Password = PASSWORD('whatever'), 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', max_questions = 0, max_updates = 0; 步骤 8) 在 Windows 机器上关闭 mysql: C:\> net stop mysql Step 9) 在 Windows 机器上启动 mysql: C:\> net start mysql 步骤 10) 以 myhackeruser 身份运行 mysql 客户端: C:\> mysql -umyhackeruser -pwhatever 步骤 11) 运行“SHOW GRANTS FOR 'whateveruserid'@'whateverhost';” 这是一种冗长的方法,但它确实有效。 试试看 !!!
SHOW GRANTS
在这种情况下似乎使用确实有效:尽管手册指出您仍然需要访问mysql数据库:
直接访问mysql.user实际上是行不通的,可能是因为它还包含更多敏感信息,如其他用户的密码:
假设您对 /var/lib/mysql/mysql 文件夹具有只读访问权限,这是黑客的方法,不会中断正在运行的服务器并且不会暴露任何密码:
步骤 1) 在 Windows 机器上安装 MySQL。确保它与 Linux 版本的 MySQL 版本号相同。
步骤 2) 在 Windows 机器上关闭 mysql:
C:\> net stop mysql
步骤 3) 从 Linux 服务器下载 mysql 模式并将各个文件存储在 Windows 机器上的 mysql 子文件夹中。mysql 模式包含各种 MyISAM 和 CSV 文件。
第 4 步)将“skip-grant-tables”行添加到 Windows 机器上的 my.ini
步骤 5) 在 Windows 机器上启动 mysql
C:\> net start mysql
步骤 6) 在 Windows 机器上运行 mysql 客户端(此时不需要密码)
步骤 7) 在 mysql 客户端中运行此命令
插入 mysql.user SET Host = 'localhost', User = 'myhackeruser', Password = PASSWORD('whatever'), 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', max_questions = 0, max_updates = 0;
步骤 8) 在 Windows 机器上关闭 mysql:
C:\> net stop mysql
Step 9) 在 Windows 机器上启动 mysql:
C:\> net start mysql
步骤 10) 以 myhackeruser 身份运行 mysql 客户端:
C:\> mysql -umyhackeruser -pwhatever
步骤 11) 运行“SHOW GRANTS FOR 'whateveruserid'@'whateverhost';”
这是一种冗长的方法,但它确实有效。
试试看 !!!