1. 程式人生 > 實用技巧 >MySQL學習筆記(25):常見問題

MySQL學習筆記(25):常見問題

本文更新於2020-05-04,使用MySQL 5.7,作業系統為Deepin 15.4。

目錄

忘記roo密碼

  1. 使用mysqld_safe --skip-grant-tables跳過許可權系統啟動服務。
  2. 不使用賬號密碼,直接使用mysql登入。
  3. 使用UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE user = 'root' [AND host = 'host'],不能使用SET PASSWORD
    ,因為--skip-grant-tables會導致其失敗。
  4. 使用FLUSH PRIVILEGES或重啟服務後,新密碼生效。

修改密碼

修改密碼有以下幾種辦法:

  • `mysqladmin password 'password'
  • SET PASSWORD [FOR user@host] = PASSWORD('password')
  • GRANT USAGE ON *.* TO user@host IDENTIFIED BY [PASSWORD] 'password'
  • UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE Host = 'host' AND User = 'user'; FLUSH PRIVILEGES;

MyISAM儲存引擎的表損壞

一張損壞的表的症狀通常是查詢意外中斷並且能看到下述錯誤:

  • “tbl_name.frm”被鎖定不能更改。
  • 不能找到檔案“tbl_name.MYI”(Errcode: nnn)。
  • 檔案意外結束。
  • 記錄檔案被損壞。
  • 從表處理器得到錯誤nnn。

解決方法有:

  • 使用工具:myisamchk -r tablenamemyisamchk -o tablename
  • 使用語句:CHECK TABLE tablenameREPAIR TABLE tablename

資料目錄磁碟空間不足的問題

對於MyISAM儲存引擎的表,可將表的資料檔案和索引檔案mv到磁碟空間充足的分割槽上,然後在原檔案處建立符號連結。mv前必須停機或將表鎖定。

對於InnoDB儲存引擎的表,可以增加一個新的資料檔案,具體實現方法是在引數innodb_data_file_path中增加此檔案的絕對路徑,如:innodb_data_file_path=/home/ibdata1:2000M;/home1/ibdata2:2000M:autoextend。

mysql.sock丟失後如何連線資料庫

如果指定localhost作為主機名,則會預設使用UNIX套接字檔案連線,而不是TCP/IP。通過--protocol=tcp|socket|pipe|memory選項,可以顯示地指定連線協議。

訪問內網資料庫

通過中轉伺服器,使用ssh管道,或MySQL Proxy工具。