2013-02-14 72 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密码。进入服务器之后数据是安全的。