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

轉載 http://www.blogjava.net/jelver/archive/2015/03/22/423715.htmlhtml

第一種狀況java

[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' 來設置密碼了。mysql


第二種狀況sql

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,能夠解決問題了
數據庫

相關文章
相關標籤/搜索