轉載 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 `user` VALUES ('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 `user` VALUES ('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 stop2.加參數啓動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,能夠解決問題了數據庫