Pengguna Ubuntu mungkin pernah sering ketemu error kayak gini:
scylla@lifebit:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [fail]
* Starting MySQL database server mysqld [ OK ]
/usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
“debian-sys-maint” adalah MySQL user yang dibuat supaya Ubuntu bisa start / stop database dan melakukan operasi2 maintenance lain. Terus knapa ada error “access denied”?
Masalah ini terjadi biasanya karena ketika update MySQL, password user debian-sys-maint ngga ikut terupdate bersamaan dengan file konfigurasi yang baru. Tapi ternyata solusinya cukup simple:
Pertama, liat isi file /etc/mysql/debian.cnf
scylla@lifebit:~$ sudo cat /etc/mysql/debian.cnf
Isinya kurang lebih akan seperti ini:
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock basedir = /usr
Perhatikan pada direktif password, itu adalah password user debian-sys-main yang kita cari. Selanjutnya, execute perintah MySQL untuk update password user debian-sys-maint sekaligus memberikan privilege yang diperlukan. Login kedalam MySQL server menggunakan root:
scylla@lifebit:~$ mysql -uroot -p
Issue perintah GRANT untuk memberikan privilege:
mysql> GRANT ALL PRIVILEGES ON . TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';
Selesai! Dan sekarang kalau kita restart MySQL, seharusnya ngga bakalan ada lagi error “access denied”.
scylla@lifebit:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [ OK ]
* Starting MySQL database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.