【问题标题】:Lost All Privileges in MYSQLMYSQL 失去所有权限
【发布时间】:2012-02-17 21:34:39
【问题描述】:

我在本网站和许多其他论坛上以多种形式看到过同样的问题。但是,我已经尝试了所有解决方案,但仍然有相同的结果。我很确定我过去曾经在这个 MySQL 服务器上拥有 root 访问权限,我什至能够使用 phpMyAdmin 工具在其他查询中创建数据库。现在,当我转到 phpMyAdmin 并单击数据库时,我受到了欢迎:

如果我使用命令工具,我可以使用以下方式登录:

mysql -u root -p

系统提示我输入密码,我这样做了。当我尝试做其他事情时,说:

mysql> SELECT user, host FROM mysql.user;

I get the following:
ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for table 'user'

我也关注了这篇文章 (http://benrobb.com/2007/01/15/howto-remote-root-access-to-mysql/),因为是的,我正在从远程机器 ssh 到这个 MySQL 服务器。同样,当我尝试时:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

以各种形式迎接我的是一个讨厌的:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

即使我输入了与登录时相同的密码!还要提一下昨天更新了我的梨资源,不知道是不是这个乱七八糟的原因……

如果有人可以指导我,我将不胜感激。感谢您的所有时间和考虑。

艾尔莎

****更新**** 在尝试排除故障和运行 mysqld 时,我现在无法启动服务器备份!每次我跑:

/etc/init.d/mysql start
Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!

我该怎么办?

【问题讨论】:

  • 我忘了说我也做过:mysql> SHOW GRANTS; +-------------------------------------------------- -------------------------------------------------- ----------+ |授予 root@localhost | +-------------------------------------------------- -------------------------------------------------- ----------+ |将 . 上的使用权授予 'root'@'localhost' 由密码识别 | +-------------------------------------------------- -------------------------------------------------- ----------+ 1 行在集合中(0.00 秒)
  • 您的 MySQL 服务器是如何安装/启动的?有一个选项可以让它在启动时忽略授权表,但它有你描述的副作用......
  • 哎呀,不幸的是我没有安装它。无论如何,我可以获得这些信息吗?另外,我在使用命令 /etc/init.d/mysql start/stop 之前已经停止并启动了它,如果它起作用的话..
  • 听起来您是通过某人托管的?或许可以尝试联系您的提供商,看看他们是否能做些什么?
  • 不,我将它托管在内部,我只是没有进行安装。我被赋予了基本上是管理员的任务,但我无法解决这个问题......

标签: mysql database phpmyadmin


【解决方案1】:

由于您对客户端具有本地访问权限,因此您可能会尝试使用 mysqladmin 重置 root 密码:

> mysqladmin password yournewrootpassword

如果您可以成功登录,则可能需要再次授予 root 访问权限,然后才能访问任何数据库:

GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'yournewrootpassword' WITH GRANT OPTION;

【讨论】:

  • 感谢您的回答,但我得到:mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'
【解决方案2】:

命令GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; 仅在您以拥有所有权限的用户身份登录时才有效...

由于您没有GRANT 的权限,在您的情况下,上述语句将不起作用...请联系管理员并获取 ACCESS 以连接...

【讨论】:

    【解决方案3】:

    感谢大家的反馈,我终于明白了大部分。解决问题

    /etc/init.d/mysql start
    Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!
    

    我做到了:

    ps aux | grep mysql
    

    这给了我:

    root     15265  0.0  0.1   3896  1284 pts/10   S    12:41   0:00 /bin/sh /usr/bin/mysqld_safe
    mysql    15302  1.6  2.8 132532 29600 pts/10   Sl   12:41   0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
    root     15303  0.0  0.0   3008   608 pts/10   S    12:41   0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
    root     16160  0.0  0.0   3120   708 pts/10   R+   12:42   0:00 grep mysql
    

    然后我做了:

    kill -9 15265
    kill -9 15302 
    

    之后我就可以使用以下命令启动 MySQL:

    /etc/init.d/mysql start
    

    从那里我找到了这篇文章: https://help.ubuntu.com/community/MysqlPasswordReset 对我来说神奇的是:

    /usr/sbin/mysqld --skip-grant-tables --skip-networking &
    

    我能够关注该主题并且也做到了:

    GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'yournewrootpassword' WITH GRANT OPTION;
    

    唯一有点奇怪的是,除了 root 需要的其他权限之外,root 仍然无权从 phpMyAdmin 创建数据库。但是,我可以从命令行创建数据库,现在我可以忍受了!

    再次感谢大家的宝贵时间和所有帮助!

    【讨论】:

      【解决方案4】:

      停止您的 MySQL 服务(UNIX 风格):

      /etc/init.d/mysqld stop 
      

      以特权启动您的 MySQL:

      /usr/bin/mysqld_safe  --skip-grant-tables
      

      使用你的 root 用户连接到 mysql 数据库

      /usr/bin/mysql -uroot -p mysql
      

      更新root权限

      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' 
      where User='root';
      

      之后,您只需停止 MySQL 服务并重新启动即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-29
        • 2011-06-14
        • 2020-11-22
        • 1970-01-01
        • 2022-01-22
        相关资源
        最近更新 更多