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.

Leave a Reply

Your email address will not be published. Required fields are marked *