MySQL學習筆記(25):常見問題
阿新 • • 發佈:2020-07-27
本文更新於2020-05-04,使用MySQL 5.7,作業系統為Deepin 15.4。
目錄
忘記roo密碼
- 使用
mysqld_safe --skip-grant-tables
跳過許可權系統啟動服務。 - 不使用賬號密碼,直接使用
mysql
登入。 - 使用
UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE user = 'root' [AND host = 'host']
,不能使用SET PASSWORD
- 使用
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 tablename
或myisamchk -o tablename
。 - 使用語句:
CHECK TABLE tablename
和REPAIR 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工具。