丢失了MYSQL中的所有权限

时间:2012-01-24 16:16:54

标签: mysql database phpmyadmin

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

enter image description here

如果我使用命令工具,我可以使用:

登录
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)

即使我输入的密码也是我用来登录的!我还想提一下,昨天我更新了我的梨资源,我想知道这是不是这个混乱的原因......

如果有人能指导我,我会非常感激。感谢您的所有时间和考虑。

Elshae

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

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

我该怎么办?

4 个答案:

答案 0 :(得分:6)

停止MySQL服务(UNIX风格):

/etc/init.d/mysqld stop 

使用权限启动MySQL:

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

使用root用户连接到mysql DB

/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服务并重新开始。

答案 1 :(得分:2)

我感谢大家的反馈,我最终得到了它。解决

的问题
/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仍然没有权利从phpMyAdmin创建数据库以及root需要的其他权限。但是,我能够从命令行创建数据库,现在我可以忍受!

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

答案 2 :(得分:1)

如果您以拥有所有权利的用户身份登录,则命令GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;将起作用...

由于您没有GRANT的权利,在您的情况下,上述声明将无效...请联系管理员并获取ACCESS以进行连接...

答案 3 :(得分:0)

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

> mysqladmin password yournewrootpassword

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

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