我在使用mysqll客户端连接我的mysql服务器的时候,出现了上述的问题。我的操作系统是ubuntu,安装版本是对应的64位服务器。我的服务器的启动方式是sudo service mysql start.

我对服务器的改动仅限于新增了一个mysql的配置文件,配置文件的位置在/etc/my.cnf。配置文件如下(不要在意设置的具体值):

[mysqld]
# GENERAL
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
pid_file = /var/lib/mysql/mysql.pid
user = mysql
port = p3306
default_storage_engine = InnoDB
#INNODB
innodb_buffer_pool_size = 2G
innodb_log_file_size = 300M
# LOGGING
log_error = /var/lib/mysql/mysql-error.log
slow_query_log_file = /var/lib/mysql/mysql-slow.log
# OTHER
tmp_table_size = 32M
max_heap_table_size = 32M
#query_cache_type = 0
#query_cache_size = 0
max_connections = 200
thread_cache_size = 50
table_open_cache = 300
open_files_limit = 65535
[client]
socket = /var/lib/mysql/mysql.sock
port = 3306

首先我要说明一点,使用mysql客户端不能连接到mysql服务端,是因为mysql连接的时候,使用了这个配置文件的client部分,也就是

[client]

socket = /var/lib/mysql/mysql.sock

而服务端的socket文件的位置不在这里,自然会出现问题。我查看/var/lib/mysql文件夹,都不存在mysql.sock文件。

那么服务端的socket文件保存在哪里呢?

答案是/var/run/mysqld文件夹,这里有一个mysqld.sock文件. 这个文件的位置是由/etc/my.cnf->/etc/mysql.cnf里面配置的文件/etc/mysql/mysql.conf.d/mysqld.cnf指定的。

查看mysqld.cnf文件夹,还可以如下配置:

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log

可以查看对应文件夹,发现上述配置都生效了。我们查看mysql官网,可以看到如下警告语句:

Note

On Unix platforms, MySQL ignores configuration files that are world-writable. This is intentional as a security measure.

你检查一下你的/etc/my.cnf文件,然后改成/etc/mysql/mysql.cnf相同的访问属性,发现,仍然出现相同的问题。

你又会惊奇地发现,官网上面有如下说明:

On Unix and Unix-like systems, MySQL programs read startup options from the files shown in the following table, in the specified order (files listed first are read first, files read later take precedence).

你会觉得这里是/etc/mysql/mysql.conf.d/mysqld.cnf配置文件替换了/etc/my.cnf中的值。然后你选择删除/etc/my.cnf中关于client的配置,你发现不报上述错误了。当你进去之后,使用show gloabal variables命令,发现根本没有生效。

那么这个又是为什么?

然后你可以进行如下操作:在/etc/mysql/mysql.cnf中添加一句port = 3306,修改后,如下:

port = 3306
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

然后你调用sudo service mysql start命令,会发现如下错误:

Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.

然后你调用systemctl status mysql.service命令,得到如下错误:

4月 14 00:11:35 sun-Lenovo-IdeaPad-Y480 mysql-systemd-start[25400]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program abort
4月 14 00:11:35 sun-Lenovo-IdeaPad-Y480 mysqld[25439]: mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf a
4月 14 00:11:35 sun-Lenovo-IdeaPad-Y480 mysqld[25439]: mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
4月 14 00:11:35 sun-Lenovo-IdeaPad-Y480 systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
4月 14 00:11:35 sun-Lenovo-IdeaPad-Y480 systemd[1]: mysql.service: Failed with result 'exit-code'.
4月 14 00:11:35 sun-Lenovo-IdeaPad-Y480 systemd[1]: Failed to start MySQL Community Server.

然后你移除/etc/mysql/mysql.cnf中的port = 3306,改为在/etc/my.cnf中只添加这一行。

port = 3306

你发现调用sudo service mysql start没有报错。按照上述的表现来看,mysql应该根本就不会读取/etc/my.cnf,所以你之前添加的这个文件,只是对mysql客户端链接产生了影响。

如果你想在使用sudo service mysql start方式启动时的服务端参数,最简单的方法是将原先的/etc/mysql/mysql.conf.d/mysqld.cnf备份一下,然后直接修改这个文件的值。修改之后,可能会遇到其他问题,再想办法解决了。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)解答的更多相关文章

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

    有时候,当我们使用"mysql"."mysqladmin"."mysqldump"等命令管理数据库时,服务器抛出类似如下错误: 一.错误现场 ...

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

    从供应商手中接手一个云平台(Windwos Azure)上的MySQL数据库,登录数据库时遇到错误: $mysql -uroot -p Enter password: ERROR 2002 (HY00 ...

  3. ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了(转载)

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var mysql 启动不了   ps -A | gr ...

  4. Mac mySql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)的解决办法

    我的环境:Mac 10.11.6 ,mysql  5.7.14  . mac mySql 报错ERROR 2002 (HY000): Can't connect to local MySQL serv ...

  5. linux云服务器mysql ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’

    一早上过来发现网站打开报错,数据库连接不上.. 有人改密码? putty进去,mysql -uroot -p 输入密码后,报错 ERROR 2002 (HY000): Can't connect to ...

  6. 更换mysql数据目录后出现ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解决办法

    服务器上的mysql默认数据目录为/var/lib/mysql/,同时服务器的/空间不是很大,而近期又有大量的日志需要导入进行分析,时常搞得/的空间捉襟见肘,晚上一狠心就想把mysql的数据目录转移到 ...

  7. 启动mysql错误ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ ( ...

  8. 安装mysql后ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了

    ps -A | grep -i mysql kill 列出来的进程 service mysql start 我的问题就解决了 ------------------------------------- ...

  9. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 背景: mys ...

  10. mac ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    好久不用mysql,今天突然想用的时候, mysql -uroot -p 直接报了下面的错误 ERROR 2002 (HY000): Can't connect to local MySQL serv ...

随机推荐

  1. springboot单元测试自动回滚:@Transactional

    2019-04-21 12:23:14.509 INFO 9384 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - St ...

  2. Go Lang

    IDE: https://www.jetbrains.com/products.html?fromMenu#type=ide Study: http://www.runoob.com/go/go-en ...

  3. 41.找出所有和为S的连续正数序列

    小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和, 他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数). 没多久,他就得到 ...

  4. 数组之slice,splice,Concact,Reverse,Sort方法

    Slice(strart,end)用来从数组中提取元素.该方法不会改变元素数组,而是将截取到的元素封装到一个新数组中返回 参数start 截取开始的位置索引,包含开始索引 参数end 截取结束位置的索 ...

  5. Pymongo使用事项

    基本上的教程都有,就不阐述了,这里主要记录使用时遇到的问题 1. 再使用有权限的mongodb连接时,需要user指定role所在的集合,如图: 在pymongo创建MongoClient 除了增加u ...

  6. 影响Arcmap运行效率的因素

    在使用ArcMap的过程中,总觉得ArcMap运行起来非常慢,目前发现了两点原因: 一.渲染太多图斑 比较常见的,我们在打开矢量图层时,Arcmap会自动渲染加载进去的图斑,进行符号化.在渲染的过程中 ...

  7. 百战程序员——EL、JSTL

    1.EL表达式可以操作作用域中的属性,也可以操作普通的局部变量.对吗? 不对 El表达式一般支持作用域(application.session.request.pagecontext)中的属性.EL变 ...

  8. 第二章代替netcat连接无响应

    按照书上的代码手打到电脑上以后,在两个终端输入了./bhnet.py -l -p 9999 -c和./bhnet.py -t localhost -p 9999之后发现没什么反映,所以又用nmap 1 ...

  9. 一张图看懂AI、机器学习和深度学习的区别

    AI(人工智能)是未来,是科幻小说,是我们日常生活的一部分.所有论断都是正确的,只是要看你所谈到的AI到底是什么. 例如,当谷歌DeepMind开发的AlphaGo程序打败韩国职业围棋高手Lee Se ...

  10. 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退

    AI早期成就,相对朴素形式化环境,不要求世界知识.如IBM深蓝(Deep Blue)国际象棋系统,1997,击败世界冠军Garry Kasparov(Hsu,2002).国际象棋,简单领域,64个位置 ...