首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到mysql时显示套接字错误

问连接到mysql时显示套接字错误
EN

Stack Overflow用户
提问于 2013-02-14 13:18:26
回答 2查看 169关注 0票数 0

我已经安装了mysql服务器,它也包含数据。我试着从ruby代码连接到mysql。为此,我使用gem install mysql安装了mysql。我程序中的连接部分如下所示

代码语言:javascript
复制
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‘not found。通过搜索,我找到了一个类似于重新安装gem的解决方案。为了重新安装,我使用命令rvmsudo gem install mysql。解决了上述问题。但是它显示了另一个错误,比如

代码语言:javascript
复制
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内容如下所示。

代码语言:javascript
复制
[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没有在我的系统中运行。

代码语言:javascript
复制
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,结果是

代码语言:javascript
复制
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

谁能帮我找到一个解决方案,因为数据库包含大量有价值的数据。

谢谢

致以问候。

EN

回答 2

Stack Overflow用户

发布于 2013-02-14 13:26:43

使用

service mysql start

这将启动mysql服务。较新的linux机器考虑将mysql作为服务

票数 0
EN

Stack Overflow用户

发布于 2013-02-14 15:46:48

我根据上面的答案提示解决了这个问题。问题是我的mysql服务器被损坏了。

因此,我首先运行该命令

代码语言:javascript
复制
sudo apt-get purge mysql-common mysql-server

它将删除所有mysql文件和配置,但不会删除数据。运行后,请仔细观察进程,如果有任何警告或错误出现,请做充分的准备工作。我收到了警告,比如

代码语言:javascript
复制
dpkg: warning: while removing mysql-common, directory '/etc/mysql' not empty so not removed.

所以我删除了这个文件,然后重新运行上面的命令。在成功执行之后。我使用以下命令重新安装了mysql

代码语言:javascript
复制
sudo apt-get install mysql-common mysql-server 

然后设置root密码。进入服务器后,数据是安全的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14868253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档