2012-01-24 74 views
5

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

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'ing这个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! 

我该怎么办?

+0

我忘了说我也做了: mysql> SHOW GRANTS; + ------------------------------------------------ -------------------------------------------------- ----------- + |授予root @ localhost | + ------------------------------------------------ -------------------------------------------------- ----------- + |授予使用*。*到'root'@'localhost'通过密码| + ------------------------------------------------ -------------------------------------------------- ----------- + 集合中的第1行(0.00秒) – elshae

+0

您的MySQL服务器是如何安装/启动的?有一个选项可以让它在启动时忽略授权表,但它有类似你所描述的副作用... – Romain

+0

Ouch,不幸的是我没有安装它。无论如何,我可以得到这些信息吗?此外,我已经停止并启动它之前使用命令/etc/init.d/mysql开始/停止,如果它发挥任何部分.. – elshae

回答

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 [email protected] IDENTIFIED BY 'yournewrootpassword' WITH GRANT OPTION; 

唯一有点奇怪的是,根目录仍然没有权限从根目录需要的其他权限中创建来自phpMyAdmin的数据库。但是,我可以从命令行创建数据库,现在我可以忍受这一点!

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

0

既然你已经在客户端本地访问,你可能会尝试与mysqladmin重新设置root的密码:

> mysqladmin password yournewrootpassword 

如果可以成功登录,那么很可能你之前需要获得root权限再次可以访问任何数据库:

GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY 'yournewrootpassword' WITH GRANT OPTION; 
+1

谢谢你的回答,但我得到: mysqladmin:连接到'localhost'服务器失败 错误:'拒绝用户root'@'localhost'(使用密码:否)' – elshae

0

命令,如果您登录因为谁拥有所有权限的用户GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;只会工作...

因为您没有GRANT的权利,所以您的情况以上声明将不起作用...请与管理员联系并获得ACCESS连接...

+0

我是管理员...并且这是唯一的DB帐户,它似乎.. – elshae

6

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

/etc/init.d/mysqld stop 

与权限启动你的MySQL:

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

连接到MySQL数据库与你的root用户

/usr/bin/mysql -uroot -p mysql 

更新根特权

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服务并重新启动即可。