LitOS & Slackware MySQL

Minggu, 2 Maret 2008 | Oleh ilyaZ |

LitOS logo

LitOS yang merupakan turunan murni dari Slackware tentu saja meanggunakan paket-paket installer dari slackware, dan termasuk MySQL ini. Seperti biasa paket MySQL di slackware belum dapat langsung digunakan (masalah klasik slack). Lalu bagaimana? Akan selalu ada beberapa jalan untuk menuju Roma dalam sistem pemrograman, demikian juga masalah ini yang jelas-jelas hanya masalah sepele.

Ok, sekarang kita harus sudah tahu masalahnya, slackware sendiri sudah memberikan solusinya, terletak pada bagian atas di dalam file rc.mysqld yang diberi comment :

# Before you can run MySQL, you must have a database.  To install an initial
# database, do this as root:
#
#   su - mysql
#   mysql_install_db

Hal ini jelas menyatakan paket MySQL pada slackware belum ada database sebagai syarat jalannya MySQL ini. Sekarang kita harus paham, apa yang akan terjadi jika kita jalankan 2 perintah tersebut. Perintah “mysql_install_db” akan membuat direktori /var/lib/mysql/mysql dengan kepemilikan user sesuai dengan yang mengeksekusi perintah. Sedangkan MySQL membutuhkan direktori ini dimiliki oleh user mysql dan grup mysql. itulah guna perintah “su - mysql” diawal. Sekarang sudah jelas masalah dan tujuan kita.

Cara pertama kita dapat menggunakan cara cerdik noprianto yang sudah dijelaskan sama si Xeozus, yaitu dengan mengubah parameter di skrip rc.mysqld nya, atau kita sudah langsung memasukan direktori yang dibutuhkan kedalam paket MySQL. Jika saya disuruh milih, jelas saya pilih cara pertama, disamping memperkecil paket dan juga mengamankan kemungkinan MySQL tidak dapat jalan (karena dir database terhapus).

Sekarang saya memiliki masalah, bagaimana jika pada saat awal pembuatan database MySQL nya, sekalian diberi password untuk MySQL root. Mungkin solusi mudah kita tinggal memasukan perintah set passwordnya dibawah skrip install_db tersebut dengan perintah :

/usr/bin/mysqladmin -u root password 'passwordnya'

Tetapi ada masalah, karena proses itu harus dijalankan ketika mysql sudah jalan, sehingga tidak bisa dengan mudah kita masukan itu dibawah “mysql_install_db” tadi. Untuk itu kita harus memodifikasi lagi file rc.mysqld nya. Dari asalnya :

if [ ! -d /var/lib/mysql/mysql ]; then
 mysql_install_db
 chown -R mysql.mysql /var/lib/mysql
fi

Menjadi :

if [ ! -d /var/lib/mysql/mysql ]   # jika direktori database belum ada
 then                              # maka
 mysql_install_db                  # install database sebagai root
 chown -R mysql.mysql /var/lib/mysql # ubah kepemilikan mysql
 mysqld_start                      # jalankan mysql
 sleep 5                           # tunggu 5 detik
 /usr/bin/mysqladmin -u root password 'passwordnya' # set passwordnya
 else                              # jika sudah ada database maka
 mysqld_start                      # jalankan mysql
fi

Langkah sleep 5 gunanya adalah menungu 5 detik untuk melakukan perintah berikutnya. Jika tidak dilakukan maka pengisian password gagal karena proses start mysql butuh waktu sedangkan set password hanya jika mysql sudah start (jalan).

Kata kunci: , , ,

Subscribe via email

« iTunes Belum No. 1     WordPress Updated »

  1. 7 Respon pada : “LitOS & Slackware MySQL”

  2. Oleh xeozus pada tanggal Mar 5, 2008 | Balas

    cerdik.. :D

  3. Oleh ilyaZ pada tanggal Mar 5, 2008 | Balas

    @xeozus,

    wew, kok iso?

  4. Oleh Noprianto pada tanggal Mar 13, 2008 | Balas

    Menarik dan bagus sekali :)

    Untuk yang tunggu 5 detik, ada alternatif untuk menguji apakah mysql sudah started atau belum?

    Karena, kalau mesin cepat, ini tentu kelamaan. Kalau mesin lambat, bisa2 ini terlalu cepat.

  5. Oleh ilyaZ pada tanggal Mar 13, 2008 | Balas

    @Noprianto,

    Ini bener noprianto yang saya kagumi? :)

    Tentu ada caranya, dengan memanfaatkan mysql pid. Jadi selama file itu belum ada, maka mysql belum start. Script nya adalah :

    while [ 0 ]; do
    if [ -f /var/run/mysql.pid ]; then
    /usr/bin/mysqladmin -u root password ‘passwordnya’
    break;
    else
    continue
    fi
    done

    jadi selama mysql belum jalan, dia tidak akan berjalan ke perintah berikutnya. :) Makasi atas koreksinya :)

  6. Oleh Noprianto pada tanggal Mar 14, 2008 | Balas

    Thanks ya :)

    Saya juga terus belajar kok :)

    Mantap sekali perbaikannya :)

    Sukses ya…

  7. Oleh ilyaZ pada tanggal Mar 14, 2008 | Balas

    @Noprianto,

    Sama-sama.. :)

  1. 1 Trackback(s)

  2. Mar 13, 2008: LitOS & Slackware MySQL (updated) | AzrailyaZ

Kirim komentar anda..