MySQL本地连接问题


目录
[TOC]


#### 1. 问题
本地连接数据库,报错如下:
```
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
```
#### 2. 解决方法
> 首先,如果出现这种情况,说明一定是通过mysql -uroot -p这种方式连接的;所以,可以换一种连接方式完美解决;
```
./usr/bin/mysql -uroot -h 127.0.0.1 -p
```

#### 3. 原理
MySQL支持两种连接方式:
* Socket
* TCP/IP
前面,出现问题的,正是第一种;出现问题的原因是/tmp/mysql.sock文件被删除、权限不够或者MySQL client没有配置socket临时文件的保存路径。
如果非要用socket方式连接,可以配置该临时文件的保存路径不在tmp下(注意server端和client端都要做一下配置)

例如:
server端配置
```
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
```

client端配置
```
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock(跟这个socket路径一样)
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
port=3306
socket=/var/lib/mysql/mysql.sock
```

原文地址:https://www.cnblogs.com/chenadong/p/15656617.html