Ini menunjukkan ~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql 5 yang merupakan elemen konteks default untuk lokasi file database. Konteks ini harus diterapkan secara manual ke lokasi database baru yang akan digunakan dalam contoh ini agar dapat berfungsi dengan baik
Hentikan daemon mysqld
~]# systemctl stop mariadb.service _Buat direktori baru untuk lokasi baru database. Dalam contoh ini, /mysql/ digunakan
~]# mkdir -p /mysqlSalin file database dari lokasi lama ke lokasi baru
~]# cp -R /var/lib/mysql/* /mysql/Ubah kepemilikan lokasi ini untuk mengizinkan akses oleh pengguna dan grup mysql. Ini menetapkan izin Unix tradisional yang masih akan diamati oleh SELinux
~]# chown -R mysql:mysql /mysql _Jalankan perintah berikut untuk melihat konteks awal direktori baru
~]# ls -lZ /mysql drwxr-xr-x. mysql mysql unconfined_u:object_r:usr_t:s0 mysqlKonteks usr_t dari direktori yang baru dibuat ini saat ini tidak cocok untuk SELinux sebagai lokasi untuk file database MariaDB. Setelah konteks diubah, MariaDB akan dapat berfungsi dengan baik di area ini
Buka file konfigurasi MariaDB utama ~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql _6 dengan editor teks dan ubah opsi ~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql 7 sehingga merujuk ke lokasi baru. Dalam contoh ini nilai yang harus dimasukkan adalah ~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql 8
[mysqld] datadir=/mysql _Simpan file ini dan keluar
Mulai ~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql _9. Layanan harus gagal dimulai, dan pesan penolakan akan dicatat ke file ~]# systemctl stop mariadb.service 0
~]# systemctl start mariadb.service Job for mariadb.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details.Namun, jika daemon audit sedang berjalan dan bersamanya layanan ~]# systemctl stop mariadb.service 1, penolakan akan dicatat ke file ~]# systemctl stop mariadb.service 2 sebagai gantinya
Alasan penolakan ini adalah mysql tidak diberi label dengan benar untuk file data MariaDB. SELinux menghentikan MariaDB dari memiliki akses ke konten berlabel ~]# systemctl stop mariadb.service 3. Lakukan langkah-langkah berikut untuk mengatasi masalah ini
Jalankan perintah berikut untuk menambahkan pemetaan konteks untuk mysql. Perhatikan bahwa ~]# systemctl stop mariadb.service _4 tidak diinstal secara default. Jika tidak ada di sistem Anda, instal paket ~]# systemctl stop mariadb.service 5
~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql 0Pemetaan ini ditulis ke file ~]# systemctl stop mariadb.service _6
~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql _1Sekarang gunakan utilitas ~]# systemctl stop mariadb.service _7 untuk menerapkan pemetaan konteks ini ke sistem yang sedang berjalan
~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql _2Sekarang lokasi mysql telah diberi label dengan konteks yang benar untuk MariaDB, mysqld dimulai
~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql _3Konfirmasi konteks telah berubah untuk mysql
~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql _4Lokasi telah diubah dan diberi label, dan ~]# ls -lZ /var/lib/mysql drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql 9 telah berhasil dimulai. Pada titik ini, semua layanan yang berjalan harus diuji untuk mengonfirmasi operasi normal
Setelah menginstal komponen tumpukan LAMP di server CentOS/RHEL 7, ada beberapa hal yang mungkin ingin Anda lakukan
Beberapa di antaranya berkaitan dengan peningkatan keamanan Apache dan MySQL / MariaDB, sementara yang lain mungkin berlaku atau tidak sesuai dengan pengaturan atau kebutuhan kita.
Misalnya, berdasarkan penggunaan yang diharapkan dari server database, kami mungkin ingin mengubah direktori data default (# mysql -u root -p -e "SELECT @@datadir;" 0) ke lokasi yang berbeda. Ini adalah kasus ketika direktori seperti itu diharapkan tumbuh karena penggunaan yang tinggi
Jika tidak, sistem file tempat # mysql -u root -p -e "SELECT @@datadir;" _1 disimpan dapat runtuh pada satu titik yang menyebabkan seluruh sistem gagal. Skenario lain di mana mengubah direktori default adalah ketika kami memiliki jaringan berbagi khusus yang ingin kami gunakan untuk menyimpan data aktual kami
Untuk itu, pada artikel kali ini, kami akan menjelaskan cara mengubah direktori data MySQL / MariaDB default ke jalur yang berbeda di server CentOS/RHEL 7 dan distribusi Ubuntu/Debian
Meskipun kita akan menggunakan MariaDB, konsep yang dijelaskan dan langkah-langkah yang diambil dalam artikel ini berlaku untuk MySQL dan MariaDB kecuali disebutkan lain
Mengubah Direktori Data MySQL/MariaDB default
Catatan. Kami akan berasumsi bahwa direktori data baru kami adalah # mysql -u root -p -e "SELECT @@datadir;" 2. Penting untuk dicatat bahwa direktori ini harus dimiliki oleh # mysql -u root -p -e "SELECT @@datadir;" 3
# mkdir /mnt/mysql-data # chown -R mysql:mysql /mnt/mysql-dataDemi kenyamanan Anda, kami telah membagi prosesnya menjadi 5 langkah yang mudah diikuti
Langkah 1. Identifikasi Direktori Data MySQL Saat Ini
Untuk memulai, adalah layak dan baik untuk mengidentifikasi direktori data saat ini menggunakan perintah berikut. Jangan hanya menganggap itu masih # mysql -u root -p -e "SELECT @@datadir;" 0 karena itu bisa diubah di masa lalu
# mysql -u root -p -e "SELECT @@datadir;"Setelah Anda memasukkan kata sandi MySQL, hasilnya akan mirip dengan
Langkah 2. Salin Direktori Data MySQL ke Lokasi Baru
Untuk menghindari kerusakan data, hentikan layanan jika sedang berjalan sebelum melanjutkan. Gunakan perintah terkenal systemd untuk melakukannya
------------- On SystemD ------------- # systemctl stop mariadb # systemctl is-active mariadb ------------- On SysVInit ------------- # service mysqld stop # service mysqld status OR # service mysql stop # service mysql statusJika layanan telah dimatikan, keluaran dari perintah terakhir adalah sebagai berikut
Kemudian salin secara rekursif isi # mysql -u root -p -e "SELECT @@datadir;" 0 ke # mysql -u root -p -e "SELECT @@datadir;" 2 dengan mempertahankan izin asli dan stempel waktu
# cp -R -p /var/lib/mysql/* /mnt/mysql-dataLangkah 3. Konfigurasi Direktori Data MySQL Baru
Edit file konfigurasi (# mysql -u root -p -e "SELECT @@datadir;" _7) untuk menunjukkan direktori data baru (# mysql -u root -p -e "SELECT @@datadir;" 2 dalam hal ini)
Temukan bagian # mysql -u root -p -e "SELECT @@datadir;" 9 dan ------------- On SystemD ------------- # systemctl stop mariadb # systemctl is-active mariadb ------------- On SysVInit ------------- # service mysqld stop # service mysqld status OR # service mysql stop # service mysql status 0 dan lakukan perubahan berikut
Under [mysqld]: datadir=/mnt/mysql-data socket=/mnt/mysql-data/mysql.sock Under [client]: port=3306 socket=/mnt/mysql-data/mysql.sockSimpan perubahan lalu lanjutkan dengan langkah berikutnya
Langkah 4. Setel Konteks Keamanan SELinux ke Direktori Data
Langkah ini hanya berlaku untuk RHEL/CentOS dan turunannya
Tambahkan konteks keamanan SELinux ke # mysql -u root -p -e "SELECT @@datadir;" 2 sebelum memulai ulang MariaDB
# semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?" # restorecon -R /mnt/mysql-dataSelanjutnya restart layanan MySQL
------------- On SystemD ------------- # systemctl stop mariadb # systemctl is-active mariadb ------------- On SysVInit ------------- # service mysqld stop # service mysqld status OR # service mysql stop # service mysql statusSekarang, gunakan perintah yang sama seperti pada Langkah 1 untuk memverifikasi lokasi direktori data baru
# mysql -u root -p -e "SELECT @@datadir;"Langkah 5. Buat Database MySQL untuk Mengonfirmasi Direktori Data
Login ke MariaDB, buat database baru, lalu centang # mysql -u root -p -e "SELECT @@datadir;" 2
# mysql -u root -p -e "CREATE DATABASE tecmint;"Selamat. Anda telah berhasil mengubah direktori data untuk MySQL atau MariaDB
RingkasanDalam posting ini, kita telah membahas bagaimana mengubah direktori data di server MySQL atau MariaDB yang berjalan pada distribusi CentOS/RHEL 7 dan Ubuntu/Debian
Apakah Anda memiliki pertanyaan atau komentar tentang artikel ini?