MySQL数据库默认的数据库文件位于 /var/lib/mysql 下,有时候由于存储规划等原因,需要更改 MySQL 数据库的数据存储目录。
下文总结整理了实践过程的操作步骤。
 
1 确认MySQL数据库存储目录
[root@DB-Server tmp]# mysqladmin -u root -p variables | grep datadir
Enter password:
| datadir | /var/lib/mysql/
2 关闭MySQL服务
在更改MySQL的数据目录前,必须关闭MySQL服务。
方式1:
[root@DB-Server ~]# service mysql status
MySQL running ()[ OK ]
[root@DB-Server ~]# service mysql stop
Shutting down MySQL..[ OK ]
[root@DB-Server ~]#
方式2:
[root@DB-Server ~]# /etc/rc.d/init.d/mysql status
MySQL running ()[ OK ]
[root@DB-Server ~]# /etc/rc.d/init.d/mysql stop
Shutting down MySQL..[ OK ]
[root@DB-Server ~]#
3 创建新的数据库存储目录
[root@DB-Server ~]# cd /u01
[root@DB-Server u01]# mkdir mysqldata
4 移动MySQL数据目录到新位置
[root@DB-Server ~]# mv /var/lib/mysql /u01/mysqldata/
5 修改配置文件my.cnf
 
并不是所有版本都包含有 my.cnf 这个配置文件,在 MySQL 5.5 版本,我就找不到 my.cnf 这个配置文件, 而有些 MySQL 版本该文件位于 /usr/my.cnf,如果 /etc/ 目录下没有 my.cnf 配置文件,请到 /usr/share/mysql/ 下找到 *.cnf 文件,拷贝其中一个到 /etc/ 并改名为 my.cnf 中。
命令如下:
[root@DB-Server mysql]#cd ~
[root@DB-Server mysql]# find / -name "my.cnf"
[root@DB-Server mysql]# cd /usr/share/mysql
[root@DB-Server mysql]# ls *.cnf
[root@DB-Server mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
 
编辑 /etc/my.cnf 文件,修改参数 socket
 MySQL 5.5 版本
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port =
socket = /u01/mysqldata/mysql/mysql.sock # Here follows entries for some specific programs # The MySQL server
[mysqld]
port =
socket = /u01/mysqldata/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache =
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
 
6 修改启动脚本 /etc/init.d/mysql
 
将参数 datadir 修改为 datadir=/u01/mysqldata/mysql/
 
 
7 启动MySQL服务并验证MySQL数据库路径
[root@DB-Server ~]# service mysql start
Starting MySQL..[ OK ]
[root@DB-Server ~]# mysqladmin -u root -p variables | grep datadir
Enter password:
| datadir | /u01/mysqldata/mysql/
 
我的疑问
 
1 在修改数据库的存储目录前,/var/lib/mysql/ 目录下根本没有 mysql.sock 文件,安装上面配置后,就会生成 mysql.sock 文件。
 
关于 mysql.sock 文件,搜索了一下资料:mysql.sock 是用于 socket 连接的文件。也就是只有你的守护进程启动起来这个文件才存在。
但是你的 mysql 程序(这个程序是客户端,服务器端是 mysqld)可以选择是否使用 mysql.sock 文件来连接(因为这个方法只适合在 Unix 主机上面连接本地的 mysqld),对于非本地的任何类型的主机。
 
那么这个文件是否一定需要的呢? 这个需要进一步了解清楚。
 
2 我在网上看有些网友总结的修改 MySQL 数据路径,有些需要给新建的目录的权限做一些处理,而有些有不用对目录权限进行授权,我没有处理,也没有什么问题。到底要不要对新的数据库目录授权呢?
 
3 我在 MySQL_5.6.20 这个版本测试时,不修改 my.cnf,只修改启动脚本 /etc/init.d/mysql,也完全没有啥问题。也没有 myssql.sock 文件生成。
 
4 注意如果没有禁用 SElinux,修改MySQL的数据路径后启动MySQL服务会遇到一些错误。关于这个的解释是后台服务都需要有对相应目录的对应权限,而 mysql 的默认路径 /var/lib/mysql 已经添加了相应的策略,修改路径后由于没有相应的策略,导致后台进程读取文件被 SElinux 阻止,从而出现权限错误。 所以要么关闭 SElinux 或修改文件安全上下文。
[root@DB-Server mysql]# /etc/init.d/mysql start
Starting MySQL....The server quit without updating PID file (/u01/mysqldata/mysql//DB-Server.localdomain.pid).[FAILED]
[root@DB-Server mysql]#
[root@DB-Server mysql]# chcon -R -t mysqld_db_t /u01/mysqldata/mysql/
[root@DB-Server mysql]# /etc/init.d/mysql start
Starting MySQL.[ OK ]
参考资料

MySQL 更改数据库数据存储目录的更多相关文章

  1. MySQL更改数据库数据存储目录

    MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录.下文总结整理了实践过程的操作步骤. 1:确认MySQL数据库存储目 ...

  2. MYSQL 更改数据库data存储目录 创建用户 创建权限 设置远程访问的权限.

    一. 怎么更改数据库data存储目录:  1. 安装MYSQL. 2. 切换到 C:\Program Files\MySQL\MySQL Server 5.6 3. 新建my.ini. 加入如下配置: ...

  3. Ubuntu上更改MySQL数据库数据存储目录

    之前写过一篇博客"MySQL更改数据库数据存储目录",当时的测试环境是RHEL和CentOS,谁想最近在Ubuntu下面更改MySQL数据库数据存储目录时遇到了之前未遇到的问题,之 ...

  4. mysql5.6更改datadir数据存储目录

    环境需求: 有些数据存储场景可能需要将数据放到指定的挂载路径或目录,mysql默认存放数据路径在:/var/lib/mysql下. 测试环境: 操作步骤: 1. 查看当前存储目录 [root@mysq ...

  5. mysql更改数据存储目录

    具体操作请参考文章 1.http://blog.csdn.net/aaronbai/article/details/1431190 更改数据存储目录时候会出现 ERROR 2002 (HY000): ...

  6. Ubuntu 安装mysql & 自定义数据存储目录

    一.安装 apt-get install mysql-server 执行过程如下: root@duke:~# apt-get install mysql-server 正在读取软件包列表... 完成 ...

  7. MySQL更改数据库表的存储引擎

    MySQL更改数据库表的存储引擎 1.查看表的原存储引擎 show create table user; 'user', 'CREATE TABLE `user` (\n `id` int(11) N ...

  8. centos 7.1系统更改Mariadb数据存储位置步骤分享

    一.首先确保你要更改Mariadb数据存储的位置的空间够大 现在已将Mariadb存储位置更改到/opt/目录下 1.然后将Mariadb服务stop:systemctl stop mariadb 2 ...

  9. MySQL/MariaDB数据库的存储引擎

    MySQL/MariaDB数据库的存储引擎 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.MySQL体系结构 连接管理模块: 负责接收远程用户的连接. 线程管理模块: 维护 ...

随机推荐

  1. HDU 1428

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. LeetCode CombinationSum

    class Solution { public: vector<vector<int> > combinationSum(vector<int> &cand ...

  3. 初识js-charts和E-charts

    在前端开发的过程中,经常会使用到图表相关的东西,很多时候,图表在展示数据方面有着无与伦比的优势.下面我们就来看看两个常用的图表相关的插件jscharts和ECharts.前者,功能相对单一,但是不依赖 ...

  4. 如何从本地添加项目到Github?(Windows)

    有两种方法可以上传项目到Github 一.github在线上传文件夹 在线上传也可以上传完整的文件夹结构,直接拖拽到上传文件页面的框中即可. 点击上传文件 直接拖拽即可上传文件夹及文件夹里面的文件.如 ...

  5. Andoid多语言国际化策略

    目前手上的项目,为了普及覆盖更多的用户群,也已经开始实现了多语言设置这样的功能,不过今天我要说的不是微信,而是我们自己项目中的实现策略. 直接附上关键代码: package com.huolonglu ...

  6. idea 忽略显示文件

    最后填写的时候,参考原有参数,1.在末尾加分号2.形式为*.xxx

  7. Mac下驱动BCM20702A0 USB蓝牙

    偶然高了一个USB蓝牙,查到Mac下能识别,无法驱动,就去找了一下.方法很简单,就是把蓝牙的PID和VID加入到驱动里边去,具体方法和步骤如下: 1. 进入到/System/Libary/Extens ...

  8. 3.Spring MVC return url问题总结

    一.return "cartSuccess" 和 return "redirect:/cart/cart.html" 的区别 二.return modelAnd ...

  9. c# 编译期常量const和运行时常量readonly

    注意:const编译期常量是编译的时候就确定的,可以查看IL代码,是写死的.如果另一个程序集引用后,该程序集没有进行编译,则值不会改变. 看效果: 项目中有2个程序集: 其中:常量在这个程序集中定义并 ...

  10. popup定位引擎popper.js介绍

    https://medium.com/@FezVrasta/popper-js-v1-5e8b3acd888c https://survivejs.com/blog/popper-interview/ ...