来自:mjsws > 馆藏分类
配色: 字号:
MySQL更改数据库数据存储目录
2019-01-02 | 阅:  转:  |  分享 
  
MySQL更改数据库数据存储目录MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MyS
QL数据库的数据存储目录。下文总结整理了实践过程的操作步骤。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?(94
11)[?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?(8900)[?OK?]??[root@DB-Se
rver?~]#?/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-S
erver?~]#?mv?/var/lib/mysql?/u01/mysqldata/?5:修改配置文件my.cnf并不是所有版本
都包含有my.cnf这个配置文件,在MySQL5.5版本,我就找不到my.cnf这个配置文件,而有些MySQL版本该文件位于/
usr/my.cnf,如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到.cnf文件,拷
贝其中一个到/etc/并改名为my.cnf中。命令如下:[root@DB-Server?mysql]#?cp?/usr/share
/mysql/my-medium.cnf?/etc/my.cnf?编辑/etc/my.cnf文件,修改参数sockethttp:
//www.44226.netMySQL5.5版本#?The?following?options?will?be?passed
?to?all?MySQL?clients??[client]??#password?=?your_password?port?=
?3306?socket?=?/u01/mysqldata/mysql/mysql.sock??#?Here?follows?en
tries?for?some?specific?programs??#?The?MySQL?server??[mysqld]??p
ort?=?3306?socket?=?/u01/mysqldata/mysql/mysql.sock??skip-externa
l-locking??key_buffer_size?=?16M?max_allowed_packet?=?1M?table_op
en_cache?=?64?sort_buffer_size?=?512K?net_buffer_length?=?8K?read
_buffer_size?=?256K?read_rnd_buffer_size?=?512K?myisam_sort_buffe
r_size?=?8M?6:修改启动脚本/etc/init.d/mysqlhttp://www.f-1.cc将参数datadir
修改为datadir=/u01/mysqldata/mysql/7:启动MySQL服务并验证MySQL数据库路径[root@DB-
Server?~]#?service?mysql?start??Starting?MySQL..[??OK??]??[root@D
B-Server?~]#?mysqladmin?-u?root?-p?variables?|?grep?datadir??Ente
r?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或修改文件安全上下文。http://www.letaoq
pyx.com[root@DB-Server?mysql]#?/etc/init.d/mysql?start??Starting?
MySQL....The?server?quit?without?updating?PID?file?(/u01/mysqldat
a/mysql//DB-Server.localdomain.pid).[FAILED]??[root@DB-Server?mys
ql]#[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?]??[root@DB-Server?mysql]#???
献花(0)
+1
(本文系mjsws首藏)