Solusi Can’t create database (errno: 13) pada MySQL

Halo sobat, secara default data MySQL tersimpan di /var/lib/mysql. Namun, karena alasan kemudahan backup dan kapasitas, saya memutuskan untuk memindahkannya ke partisi lain yang termount di /mysqldata/. Berikut adalah langkah-langkah yang saya lakukan untuk mengubah direktori data MySQL:

sed -i 's/datadir=\/var\/lib\/mysql/datadir=\/ripanel\/mysqldata/g' /etc/my.cnf
mkdir -p /mysqldata
/etc/init.d/mysqld stop
cp -rap /var/lib/mysql/* /mysqldata
chown mysql.mysql /mysqldata 
/etc/init.d/mysqld start

Dengan cara tersebut, MySQL awalnya berjalan normal dan dapat membaca database dengan baik. Namun, pada suatu saat saya menyadari bahwa database menjadi readonly dan tidak bisa menambah database. Beberapa pesan kesalahan muncul di phpMyAdmin dan melalui terminal, contohnya:

[root@rahmatriyanto-centos6 rahmatriyanto]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.73 Source distribution

...

mysql> create database rahmatriyanto;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rahmatriyanto' at line 1

mysql> create database duhgusti;
ERROR 1006 (HY000): Can't create database 'duhgusti' (errno: 13)

Ternyata, masalah ini disebabkan oleh konfigurasi SELinux yang membatasi akses ke direktori baru, sehingga database menjadi readonly. Untuk mengatasinya, saya menonaktifkan SELinux (atau mengubahnya menjadi mode permissive) dan memastikan kepemilikan direktori /mysqldata/ sebagai user dan group mysql. Berikut perintah yang saya gunakan:

[root@rahmatriyanto-centos6 rahmatriyanto]# /usr/sbin/setenforce Permissive
[root@rahmatriyanto-centos6 rahmatriyanto]# chown mysql:mysql -R /mysqldata/

Kesimpulan

Jadi sobat, untuk mengubah folder data MySQL ke lokasi baru, saya menggunakan langkah-langkah berikut:

sed -i 's/datadir=\/var\/lib\/mysql/datadir=\/ripanel\/mysqldata/g' /etc/my.cnf
mkdir -p /mysqldata
/etc/init.d/mysqld stop
cp -rap /var/lib/mysql/* /mysqldata
chown mysql.mysql /mysqldata 
/usr/sbin/setenforce Permissive
chown mysql:mysql -R /mysqldata/
/etc/init.d/mysqld start

Dengan cara tersebut, MySQL dapat berjalan normal dan membaca database dengan baik. Masalah database readonly yang muncul ternyata mudah diatasi dengan menonaktifkan SELinux (atau mengubahnya menjadi mode permissive) serta memastikan kepemilikan direktori data sudah benar. Semoga panduan ini bermanfaat dan membantu sobat dalam mengelola data MySQL dengan lebih efisien. Selamat mencoba!

© 2025 Rahmat Riyanto. Semua hak cipta dilindungi.

Tinggalkan Balasan

Informasi kontak Anda tidak akan dipublikasikan. Kolom yang wajib diisi ditandai *. Notifikasi akan dikirim ke telegram untuk mempercepat tanggapan komentar