Menggunakan opsi --relocate untuk RPM kita dapat mengubah proses instalasi paket. Dalam contoh kami menggunakan --relocate /=/opt/mysql yang mengatakan bahwa direktori root harus mengarah ke /opt/mysql. Misalnya, ketika file akan diinstal di /etc, file tersebut sekarang akan dipindahkan ke /opt/mysql/etc. Opsi --root untuk aplikasi rpm tidak berfungsi. Ini akan digunakan untuk menginstal paket pada partisi berbeda yang akan dipasang oleh mesin lain
Setelah menginstal paket, kita harus membuat database awal MySQL. Kami mencegah hal ini dalam contoh dengan menggunakan opsi rpm --noscripts. Ini memungkinkan kita untuk menentukan mysql_install_db mana yang harus digunakan, dan ke direktori data mana
Namun, ada masalah dengan opsi mysql_install_db --basedir. itu tidak mengatur opsi --language dengan benar yang harus diberikan ke program mysqld untuk menjalankan Server MySQL. (lihat bug#41828). Solusi untuk masalah dengan opsi --language adalah menentukannya dalam file opsi. Dalam contoh kami membuat /etc/mysql/my51. cnf dengan opsi --language yang diatur di bagian [mysqld]. Kami kemudian menggunakan mysql_install_db dengan opsi --defaults-file
Langkah terakhir melibatkan memulai MySQL. Anda dapat menggunakan mysqld_safe dari direktori dasar baru /opt/mysql/usr, tetapi sebaiknya Anda menambahkan opsi yang tepat ke file opsi, misalnya. /etc/mysql/my51. cnf
[mysqld_safe] ledir = /opt/mysql/usr/sbin [mysqld] basedir = /opt/mysql/usr language =/opt/mysql/usr/share/mysql/english # needed for mysql_install_db datadir = /var/mysql51 port = 3377 socket = /tmp/mysql_51.sockKemudian Anda akan melakukan berikut
shell> cd /opt/mysql/usr shell> ./bin/mysqld_safe --no-defaults --defaults-file=/etc/mysql/my51.cnf & _Yang juga penting adalah opsi --ledir di file opsi. Ini diperlukan untuk mysqld_safe sehingga tahu mysqld mana yang harus dijalankan
Saya berhasil mengubah direktori data MySQL atau MariaDB, dan menyelesaikan semua masalah terkait di Fedora 30. Saya pikir langkah-langkah berikut akan berfungsi pada distribusi lain
Catatan. Pengguna distribusi systemctl stop mysqld.service _5 seperti systemctl stop mysqld.service 6 harus mencari cara menonaktifkan dan mengedit systemctl stop mysqld.service 7 lalu ikuti langkah-langkah berikut
Menonaktifkan SELinux
Pertama-tama, izinkan saya menyebutkan bahwa Distribusi Linux berbasis RedHat (RHELs) seperti Fedora, CentOS, dll. gunakan SELinux yang memberlakukan kebijakan kontrol akses wajib. Jadi lebih baik untuk systemctl stop mysqld.service _8 selama langkah-langkah berikut dan kemudian mengaktifkannya dengan beberapa tweak
Buka file konfigurasi SELinux
nano /etc/selinux/config _Temukan baris yang berisi systemctl stop mysqld.service 9 dan ubah nilainya menjadi mkdir /home/eloy/applications/mysql-datadir/ 0, simpan file dan reboot sistem Anda
Mengubah datadir dari MySQL
Hentikan layanan MySQL
Buat direktori baru untuk direktori data MySQl. Karena beberapa alasan yang berada di luar cakupan solusi ini, sangat disarankan untuk tidak membuat direktori data di bawah direktori mkdir /home/eloy/applications/mysql-datadir/ 1, tapi mungkin beberapa dari Anda seperti saya lebih suka (biayanya lebih mahal)
mkdir /home/eloy/applications/mysql-datadir/ _Tetapkan kepemilikan dan izin direktori baru ke direktori data default MySQL (mkdir /home/eloy/applications/mysql-datadir/ 2)
chown --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ chmod --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/Salin semua file dari direktori default ke yang baru
cp -rp /var/lib/mysql/* /home/eloy/applications/mysql-datadir/Edit file mkdir /home/eloy/applications/mysql-datadir/ _3, tambahkan tambahkan baris berikut di bawah bagian mkdir /home/eloy/applications/mysql-datadir/ 4
[mysqld] datadir=/home/eloy/applications/mysql-datadir/Sekarang Anda dapat memulai layanan MySQL Anda melalui perintah berikut
systemctl start mysqld.serviceTetapi jika direktori data dibuat di bawah mkdir /home/eloy/applications/mysql-datadir/ _1, MySQL tidak akan dimulai dan Anda akan melihat kesalahan dan peringatan berikut setelah mkdir /home/eloy/applications/mysql-datadir/ 6
Menyelesaikan mkdir /home/eloy/applications/mysql-datadir/ 1 masalah
Pastikan bahwa semua direktori induk dari mkdir /home/eloy/applications/mysql-datadir/ 8 baru ke atas memiliki izin mkdir /home/eloy/applications/mysql-datadir/ 9 (mengeksekusi) untuk semua (pengguna, grup, dan lainnya). Saya lebih suka tidak menggunakan skrip rekursif
chmod +x /home/eloy/applications/mysql-datadir chmod +x /home/eloy/applications chmod +x /home/eloy/ chmod +x /homeSeperti yang disebutkan membuat datadir di bawah direktori mkdir /home/eloy/applications/mysql-datadir/ 1 itu rumit karena secara default MySQL tidak mengizinkannya. Buat file di bawah /etc/systemd/system/mariadb. melayani. d dan masukkan baris berikut
#open an editor to create a file nano /etc/systemd/system/mariadb.service.d/centreon.confsalin baris berikut ke file chown --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ chmod --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ 1 baru dan simpan
systemctl stop mysqld.service 0Terapkan perubahan dengan menjalankan perintah berikut
systemctl stop mysqld.service 1Sekarang Anda dapat menjalankan layanan MySQL
systemctl start mysqld.serviceMengaktifkan SELinux
Sekali lagi edit file chown --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ chmod --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ 2, dan ubah baris mkdir /home/eloy/applications/mysql-datadir/ 0 menjadi systemctl stop mysqld.service 9. Simpan file dan reboot sistem Anda
Untuk menanyakan status SELinux saat ini gunakan perintah berikut, ini harus mencetak chown --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ chmod --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ 5 sebagai output
systemctl stop mysqld.service _3chown --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ chmod --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ _6 menggunakan chown --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ chmod --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ 7 dan jika tidak disetel dengan benar chown --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ chmod --reference=/var/lib/mysql /home/eloy/applications/mysql-datadir/ 8 proses akan dibatalkan, jadi Anda perlu memperbaruinya