sqlsourcesafe mysql_mysql权限问题,看不到其它的库!
今天在安裝mysql數據庫后,想開啟遠程連接,發現查詢不到了mysql數據庫自帶的mysql數據庫,是由于用戶的權限問題導。
[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'來設置密碼了。
第二種情況
1.首先停止mysql服務:servicemysqld 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.更新一下:flushprivileges;
10.然后重新啟動下mysql,可以解決問題了
因為mysql數據庫的user表里,存在用戶名為空的賬戶即匿名賬戶,導致登錄的時候是雖然用的是root,但實際是匿名登錄的,通過錯誤提示里的''@'localhost'可以看出來
1.關閉mysql# service mysql stop
2.屏蔽權限# mysqld_safe --skip-grant-table屏幕出現: Starting demo from .....
3.新開起一個終端輸入# mysql -u root mysqlmysql> delete from user where USER=''mysql> FLUSH PRIVILEGES;
//記得要這句話,否則如果關閉先前的終端,又會出現原來的錯誤
第一步:關閉mysql服務
第二步:終端輸入mysql_safe --skip-grant-tables
第三步:重啟mysql服務
原因:關機時。先關閉軟件 再關閉服務器。
總結
以上是生活随笔為你收集整理的sqlsourcesafe mysql_mysql权限问题,看不到其它的库!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opengl中gpu与cpu交互_Ope
- 下一篇: mysql datediff多一天_My