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

Cara Memberikan Semua Keistimewaan pada Database di MySQL

Untuk mulai mengedit hak istimewa di MySQL, Anda harus terlebih dahulu login ke server Anda dan kemudian terhubung ke mysql klien. Biasanya Anda ingin terhubung dengan root atau akun mana pun yang merupakan akun 'pengguna super' utama Anda yang memiliki akses penuh di seluruh instalasi MySQL.

Biasanya root pengguna akan diberi kata sandi otentikasi ketika MySQL diinstal, tetapi jika bukan itu masalahnya, Anda harus mengambil langkah-langkah untuk meningkatkan keamanan Anda dengan menambahkan root kata sandi seperti yang diilustrasikan dalam dokumentasi resmi.

Menghubungkan ke Alat Baris Perintah MySQL

Untuk contoh ini, kita akan menganggap root adalah akun MySQL utama. Untuk mulai menggunakan Alat Baris Perintah MySQL (mysqlcli ), sambungkan ke server Anda sebagai root pengguna, lalu keluarkan mysql perintah:

$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>

Jika berhasil, Anda akan melihat beberapa output tentang koneksi MySQL Anda dan menghadap ke bawah mysql cepat.

Catatan:Jika Anda tidak dapat terhubung langsung ke server sebagai root pengguna sebelum menghubungkan ke mysql , Anda dapat menentukan pengguna yang ingin Anda hubungkan sebagai dengan menambahkan --user= bendera:

$ mysql --user=username

Memberikan Hak Istimewa

Sekarang Anda berada di mysqlcli prompt, Anda hanya perlu mengeluarkan GRANT perintah dengan opsi yang diperlukan untuk menerapkan izin yang sesuai.

Jenis Hak Istimewa

GRANT perintah mampu menerapkan berbagai hak istimewa, mulai dari kemampuan untuk CREATE tabel dan database, membaca atau menulis FILES , dan bahkan SHUTDOWN server. Ada berbagai macam tanda dan opsi yang tersedia untuk perintah, jadi Anda mungkin ingin membiasakan diri dengan apa yang GRANT sebenarnya dapat dilakukan dengan menelusuri dokumentasi resmi.

Hak Istimewa Khusus Database

Dalam kebanyakan kasus, Anda akan memberikan hak istimewa kepada pengguna MySQL berdasarkan database tertentu akun itu harus memiliki akses ke. Ini adalah praktik umum, misalnya, untuk setiap database MySQL yang unik di server untuk memiliki user uniknya sendiri terkait dengannya, sehingga hanya satu user memiliki akses otentikasi ke satu database dan sebaliknya.

Untuk GRANT ALL hak istimewa untuk user , memungkinkan pengguna tersebut mengontrol penuh atas database tertentu , gunakan sintaks berikut:

mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

Dengan perintah itu, kami telah memberi tahu MySQL untuk:

  • GRANT PRIVILEGES dari jenis ALL (jadi semuanya tentu saja). Catatan:Sebagian besar instalasi MySQL modern tidak memerlukan PRIVILEGES opsional kata kunci.
  • Hak istimewa ini untuk database_name dan ini berlaku untuk semua tabel database tersebut, yang ditunjukkan dengan .* yang mengikuti.
  • Hak istimewa ini diberikan ke username ketika username itu terhubung melalui lokal, seperti yang ditentukan oleh @'localhost' . Untuk menentukan host yang valid, ganti 'localhost' dengan '%' .

Daripada memberikan semua hak istimewa ke seluruh database, mungkin Anda ingin memberikan tolkien pengguna hanya kemampuan untuk membaca data (SELECT ) dari authors tabel books basis data. Itu akan mudah dicapai seperti:

mysql> GRANT ALL PRIVILEGES ON books.authors  TO 'tolkien'@'localhost';

Membuat Pengguna Super Lain

Meskipun tidak terlalu aman, dalam beberapa kasus Anda mungkin ingin membuat 'pengguna super' lain, yang memiliki SEMUA hak istimewa di SEMUA database di server. Itu dapat dilakukan mirip dengan di atas, tetapi dengan mengganti database_name dengan tanda bintang wildcard:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';

Sekarang tolkien memiliki hak istimewa yang sama dengan root default akun, hati-hati!

Menyimpan Perubahan Anda

Sebagai langkah terakhir setelah pembaruan apa pun pada hak istimewa pengguna, pastikan untuk menyimpan perubahan dengan mengeluarkan FLUSH PRIVILEGES perintah dari mysql perintah:

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tipe data MySQL apa yang harus digunakan untuk Lintang/Bujur dengan 8 tempat desimal?

  2. MySQL Bandingkan Database

  3. Neo4j - Memilih data dengan MATCH menggunakan Cypher

  4. Temukan garis lintang/bujur terdekat dengan kueri SQL

  5. Bergabung antara tabel dalam dua database yang berbeda?