MySQL常見問題和應用技巧

來源:互聯網
上載者:User

標籤:

前言

在MySQL日常開發或者是維護中,有一些問題或是故障往往是難以避免的,如丟失密碼、表損壞。在此總結一下常見的問題,以備今後所需。

忘記MySQL的root密碼

解決辦法:

1.登入資料庫所在伺服器,手動kill掉Mysql進程

關閉進程的命令為:kill 進程號(linux下)
關閉進程的命令為:taskkill 進程號(win下)
怎麼查看進程號呢?
我們都知道MySQL的進程號一般都會儲存在Mysql資料目錄下的,它記錄了Mysql的服務進程號。檔案名稱為hostname.pid,如下,其中YEGZT8JOIIU2LKY為主機名稱。

linux下查看進程通過使用ps命令;在win下,我們也可以通過tasklist查看進程號,

開啟該檔案,可以看到,裡面僅僅記錄著進程好

現在為了方便,我主要示範win下操作,不準備開啟虛擬機器在測試了。如果我們不熟悉taskkill命令,可以通過taskkill /?來查看命令。

2.使用–skip-grant-tables選項重啟MySQL服務

linux下
文法:./bin/mysqld_safe –skip-grant-tables
其中–skip-grant-tables選項代表啟動mysql
(注意win下安裝的Mysql,我使用mysqld –skip-grant-tables )

3.使用空密碼的root使用者串連MySQL,並修改root口令


修改如下
因為使用–skip-grant-tables啟動,故使用set password命令失敗。

使用update語句,直接更新mysql資料庫中user表。

4.更新許可權

5.重新登入

退出後,發現在此使用mysql -uroot登入,會登陸不成功,只能使用密碼登陸。

處理MyISAM儲存引擎的表損壞

在使用MySQL,可能會遇到過MyISAM儲存引擎的表損壞的情況。如以下情況:

  • .frm被鎖定不能修改
  • 找不到.myi檔案(索引檔案)
  • 我呢間意外結束
  • 記錄檔案被毀壞
  • 從表處理器得到錯誤nnn
    解決辦法1
    使用MySQL內建的myisamchk工具進行修複
    開啟bin目錄,可以看到該工具

    命令如下
    myisamchk -r tablename
    r代表recover

    myisamchk -o tablename
    -o參數代表–safe-recover 可以進行更安全的修複
    解決辦法2
    使用MySQL的CHECK table和repair table命令進行修複
    check table用來檢查表是否有損壞,repair table用來對壞表進行修複。
MyISAM表過大,無法訪問問題

首先我們可以通過myisamchk命令來查看MyISAM表的情況。如,我查看admin表

datefile length代表當前檔案大小
keyfile length代表索引檔案大小
max datefile length 最大檔案大小
max keyfile length 最大索引大小
可以通過如下命令來進行擴充資料檔案大小
alter table table_name MAX_ROWS=88888888 AVG_ROW_LE=66666

資料目錄磁碟空間不足的問題針對MyISAM儲存引擎

可以將資料目錄和索引目錄存放到不同的磁碟空間。

針對InnoDB儲存引擎

對於InnoDB儲存引擎的表,因為資料檔案和索引檔案時存放在一起的。所以無法將他們分離。當磁碟空間出現不足時候,可以增加一個新的資料檔案,這個檔案放在有充足空間的磁碟上。具體實現是通過InnoDB_data_file_path中增加此檔案。
innodb_data_file_path=/home/mysql/data:10000M;/user/mysql/data:10000M:autoextend
參數修改之後,需要重啟伺服器,才可以生效。

同一台主機上安裝多個Mysql

除了每個Mysql安裝目錄不能相同外,還需要的是port和socket不能一樣。
mysql.sock就是用戶端串連與mysql間通訊用的。socket檔案,只能本機使用,遠端連線要通過tcp/ip了。

總結

時隔一個月了,方將《MySQL資料庫開發、最佳化與管理維護》閱讀完。感覺這本書還是相當不錯的,挺適合像我這樣的初學者。在閱讀過程中,感覺受益頗多。

MySQL常見問題和應用技巧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.