--skip-grant-tables mysql的流程顺序

时间:2014-10-20 03:57:19

标签: mysql apache

我对我目前的情况有疑问。通常这个过程应该有效,但我似乎无法在之后成功登录。要么获得不正确的用户名/密码组合,要么"无法选择数据库"使用任何凭据登录时出错。

向前跳过一点我已关闭机器上的mysql服务器并使用命令

重新启动它

/etc/init.d/mysqld --skip-grant-tables

然后使用mysql -u root -p

登录

显然,这可以让我直接跳过权限检查。

我的目标是为桌面上的用户更改密码。

目前服务器上有三个数据库,我们将按如下方式调用它们。

INFORMATION_SCHEMA

MySQL的

gnb

gnb 中有一个名为用户的表格,其中包含用户名和密码字段。它在用户名下有一个名为 admin 的条目,我想更改密码,因为Web服务器从中提取数据。

我已使用命令

成功更改了此特定用户的密码

更新用户SET密码=密码(' MyNewPass')WHERE username =' admin&#39 ;; FLUSH PRIVILEGES;

1行受到影响,我可以看到密码哈希变化。也冲洗特权。

这里我遇到了我的问题......

一旦我重置密码并以正常模式重新启动mysql服务器,我将导航回Web服务器登录并尝试使用我现有的详细信息登录。

我遇到了"无法选择数据库" 错误消息。 我不确定在重新启动数据库之前是否需要做某些事情?或者我还必须重新启动Apache Web服务器?我尝试过不同组合的海市蜃楼,但似乎无法让它发挥作用。如果我仍然在--skip-grant-tables模式下尝试登录,那么我的登录尝试无效。

提前感谢/

我难过......

2 个答案:

答案 0 :(得分:1)

我认为您可能对MySQL身份验证系统的工作方式存在误解。

当应用程序(例如PHP脚本)连接到MySQL时,用户/密码将检查mysql.users表。它不检查另一个数据库中的任何其他表,即使该数据库(gnb)是包含应用程序数据的数据库。

您的gnb数据库中有一个名为“users”的表这一事实与MySQL身份验证系统无关。当然,您可以将所需的任何数据放入该表中,但MySQL身份验证不会使用它。

您可以使用SET PASSWORD命令更改密码,也可以直接更新mysql.users表,然后更新FLUSH PRIVILEGES。

答案 1 :(得分:0)

为了未来。

第二个表是在MD5中存储密码。 不使用任何密码命令更新行。只需一行更新并使用我希望使用的密码的MD5哈希值进行更新。

Web服务器然后将MD5字符串识别为正确的密码,并且我能够获得访问权。