Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

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

错误提示

		
[root@stage stage]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'		
		
		

这种情况一般检查 my.cnf 中的 socket 配置项,看看 socket 被配置到了什么目录

配置文件增加 socket 指向正确路径

		
[client]
socket=/your/path/mysql/mysql.sock
		
		

通过参数指定

		
mysql -uroot -p --socket=/your/path/mysql/mysql.sock
		
		

Docker 默认是 /var/run/mysqld/mysqld.sock 我们将其改为 /var/lib/mysql/mysql.sock

		
services:
  mysql:
    command:
    - --socket=/var/lib/mysql/mysql.sock
    - --default-authentication-plugin=mysql_native_password
    - --character-set-server=utf8mb4
    - --collation-server=utf8mb4_general_ci
    - --explicit_defaults_for_timestamp=true
    - --lower_case_table_names=1
    - --max_execution_time=0
    container_name: mysql
    depends_on: []
    environment:
    - TZ=Asia/Shanghai
    - MYSQL_ROOT_PASSWORD=passw0rd
    - MYSQL_DATABASE=netkiller
    - MYSQL_USER=netkiller
    - MYSQL_PASSWORD=netkiller
    hostname: db.netkiller.com
    image: mysql:5.7
    ports:
    - 3306:3306
    restart: always
    volumes:
    - /var/lib/mysql:/var/lib/mysql
    - /opt/netkiller.com/api.netkiller.cn/mysql/conf.d/server.cnf:/etc/mysql/conf.d/server.cnf
    - /opt/netkiller.com/api.netkiller.cn/mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d