MySQL localização de banco de dados diferente [duplicado]

3

Eu não tenho espaço suficiente na minha partição raiz para armazenar o banco de dados.

$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ManjaroVG-ManjaroRoot   29G   21G  6.4G  77% /
dev                                1.9G     0  1.9G   0% /dev
run                                1.9G  852K  1.9G   1% /run
tmpfs                              1.9G   76K  1.9G   1% /dev/shm
tmpfs                              1.9G     0  1.9G   0% /sys/fs/cgroup
tmpfs                              1.9G  596K  1.9G   1% /tmp
/dev/mapper/ManjaroVG-ManjaroHome  197G   54G  133G  29% /home
/dev/sda1                          247M   88M  147M  38% /boot
tmpfs                              383M  8.0K  383M   1% /run/user/1000

Alterar o datadir no meu. cnf para um novo local causou um problema de permissão ([Warning] Não é possível criar o arquivo de teste /home/u/tmp/mysql/acpfg.lower-test )

Como é possível alterar o diretório onde o MariaDB / MySQL armazena o banco de dados no Linux (por exemplo para / home / u / tmp / mysql)?

    
por user977828 22.08.2014 / 09:47

2 respostas

4

Você pode reconfigurar o MySQL para procurar o diretório de dados em um local diferente ou vincular a montagem de um novo local ao original.

Certifique-se de que o serviço mysql esteja parado antes de realizar essas alterações.

Em seguida, mova todos os arquivos e subdiretórios do local original para o novo local.

Reconfigure o MySQL

edite /etc/my.cnf e altere datadir para:

datadir=/home/u/tmp/mysql

ou ...

Vincular montagem

Use uma montagem de ligação para montar seu novo local sobre o original:

mount --bind /home/u/tmp/mysql /var/lib/mysql

Quando estiver satisfeito com o funcionamento de tudo, edite seu /etc/fstab para torná-lo permanente:

/home/u/tmp/mysql /var/lib/mysql  none  bind 0 0

Permissões de arquivo

Independentemente do método escolhido, você precisará garantir que as permissões em seu novo local estejam corretas, da seguinte maneira:

O diretório de nível superior ( /home/u/tmp/mysql ) e tudo o que está abaixo devem pertencer ao usuário e ao grupo mysql (assumindo que mysql seja executado no Arch Linux):

# chown -R mysql. /home/u/tmp/mysql

Todos os arquivos são:

# find /home/u/tmp/mysql/ -type f -exec chmod 0660 {} \;

Todos os diretórios são:

# find /home/u/tmp/mysql/* -type d -exec chmod 0700 {} \;

O diretório de nível superior é:

# chmod 0755 /home/u/tmp/mysql
    
por 22.08.2014 / 09:56
1

Configurações como essa entram no arquivo de configuração do MySQL (por exemplo, em /etc/mysql/my.cnf; a localização exata depende do seu sistema). A configuração em questão é datadir, consulte link para obter mais informações.

    
por 22.08.2014 / 10:05