1. 程式人生 > >MySQL連線服務端時的幾個bug

MySQL連線服務端時的幾個bug

最近在使用MySQL 做服務端的資料儲存,之前只使用過sqlite3移植到開發板,屬於嵌入式的那種檔案式的關係型資料庫,但是為了滿足服務端的需求,必須使用sql server或者是MySQL這樣的資料庫開發才便於管理大型的資料儲存和管理。

MySQL是C/S模式的,一開始不是很理解為什麼要用這種模式,即便我在一個系統內部本地的訪問也還是需要使用客戶端去連線服務端,則是因為Mysql-server是直接面向資料庫檔案進行操作的,它會把客戶端傳送過來的SQL指令翻譯成相應的指令,並且對檔案進行操作,最後將結果傳送回客戶端,這樣的模式更有很多優點,得等之後深入的使用之後才會有感觸。

上bug:

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock(2)

今天連線的時候使用語句

mysql -u root -p 

出現錯誤

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

解決方法

mysql -h 127.0.0.1 -P 3306 -u root -p

bug2:  Can't connect to MySQL server on '127.0.0.1' (111)

重啟了虛擬機器之後再次嘗試連線mysql,發現又連不上了。檢視一下網路狀態,發現沒執行mysql服務端

ps -aux | grep mysql 

netstat -nlp

那就開啟吧

 service mysql start

bug3: Couldn't find MySQL server (/usr/bin/mysqld_safe)

但是還是不行,出現錯誤找不到mysqld_safe

那肯定是讀取配置檔案的時候出現了問題,於是借鑑了一下別人的解決方案

先看一下這個my.cnf裡面的內容

[email protected]:/etc# cd mysql/
[email protected]:/etc/mysql# ls
conf.d  my.cnf
[email protected]:/etc/mysql# cat my.cnf 

 The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.

就是一個配置檔案但是路徑不太對都是在/var目錄下面的,所以把它刪掉。這樣mysql就不會找錯

之後再啟動就沒問題了。檢視一下系統的後臺,第二就是mysqld

[email protected]:/etc/mysql# netstat -nlp
啟用Internet連線 (僅伺服器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      3286/mysqld     
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1086/dnsmasq    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      660/sshd        
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      856/cupsd