Ubuntu下出现Mysql error(2002)的解决方法
2010-01-05 23:50
387 查看
过了一阵子后,为了写分布式作业,重新使用Mysql时,发现虽然启动成功了,但是连接的时候去出现如下错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
根据提示是/var/run/mysqld/mysqld.sock文件不存在。
为什么会这样呢?
在网上找了找答案,发现每个人说的都不一样,而且mysql.server文件中根本就不存在创建/var/run/mysqld/mysqld.sock文件的语句。
1.解决办法:
$mysql --help
根据帮助可以看到,mysql默认使用socket文件/var/run/mysqld/mysqld.sock文件,端口3306来连接mysql服务器。所以我们可以修改默认连接参数来试一试。
$mysql --socket=/tmp/mysql.sock
那么,怎样知道需要把socket修改为/tmp/mysql.sock呢?
我是根据查看mysql进程得到的消息,使用如下命令:
$ps aux|grep mysql
可以看到启动的mysql进程使用了参数--socket=/tmp/mysql.sock --port=3306。所以使用命令:
$mysql --socket=/tmp/mysql.sock后就能够成功连接上mysql服务器了。
2.追根究底
根据命令
$mysql --help
的输出结果可以看到,mysql会按顺序读取配置文件/etc/my.conf,/etc/mysql/my.conf,/usr/etc/my.con,~/.my.conf
在/etc/my.conf中可以看到
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
这就是为什么mysql服务器启动后使用的socket是/tmp/mysql.sock
在/etc/mysql/my.conf中可以看到
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_saft]
socket = /var/run/mysqld/mysqld.sock
[mysqld]
port = 3306
socket = /var/run/mysqld/mysqld.sock
这样,两个文件设置都匹配,导致/etc/mysql/my.conf中的[client]覆盖了/etc/my.conf中的[client]设置,所以连接不正确。最简单的办法是删除这个文件
$sudo mv /etc/mysql/my.conf /etc/mysql/mysql.conf_backup
然后再使用默认参数连接mysql服务器就正常了。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
根据提示是/var/run/mysqld/mysqld.sock文件不存在。
为什么会这样呢?
在网上找了找答案,发现每个人说的都不一样,而且mysql.server文件中根本就不存在创建/var/run/mysqld/mysqld.sock文件的语句。
1.解决办法:
$mysql --help
根据帮助可以看到,mysql默认使用socket文件/var/run/mysqld/mysqld.sock文件,端口3306来连接mysql服务器。所以我们可以修改默认连接参数来试一试。
$mysql --socket=/tmp/mysql.sock
那么,怎样知道需要把socket修改为/tmp/mysql.sock呢?
我是根据查看mysql进程得到的消息,使用如下命令:
$ps aux|grep mysql
可以看到启动的mysql进程使用了参数--socket=/tmp/mysql.sock --port=3306。所以使用命令:
$mysql --socket=/tmp/mysql.sock后就能够成功连接上mysql服务器了。
2.追根究底
根据命令
$mysql --help
的输出结果可以看到,mysql会按顺序读取配置文件/etc/my.conf,/etc/mysql/my.conf,/usr/etc/my.con,~/.my.conf
在/etc/my.conf中可以看到
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
这就是为什么mysql服务器启动后使用的socket是/tmp/mysql.sock
在/etc/mysql/my.conf中可以看到
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_saft]
socket = /var/run/mysqld/mysqld.sock
[mysqld]
port = 3306
socket = /var/run/mysqld/mysqld.sock
这样,两个文件设置都匹配,导致/etc/mysql/my.conf中的[client]覆盖了/etc/my.conf中的[client]设置,所以连接不正确。最简单的办法是删除这个文件
$sudo mv /etc/mysql/my.conf /etc/mysql/mysql.conf_backup
然后再使用默认参数连接mysql服务器就正常了。
相关文章推荐
- Ubuntu下出现Mysql error(2002)的解决方法
- 【转】Ubuntu下出现Mysql error(2002)的解决方法
- Ubuntu下出现Mysql error(2002)的解决方法
- Ubuntu下出现Mysql error(2002)的解决方法
- Ubuntu浏览FLASH时出现中文乱码的解决方法
- ubuntu 14.04 出现failed to start session解决方法
- ubuntu13.04升级到ubuntu13.10 ZendStudio 或者ecplise 出现 菜单不显示的解决方法
- 关于在ubuntu16.04 64位系统上安装交叉编译工具出现错误的解决方法
- ubuntu 编译 Android 出现的若干错误及解决方法
- ubuntu14.04 root登陆与自动登陆配置方法及出现问题解决
- 重装Ubuntu 14.04后使用apt-get安装build-essential(即sudo apt-get install build-essential)时出现包依赖项问题的解决方法
- Ubuntu14.04安装wineqq国际版出现无法输入中文的解决方法
- Ubuntu 出现Agent admitted failure to sign using the key的解决方法
- Ubuntu访问window下的磁盘分区出现“Error mounting /dev/sda5 at/media”错误的解决方法
- ubuntu上修改mysql默认字符编码出现的Job failed to start解决方法
- windows项目导入到ubuntu系统下出现中文乱码的原因和解决方法
- Ubuntu更新出现 The system is running in low-graphics mode解决方法
- linux(ubuntu)Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'解决方法