Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Manajemen pengguna MySQL

MySQL adalah salah satu pengelola database paling populer di dunia. Ini berisi banyak fitur yang membuatnya dapat diandalkan, efisien, dan kuat. Keandalan maksimumnya tercapai jika digunakan dengan benar. Membuat pengguna dengan izin terbatas pada database adalah salah satu cara termudah dan dapat diandalkan untuk meningkatkan keamanan MySQL.

MySQL membuat pengguna

Saat menginstal MySQL, pengguna root (administrator MySQL) adalah pengguna pertama yang dibuat. Pengguna root diizinkan untuk melakukan apa saja di database MySQL. Lebih mudah bagi orang lain untuk mengakses database Anda menggunakan akun ini.

Pengguna jahat mungkin mencoba masuk sebagai pengguna root untuk mencuri informasi yang dihosting atau menghancurkan layanan di samping data. Oleh karena itu, administrator sistem harus membuat pengguna dengan izin khusus pada database. Ini memastikan bahwa jika keamanan pengguna tersebut dikompromikan, dampaknya minimal atau dapat dikelola.

Pernyataan MySQL Create User memungkinkan Anda untuk membuat akun pengguna baru di server database. Ini menyediakan otentikasi, batas sumber daya, peran dan properti manajemen kata sandi untuk akun baru. Pernyataan tersebut juga memungkinkan kami untuk mengontrol akun yang harus dikunci atau dibuka.

Untuk Membuat Pengguna, diperlukan hak istimewa global (menjadi pengguna root) dari pernyataan “CREATE USER” atau hak istimewa INSERT untuk skema sistem MySQL. Kesalahan muncul jika Anda mencoba membuat pengguna yang sudah ada tetapi jika Anda menggunakan klausa “JIKA TIDAK ADA”, pernyataan tersebut memberikan peringatan untuk setiap pengguna bernama yang sudah ada alih-alih pesan kesalahan.

Untuk membuat pengguna non-root dan memberi mereka hak istimewa untuk mengakses dan memodifikasi database, kami menggunakan sintaks berikut:

CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';

Nama_akun memiliki dua bagian; nama pengguna dan nama host, dipisahkan oleh simbol @. Nama pengguna adalah nama pengguna, sedangkan nama host adalah nama host dari mana pengguna dapat terhubung dengan server database.

username@hostname

Nama host adalah opsional. Jika nama host tidak diberikan, pengguna dapat terhubung dari host mana pun di server. Nama akun pengguna tanpa nama host dapat ditulis sebagai username@%

CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';

Perhatikan bahwa pernyataan buat pengguna membuat pengguna baru dengan akses penuh. untuk memberikan hak istimewa kepada pengguna, gunakan pernyataan GRANT

Gunakan langkah-langkah berikut untuk membuat pengguna baru di database MySQL:

1. Dengan menggunakan alat klien MySQL, buka server MySQL

2. Ketik sandi, lalu tekan Enter.

3. Buat pengguna baru menggunakan perintah berikut

create user 'foss'@'localhost' identified by 'foss12345'; 

4. Gunakan perintah berikut untuk menampilkan pengguna di server MySQL

select user from mysql.user;

Dari output yang ditampilkan, pengguna 'foss' telah berhasil dibuat.

5. Sekarang gunakan klausa IF NOT EXISTS dengan pernyataan CREATE USER dengan menjalankan perintah berikut:

Memberikan hak istimewa kepada Pengguna Baru MySQL

Beberapa hak istimewa paling umum yang disediakan oleh server MySQL untuk pengguna baru meliputi;

1. SEMUA HAK ISTIMEWA: mengizinkan semua hak istimewa ke akun pengguna baru

2. BUAT: memungkinkan akun pengguna untuk membuat database dan tabel

3. JATUHKAN: memungkinkan akun pengguna untuk menghapus database dan tabel

4. HAPUS: memungkinkan akun pengguna untuk menghapus baris dari tabel tertentu

5. MASUKKAN: memungkinkan akun pengguna untuk menyisipkan baris ke dalam tabel tertentu

6. PILIH: memungkinkan akun pengguna untuk membaca database

7. PEMBARUAN: memungkinkan akun pengguna untuk memperbarui baris tabel

Jalankan perintah berikut untuk memberikan semua hak istimewa kepada pengguna

GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';

Jalankan perintah berikut untuk memberikan hak istimewa khusus kepada pengguna yang baru dibuat,

GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';

Untuk menghapus semua hak istimewa yang diberikan kepada pengguna, jalankan perintah di bawah ini.

FLUSH PRIVILEGES;

Untuk melihat hak istimewa yang ada yang diberikan kepada pengguna, jalankan perintah berikut.

SHOW GRANTS FOR 'foss'@'localhost';

Pengguna Drop MySQL

Pernyataan MySQL Drop User memungkinkan Anda untuk menghapus satu atau lebih akun pengguna dan hak istimewanya dari server database. Jika akun pengguna tidak ada di server database, itu akan mengembalikan kesalahan.

Untuk menggunakan pernyataan Drop User, Anda harus memiliki hak istimewa global atau hak istimewa DELETE untuk skema sistem MySQL.

Sintaks untuk menghapus akun pengguna dari server database seluruhnya adalah sebagai berikut:

DROP USER 'foss'@'localhost';

Catatan: Nama akun pada contoh di atas diidentifikasi sebagai username@hostname. Nama pengguna adalah nama akun yang ingin Anda hapus dari server database, dan nama host adalah nama server dari akun pengguna. misalnya, 'foss@localhost'. foss adalah nama pengguna, sedangkan localhost adalah nama host.

Berikut ini adalah langkah-langkah yang harus diikuti saat menghapus pengguna yang ada dari database server MySQL;

1. Dengan menggunakan alat klien MySQL, buka server MySQL

2. Ketik kata sandi akun, lalu tekan Enter

3. Untuk menghapus akun pengguna, jalankan perintah berikut

DROP USER 'fosslinux'@'localhost';

4. Jalankan perintah berikut untuk menunjukkan kepada pengguna

select user from mysql.user; 

Anda akan mendapatkan output di mana nama pengguna fosslinux tidak akan ada, seperti yang ditunjukkan di bawah ini:

5. Pengguna Drop juga dapat digunakan untuk menghapus lebih dari satu akun pengguna sekaligus. Untuk melakukan itu, Anda memisahkan account_names menggunakan koma.

Catatan: Karena kami telah menghapus pengguna, kami akan membuat dua pengguna menggunakan konsep buat pengguna (fosslinuxtuts dan fosslinux@%). Setelah itu, kita akan menjalankan perintah pada langkah 4 untuk menampilkan pengguna yang ada seperti yang ditunjukkan di bawah ini:

Sekarang jatuhkan kedua pengguna secara bersamaan menggunakan perintah di bawah ini:Jalankan perintah berikut untuk melepaskan kedua pengguna:

DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;

Perhatikan bahwa pernyataan DROP tidak dapat menutup sesi pengguna yang terbuka secara otomatis. Ketika pernyataan DROP dijalankan saat sesi akun pengguna aktif, perintah tidak memengaruhinya hingga sesinya ditutup. Akun pengguna dihapus hanya ketika sesi ditutup, dan upaya pengguna berikutnya tidak akan dapat masuk lagi.

MySQL menampilkan pengguna/daftar semua pengguna

Untuk mengelola database di MySQL, Anda perlu melihat daftar semua akun pengguna dalam database. Orang berasumsi bahwa ada perintah SHOW USERS yang mirip dengan SHOW DATABASE atau SHOW TABLES untuk menampilkan daftar semua pengguna yang tersedia di server database. Sayangnya, server MySQL tidak memiliki perintah SHOW USERS untuk menampilkan daftar semua pengguna di server MySQL. Jadi, sebagai gantinya, kami menggunakan kueri berikut untuk melihat daftar semua pengguna di server database:

Select user from mysql.user;

Setelah menjalankan perintah, Anda akan mendapatkan data pengguna dari tabel pengguna server database MySQL.

Catatan: Dalam contoh ini, kita akan menggunakan database MySQL. Pilih database dengan menjalankan perintah di bawah ini, kemudian gunakan pernyataan pilih dari untuk memeriksa pengguna yang ada seperti yang ditunjukkan pada gambar di bawah ini:

use mysql;
SELECT user FROM user;

Jika Anda ingin melihat informasi lebih lanjut tentang tabel pengguna, jalankan perintah berikut:

DESC user;

Perintah akan memberikan output berikut yang mencantumkan semua kolom yang tersedia dari database mysql.user:

Untuk mendapatkan informasi yang dipilih seperti nama host, status kedaluwarsa kata sandi, dan penguncian akun, jalankan kueri berikut:

 SELECT user, host, account_locked, password_expired FROM user;

Output berikut akan muncul setelah eksekusi query berhasil:

Tampilkan pengguna saat ini

Anda bisa mendapatkan informasi pengguna saat ini dengan menggunakan fungsi user() atau current_user() seperti yang ditunjukkan di bawah ini:

Select user(); 

ATAU

Select current_user();

Output berikut akan muncul setelah berhasil menjalankan salah satu perintah di atas.

Tampilkan pengguna yang saat ini masuk

Anda dapat melihat pengguna yang sedang login ke server database dengan menggunakan perintah berikut di server MySQL:

SELECT user, host, db, command FROM information_schema.processlist;

Perintah di atas menampilkan layar yang mirip dengan yang ditunjukkan di bawah ini:

Cara mengubah kata sandi pengguna MySQL

Catatan pengguna MySQL berisi informasi login, hak istimewa akun, dan informasi host untuk akun MySQL untuk mengakses dan mengelola database. Informasi login meliputi username dan password. Oleh karena itu, mungkin ada kebutuhan untuk mengubah kata sandi pengguna di database MySQL.

Untuk mengubah kata sandi akun pengguna, ingatlah untuk mengingat informasi berikut:

  • Detail akun pengguna yang akan diubah
  • Aplikasi ini digunakan oleh akun pengguna yang kata sandinya akan diubah. Jika kata sandi akun pengguna telah disetel ulang tanpa mengubah string koneksi aplikasi, aplikasi tidak dapat terhubung dengan server database.

MySQL memungkinkan Anda untuk mengubah kata sandi akun pengguna dengan tiga cara berbeda:

  1. PERBARUI pernyataan
  2. ATUR pernyataan SANDI
  3. ALTER pernyataan PENGGUNA

Mengubah kata sandi akun pengguna menggunakan pernyataan UPDATE

Setelah mengeksekusi pernyataan UPDATE, kami menggunakan pernyataan FLUSH PRIVILEGE untuk memuat ulang hak istimewa dari tabel hibah database MySQL.
Misalkan Anda ingin mengubah kata sandi untuk foss akun pengguna yang terhubung dari localhost dengan kata sandi foss12345, jalankan perintah berikut:

USE mysql;
UPDATE user SET password=password('kip12345') WHERE user='foss'; 
FLUSH PRIVILEGES;

Pernyataan di atas tidak akan berfungsi pada MySQL versi 5.7.6 atau lebih tinggi karena tabel pengguna MySQL berisi kolom string otentikasi yang hanya menyimpan kata sandi. Versi yang lebih tinggi memiliki kolom string otentikasi dalam pernyataan UPDATE seperti yang ditunjukkan pada pernyataan berikut:

USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user = 'foss';

FLUSH PRIVILEGES;

Catatan: Metode ini hanya berfungsi dengan versi MySQL yang lebih lama. Oleh karena itu, jika Anda memiliki versi MySQL yang lebih baru atau terbaru, lewati ke metode lain.

Mengubah kata sandi akun pengguna menggunakan pernyataan SET PASSWORD

Jika Anda ingin mengubah kata sandi akun lain, Anda harus memiliki hak istimewa UPDATE. Pernyataan tersebut menggunakan akun pengguna dalam format berikut:username@localhost

Memuat ulang hak istimewa dari tabel kata-kata kasar dari database MySQL menggunakan FLUSH PRIVILEGES tidak perlu digunakan. Untuk mengubah kata sandi akun pengguna (foss) dengan menggunakan pernyataan SET PASSWORD, gunakan pernyataan berikut:

SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');

Jika Anda menggunakan MySQL versi 5.7.6 atau lebih tinggi, pernyataan di atas tidak digunakan lagi dan tidak akan berfungsi di rilis mendatang. Sebagai gantinya, gunakan pernyataan berikut;

SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';

Mengubah kata sandi akun pengguna menggunakan pernyataan ALTER USER

MySQL menggunakan pernyataan ALTER USER dengan klausa IDENTIFIED BY. Untuk melakukannya, Anda menggunakan sintaks berikut:

ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';

Anda mungkin perlu mengatur ulang kata sandi akun root MySQL. Untuk melakukan ini, Anda dapat memaksa berhenti lalu memulai ulang server database MySQL tanpa menggunakan validasi tabel hibah.

Kesimpulan

Artikel ini telah secara komprehensif membahas semua aspek mengenai manajemen pengguna MySQL. Kami percaya itu cukup rinci untuk memberi Anda solusi untuk masalah Anda. Jika Anda mengalami kesalahan atau kesulitan saat menunjukkan pengguna menggunakan MySQL, silakan hubungi melalui bagian komentar untuk bantuan. Terima kasih telah membaca.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DAYOFWEEK() Contoh – MySQL

  2. Impor ekspor baris perintah database mysql supercepat

  3. MySQL – Operator Perbandingan TERKECIL dan TERBESAR

  4. Penanganan &Pembatasan Koneksi dengan ProxySQL

  5. Mengatur Variabel Konfigurasi MySQL – MySQL 5.7 vs MySQL 8.0