我试图创建一个非常简单的MySQL事件,并意识到该操作未运行。然后我意识到我使用的用户没有超级权限(或任何其他与事件相关的权限)。我尝试通过phpMyAdmin向该用户授予所有权限,但这不起作用(因为我以该用户登录而不是root用户)。事实上,我不确定我的帐户是否有root用户。 如何找出root用户是谁(用户名和密码)?
我正在使用具有cpanel的托管服务提供商,当我查看我的mysql用户列表时,我只看到我创建的那些。 如果我以其他用户身份登录,有没有办法通过phpMyAdmin查找?
此外,每当我在cpanel中创建用户时,我总是选中复选框以授予“所有权限”,但我刚刚发现超级权限和其他一些权限不在列表中。据我所知,我将无法创建任何mysql事件,因为我无法向我的任何用户授予超级权限。
增加:
将用户分配到数据库时,我可以选择的唯一权限是
从每个人在他们的答案中所说的看起来我正在使用共享数据库,事件计划要么关闭和/或我不被允许授予用户处理事件的权限。有点糟透..
但是现在我将使用cron jobs。
答案 0 :(得分:3)
您需要与您的托管服务提供商联系,并要求为您的帐户提供与活动相关的权限。他们很可能将所有用户数据库存储在同一个MySQL服务器下,因此出于明显的安全原因,无法授予root访问权限。
答案 1 :(得分:2)
经验法则:您的应用程序永远不需要超级用户权限。
甚至不使用事件系统。
在这种情况下,您唯一需要SUPER的是启用或禁用调度程序(这是一个服务器范围的设置)。如果您在共享数据库主机上,则无论是否已启用调度程序,以及您是否已获得数据库的EVENT权限,都将由提供程序决定。
如果您不在共享主机上,请检查my.ini上的 event-scheduler 行并确保其已启用。然后,确保您已经 granted EVENT 到您的应用程序用户ID。如果您在数据库上使用GRANT ALL PRIVILEGES
(而不是在单个表上),则应授予EVENT权限。
答案 2 :(得分:0)
select user()
会告诉您查询正在执行的登录信息。
但是,您不应该为处理面向公众的代码的数据库操作的任何代码授予“超级用户”权限。为了获得适当的安全性,面向公众的数据库代码应该具有完成工作所需的最低权限。通常只会更新/插入/删除/选择。
授予诸如drop / alter / create / grant / etc之类的东西......只是在寻找麻烦。
答案 3 :(得分:0)
我试图创建一个非常简单的MySQL事件,并意识到该操作未运行。然后我意识到我使用的用户没有超级权限
在阅读本文时,您可能首先要对异常进行更好的检查和处理,因为这样会在您的系统中发布一些错误。这是一项复杂的任务,需要对错误进行大量处理,以确定是否正确,否则您可能会发现自己在这部分中搜索了几个小时内的错误。