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