mysql無密碼登錄:mysql忘記密碼怎么辦?
mysql無密碼登錄:mysql忘記密碼怎么辦?
對于剛裝的mysql不能遠程登錄,這是常見的問題,但本地登錄都是沒有問題的,因為root用戶對應的host為127.0.0.1或者localhost默認都是存在的,如圖

今天把root對應的本地連接的兩條記錄刪除了(實驗,項目中別亂刪),發現既不能遠程連接也不能本地連接,只能使用無密碼登錄了
第一步:停止mysql服務
/etc/init.d/mysqld stop
第二步:跳過密碼驗證
/usr/bin/mysqld_safe –skip-grant-tables 或 mysqld_safe –skip-grant-tables 跳過權限表啟動mysql?顯示
如果命令后加了&,則可以使用Ctrl+c退出,使其后臺運行,第三步也可以不用另開窗口
第三步:另開一個窗口(沒加&)
use mysql;
#刪除的記錄要insert進去,然后修改密碼
update user set password=password(“new_pass”) where user=”root”;
flush privileges;
注意:如果是忘記了密碼,使用上面的修改沒有問題,如果真的是刪除了localhost的記錄,再使用insert into user (user,host)?values (‘root’,’localhost’);這樣是不行的,因為這其中的每條記錄涉都及了很多權限的問題,有可能導致mysql數據庫消失(實際是沒有權限),這些權限要設置為Y,例如:
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’