折腾一天,将过程记录下来,以便以后使用。
前言:登录mysql后,通过 show global variables like '%datadir%';
可以查看数据默认的存储路径(一般在 /var/lib/mysql)。
数据存储目录更改:
- 新建数据存放的目录,拷贝原数据库内容到新建目录,参考https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html。
新建目录
shell->mkdir /mnt/mystorage/mysql
拷贝
shell->cp -a -R /var/lib/mysql/* /mnt/mystorage/mysql/
将目录授权给mysql用户组
shell->chown mysql:mysql /mnt/mystorage/mysql
更改目录权限(也可以不加权限,防止其他用户无法访问,比如root用户设置750权限,普通用户访问mysql.sock文件可能存在权限不够)
shell->chmod 750 /mnt/mystorage/mysql
- 修改mysql配置文件。
关掉mysql服务
shell->systemclt stop mysqld
修改配置文件,修改datadir socket
shell->vim /ect/my.cnf
3. 重新初始化配置内容。
shell->mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
4.启动服务,shell->systemctl start mysqld
出现 Error:13 访问权限错误,启动不了。因为修改了datadir路径。解决办法就是关闭防火墙。
参考:http://blog.itpub.net/8520577/viewspace-2649389/
5. 重启完成后,再次启动mysql服务。
启动服务
shell->systemctl start mysqld
查看状态
shell->systemctl status mysqld.service
6. 用户登录。mysql -uroot -p
输入密码,提示错误。SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
参考:https://blog.youkuaiyun.com/huoyongliang/article/details/80667071建立链接。shell->ln -s /mnt/mystorage/mysql/mysql.sock /var/lib/mysql/mysql.sock
(mysql.sock是服务启动时候生成的文件)
7. 再次登录,成功。查看数据存储路径,修改成功。