centos MySQL 数据目录迁移

step1:

    先停掉服务

    service mysqld stop



step2:

    修改mysql配置文件

    vim /etc/my.cnf

    把其中的datadir=/var/lib/mysql/ 和socket=/var/lib/mysql/mysql.sock

    改成datadir=/newpath/ 和datadir=/newpath/mysql.sock

    newpath换成你自己的存放数据的路径



step3:

    启动mysql服务

    service mysqld start



配置基本完成,但是可能会出现以下问题:

    可能会报错:Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and     "journalctl -xe" for details.


    可以按照提示命令去查看错误信息,但是你会发现里面提供的信息基本没什么参考价值,这个时候可以打开mysql的日志文件

    vim /var/log/mysqld.log

    shift + g 翻到最后

    可能会看到这个关键信息 Could not create unix socket lock file /data/part1/dbdata/mysql.sock.lock

    查阅之后发现可能是权限问题,这里就把你自己的newpath权限设置一下,最暴力的方法是就是改成777

    chmod -R 777 newpath

    再重启mysql

    service mysqld restart

    能正常启动了



    但是当你尝试连接myqsl 

    mysql -uroot -p

    又出现一个错误:

    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

    明明配置文件里面已经把mysql.sock文件的路径改掉了,这里面还是指向老的路径,为什么呢?我不知道,大概是修改的my.cnf里面的配置是   给mysql的server端识别的,而你连接mysql的收,你是client端,client端还是只认老的路径。通过查看这个文章找到了答案,在my.cnf文件里面加上[client]

    socket=/data/part1/dbdata/mysql.sock

    加在最后就行。保存重启mysql,问题完美解决。

你可能感兴趣的:(centos MySQL 数据目录迁移)