知乎专栏 |
错误提示
[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