Di dalam MySQL ada beberapa cara untuk membuat user, yaitu dengan menggunakan GRANT atau langsung insert ke table user di MySQL.

Untuk lebih memudahkan mari kita coba dengen contoh berikut. Pertama kita harus login dulu sebagai DBA di MySQL, jika belum ada perubahan user DBA di MySQL adalah root tanpa password.

Login ke Database MySQL :

$mysql -u root -p
password:
mysql> GRANT ALL PRIVILEGES ON *.* TO user1@localhost
      -> IDENTIFIED BY "password_user1" WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO user1@"%"
      -> IDENTIFIED BY 'password_user1' WITH GRANT OPTION;
mysql> GRANT RELOAD, PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;

Perintah diatas akan membuat tiga user di MySQL dengan privileges sebagai berikut :

  • User user1 bisa melakukan koneksi ke MySQL dari manapun dan harus menggunakan password password_user1
  • User admin hanya bisa konek dari localhost tanpa password, user admin juga memiliki wewenang untuk eksekusi mysqladmin reload, mysqladmin refresh, dan mysqladmin flush_*.
  • User dummy dapat konek dari localhost dan tanpa password, tapi user ini tidak memiliki wewenang apapun setalah konek.
  • Cara berikutnya adalah dengan mengakses tabel secara langsung.

      $ mysql -u root mysql
    
      mysql> INSERT INTO user VALUES('localhost', 'user1', PASSWORD('password_user1'),
          -> 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
    
      mysql> INSERT INTO user VALUES('%', 'user1', PASSWORD('password_user1'),
          -> 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
    
      mysql> INSERT INTO user SET Host='localhost', User='admin',
          -> Reload_priv='Y', Process_priv='Y';
    
      mysql> INSERT INTO user (Host, User, Password)
          -> VALUES('localhost', 'dummy', '');
    
      mysql> FLUSH PRIVILEGES;
    

    Semoga bermanfaat