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. java利器------反射机制

    java反射的概念:java的反射机制是指在运行状态下,对于一个类来说,可以得到这个类的所有方法和属性.对于一个对象来说,可以调用这个对象的人和方法和属性. 反射机制首先会拿到该类的字节码文件(Cla ...

  2. Telnet 模拟邮件发送过程

    Telnet 模拟邮件发送过程 windows要提前开启Telnet客户端的功能,再按照下面步骤完成邮件发送: 1.通过 cmd 进入命令窗口 2.连接要发送邮件的服务器:telnet smtp.al ...

  3. Golang 模板

    最近又尝试了一下 Golang 的 Template,发现一般功能都满足了,而且语法也相对比较简单,所以稍作总结.在 Go语言中,模板有 text/template 和 html/template 两 ...

  4. WPF流程图制作系列相关基础一

    WPF流程图制作相关基础一   需求是要通过wpf开发流程图,这个流程图是用户自行拖动配置.   使用过流程图的话,应该大体能想象出流程图拖动配置的样子.这里主要会涉及到的技术知识点就是 wpf拖动相 ...

  5. django 数据库 ORM创建表单是出错

    WARNINGS: ?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default' HINT: MySQL ...

  6. [js样式效果]具有停顿效果上下滚动方式

    一般用于公告的滚动效果 <!DOCTYPE HTML> <html> <head> <meta charset="gb2312" /> ...

  7. 阿里云短信服务Java版

    短信服务管理平台 https://dysms.console.aliyun.com/dysms.htm java短信发送API    https://help.aliyun.com/document_ ...

  8. setUserVisibleHint-- fragment真正的onResume和onPause方法

    现在越来越多的应用会使用viewpager+fragment显示自己的内容页,fragment和activity有很多共同点,如下图就是fragment的生命周期 但是fragment和activit ...

  9. 实验二:klee处理未建模函数和处理error的方式

    首先,能够分析klee源码固然重要.但是目前尚未到那个地步.我按照我的过程,记录和分析我所做的实验. 结论性内容是: 1.klee处理printf传入符号值的情形时,报为error,不会将符号值具体化 ...

  10. 启用优酷html5播放器的办法

    方法就是在浏览器中设置下sessionStorage window.sessionStorage.setItem("P_l_h5", true);