Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統計

          留言簿(23)

          積分與排名

          優秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          linux的mysql權限錯誤導致看不到mysql數據庫

          今天早上收到朋友的信息說他家的數據庫被人干了,很是緊張,但是后面逐步排除,發現mysql安裝目錄下的數據文件都是正常,從linux歷史執行命令日志來看也沒有跡象表面是被人搞,同時mysql的錯誤log里面只有些不穩定的日志。最后搜索到兩篇這樣的文章,確定的確是權限這個問題導致的,但是為什么服務突然會有這種現象,目前還是查看中,同時整理下這兩篇文章,希望能夠幫到其他人。

          參考的原文:

          http://www.yebihai.com/kuangjiaxitong/linux/801.html
          http://www.unixdo.com/DataBase/1909.html

          [root@localhost ~]# mysql -uroot -p123

            Welcome 
          to the MySQL monitor. Commands end with ; or \g.

            Your MySQL connection id 
          is 7

            Server version: 
          5.0.77 Source distribution

            Type 
          'help;' or '\h' for help. Type '\c' to clear the buffer.

            mysql
          >show databases;

            
          +--------------------+

            
          | Database |

            
          +--------------------+

            
          | information_schema |

            
          | test |

            
          +--------------------+

            只顯示這個兩個數據庫,看不到mysql數據庫

            解決方法:

            此問題實際上是用戶沒有權限:

            
          1. 關閉mysql,service mysqld stop

            
          2. 啟動mysql: mysqld_safe --skip-grant-tables

            
          3. 再打開一個ssh連接服務器,進行mysql操作

            
          [root@localhost ~]#mysql

            Welcome 
          to the MySQL monitor. Commands end with ; or \g.

            Your MySQL connection id 
          is 7

            Server version: 
          5.0.77 Source distribution

            Type 
          'help;' or '\h' for help. Type '\c' to clear the buffer.

            mysql
          >show databases;

            在這個模式下是可以看到mysql數據庫的。

            在數據庫名mysql下的user表中,修改相應權限,比如:

            
          INSERT INTO `userVALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);

            如果已經存在了host為localhost的記錄,則先刪除該記錄,
          delete from user where host='localhost';

            然后再進行INSERT 
          INTO `userVALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);

            操作。

            操作完成后,將兩個ssh連接都關閉,然后再重新連接一個ssh,啟動mysql,service mysqld start,然后用mysql命令連接mysql數據庫

            
          [root@localhost ~]#mysql -uroot -p

            密碼為空。

            
          [如果此時還連接不上,再重啟一下mysql就好了,service mysqld restart]

            然后就可以用 
          [root@localhost ~]#mysqladmin -uroot password 'newpassword' 來設置密碼了。



          第二種情況

          1.首先停止mysql服務:service mysqld stop
          2.加參數啟動mysql:/usr/bin/mysqld_safe --skip-grant-tables & 
          然后就可以無任何限制的訪問mysql了
          3.root用戶登陸系統:mysql -u root -p mysql
          4.切換數據庫:use mysql
          5.顯示所有的表:show tables;
          這里就可以訪問表了
          6.查看user表中root用戶的localhost權限:select * from user where user='root' and host='localhost'
          7.在顯示的列表中顯示:root用戶的localhost的權限都是'N',表示root用戶本地登陸不具有權限
          8.修改root用戶的localhost權限:
            
          update 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' and host='localhost'        //這里需注意是否有這個條件的用戶
            9.更新一下:flush privileges;
            10.然后重新啟動下mysql,可以解決問題了




           

          posted on 2015-03-22 12:24 都市淘沙者 閱讀(7607) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 三都| 凯里市| 怀来县| 新竹县| 博白县| 赣州市| 顺平县| 开原市| 南郑县| 漯河市| 焉耆| 丰台区| 沂源县| 阿瓦提县| 梨树县| 叙永县| 白朗县| 高雄县| 长岭县| 密云县| 革吉县| 韩城市| 梁河县| 稻城县| 卢氏县| 凤阳县| 页游| 赤城县| 淳化县| 洞头县| 土默特左旗| 汝阳县| 金溪县| 徐州市| 梅河口市| 炉霍县| 金湖县| 新野县| 曲松县| 韩城市| 陇西县|