软件版本
- CentOS 7
- MySQL 5.7
查看数据存放目录
使用命令
SHOW VARIABLES LIKE '%datadir%';
# 或者
SELECT @@datadir;
得到默认存放目录:/var/lib/mysql
移动数据
停止mysql服务
systemctl stop mysqld
新建数据存放目录
mkdir -p /data01/mysql/data
复制数据
将mysql目录复制到/data01/mysql/data目录下
cp -a /var/lib/mysql /data01/mysql/data/
给目录添加权限
chown -R mysql:mysql /data01/mysql/data/mysql
chown -R mysql:mysql /data01/mysql/data
修改配置my.cnf
打开/etc/my.cnf文件, 找到[mysqld]关键字,修改datadir和socket的值
[mysqld]
datadir=/data01/mysql/data/mysql
socket=/data01/mysql/data/mysql/mysql.sock
重启mysql服务
systemctl start mysqld
问题
错误现象
重启后,项目可正常访问数据库,但是使用命令行访问数据库会报错:
mysql -uroot -p
......
Can't connect to local MySQL server through socket '/var/lib/mysql'
......
解决
修改/etc/my.cnf, 找到[client]段,添加配置
[client]
default-character-set=utf8mb4
port=3306
socket=/data01/mysql/data/mysql/mysql.sock
socket字段有可能不存在,添加即可。