2013-02-14 22 views
0

我安裝了mysql服務器,它也包含數據。我試圖從Ruby代碼連接到MySQL。爲此,我使用gem install mysql安裝了mysql gem。我的程序中的連接部分在下面給出當連接到mysql顯示套接字錯誤

require 'rubygems' 
require 'mysql' 
require 'csv' 
$user_name = "root" 
$pas_wrd = "password" 
def mysql_connect(db_name) 
begin 
    db = Mysql.real_connect("localhost", "#{$user_name}", "#{$pas_wrd}", "#{db_name}") 
    return db 
rescue Mysql::Error => e 
    puts "Error code: #{e.errno}" 
    puts "Error message: #{e.error}" 
    puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate") 
end 
end 

它是前一天寫的,完成了工作。但是,當我嘗試使用相同的代碼它顯示了一個MySQL的寶石錯誤,像'初始化'沒有找到。通過搜索,我找到了像重新安裝寶石的解決方案。重新安裝我用戶命令rvmsudo gem install mysql。上述問題解決了。但它顯示了另一個錯誤,如

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

我嘗試使用mysql -u root -p

手動它也呈現出同樣的錯誤。

我的mysql my.cnf內容如下。

[client] 
port   = 3306 
socket   = /var/run/mysqld/mysqld.sock 

[mysqld_safe] 
socket   = /var/run/mysqld/mysqld.sock 
nice   = 0 

[mysqld] 
user   = mysql 
pid-file  = /var/run/mysqld/mysqld.pid 
socket   = /var/run/mysqld/mysqld.sock 
port   = 3306 
basedir   = /usr 
datadir   = /var/lib/mysql 
tmpdir   = /tmp 
lc-messages-dir = /usr/share/mysql 
tmpdir   = /home/presoft/Documents 
skip-external-locking 

mysql未在我的系統中運行。

ps aux | grep mysql 
presoft 3823 0.0 0.0 4368 816 pts/0 S+ 10:41 0:00 grep --color=auto mysql 

我試着開始使用sudo /etc/init.d/mysql start這得到

Rather than invoking init scripts through /etc/init.d, use the service(8) 
utility, e.g. service mysql start 

Since the script you are attempting to invoke has been converted to an 
Upstart job, you may also use the start(8) utility, e.g. start mysql 
start: Job failed to start 

結果任何一個可以幫助我找到一個解決方案,因爲含有大量的寶貴數據的數據庫使用。

謝謝

問候。

回答

0

使用

service mysql start

這將啓動mysql服務。較新的Linux機器考慮MySQL作爲服務

+0

顯示下面給出的輸出** start:拒絕的發送消息,1個匹配的規則; type =「method_call」,sender =「:1.76」(uid = 1000 pid = 3962 comm =「start mysql」)interface =「com.ubuntu.Upstart0_6.Job」member =「Start」error name =「(unset)」 requested_reply =「0」destination =「com.ubuntu。upstart「(uid = 0 pid = 1 comm =」/ sbin/init「)** – apr 2013-02-14 05:39:44

+0

嘗試用sudo服務mysql重啓 – 2013-02-14 05:42:50

+0

start:作業啓動失敗 – apr 2013-02-14 05:49:34

0

我解決了上述問題的答案提示。問題是我的mysql服務器被損壞。

所以我第一次運行該命令

sudo apt-get purge mysql-common mysql-server 

它會刪除所有的MySQL文件和配置與出刪除數據。運行後,請仔細觀察過程,並做好充分的警告或錯誤。 我得到了一個警告像

dpkg: warning: while removing mysql-common, directory '/etc/mysql' not empty so not removed. 

所以我刪除該文件並重新運行上面的命令。執行成功後。我重新安裝了mysql使用

sudo apt-get install mysql-common mysql-server 

然後設置root密碼。進入服務器之後數據是安全的。