如何更改 MySQL 数据库目录?

use*_*175 4 mysql centos

我正在使用带有 cPanel 的 CentOS。在我的服务器上,所有 MySQL 数据库都保存在/var/lib/mysql. 现在/var100% 已满,MySQL 已停止工作。如何将数据库移动到新目录,/home/mysql尤其是考虑到该服务器是使用 cPanel 管理的?

Tom*_*Tom 7

我无法从 cpanel 确认这一点,因为我没有访问权限,但这是来自通过 ssh 和 sudo 连接到 root 的控制台的示例。在 /etc/fstab 中使用绑定条目而不是符号链接有一些参数,但这对我有用。

我的正常程序是停止mysql,移动目录内容,链接原来的,然后重启mysqld。

[tomh@workstation001 ~]$ sudo su -
[root@workstation001 ~]# 

[root@workstation001 ~]# service mysqld stop
Stopping mysqld (via systemctl):  
                                                           [  OK  ]

[root@workstation001 ~]# mv /var/lib/mysql/ /opt/

[root@workstation001 ~]# ln -s /opt/mysql /var/lib/


[root@workstation001 ~]# ls -la /var/lib/mysql
lrwxrwxrwx 1 root root 10 Feb 26 23:02 /var/lib/mysql -> /opt/mysql

[root@workstation001 ~]# service mysqld start
Starting mysqld (via systemctl):                           [  OK  ]


[root@workstation001 ~]# mysql -uroot 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.18-log MySQL Community Server (GPL)

mysql> show databases;
...
| Database              |
+-----------------------+
| information_schema    |
| mysql                 |
| performance_schema    |
| test   
Run Code Online (Sandbox Code Playgroud)

我刚刚注意到一个类似的问题,其中这接近于重复,其中提到了在启用 selinux 的情况下执行上述操作的一些问题; http://crashmag.net/change-the-default-mysql-data-directory-with-selinux-enabled

所以如果你有 selinux,还有一些额外的步骤。


vve*_*ens 5

如果要更改mysql数据目录,您应该编辑 mysql 配置文件并更改datadir值。

datadir = /home/user/data
Run Code Online (Sandbox Code Playgroud)

您的新数据目录必须mysqlSELinux 安全上下文所有并具有适当的安全上下文。

chown -R    mysql:mysql /home/user/data
chcon -R -t mysqld_db_t /home/user/data
Run Code Online (Sandbox Code Playgroud)

然后重启mysql服务器:

systemctl restart mysql
# or
/etc/init.d/mysqld restart
Run Code Online (Sandbox Code Playgroud)