MySQL如何更改数据库数据存储⽬录详解
前⾔
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 (9411)[ 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-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:修改配置⽂件myf
并不是所有版本都包含有myf这个配置⽂件,在MySQL 5.5版本,我就不到myf这个配置⽂件,⽽有些MySQL版本该⽂件位于/usr/myf,如果/etc/⽬录下没有myf配置⽂件,请到/usr/share/mysql/下到*f⽂件,拷贝其中⼀个到/etc/并改名为myf中。命令如下:
[root@DB-Server mysql]# cp /usr/share/mysql/my-mediumf /etc/myf 编辑/etc/myf⽂件,修改
参数socket
MySQL 5.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 entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /u01/mysqldata/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
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
mysql下载starting the serverStarting 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这个版本测试时,不修改myf,只修改启动脚本/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
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 ]
[root@DB-Server mysql]#
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
参考资料:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论