在连接到mysql时显示套接字错误

时间:2013-02-14 05:18:26

标签: mysql ruby rubygems

我安装了mysql服务器,它也包含数据。我试图从ruby代码连接到mysql。为此,我使用gem install mysql安装了mysql gem。我程序中的连接部分在下面给出

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 gem错误,就像找不到'initialize'之类的东西。通过搜索,我找到了一个像重新安装宝石的解决方案。重新安装我用户命令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

任何人都可以帮我找到解决方案,因为db包含大量有价值的数据。

由于

问候。

2 个答案:

答案 0 :(得分:0)

使用

service mysql start

这将启动mysql服务。较新的linux机器将mysql视为服务

答案 1 :(得分: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密码。进入服务器后数据是安全的。