2012-01-24 30 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服務並重新啓動即可。