Saya ingin membuat pengguna baru di MySQL dan memberikan akses penuh hanya ke satu database, katakanlah dbTest
, yang saya buat dengan perintah seperti create database dbTest;
. Apa yang akan menjadi perintah MySQL untuk melakukan itu?
Saya ingin membuat pengguna baru di MySQL dan memberikan akses penuh hanya ke satu database, katakanlah dbTest
, yang saya buat dengan perintah seperti create database dbTest;
. Apa yang akan menjadi perintah MySQL untuk melakukan itu?
Coba ini untuk membuat pengguna:
CREATE USER 'user'@'hostname';
Coba ini untuk memberikannya akses ke database dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Jika Anda menjalankan kode / situs yang mengakses MySQL pada mesin yang sama, nama host adalah localhost.
Sekarang, kerusakannya.
GRANT
- Ini adalah perintah yang digunakan untuk membuat pengguna dan memberikan hak ke database, tabel, dll.
ALL PRIVILEGES
- Ini memberi tahu pengguna akan memiliki semua hak istimewa standar. Namun ini tidak termasuk hak istimewa untuk menggunakan perintah GRANT.
dbtest.*
- Instruksi ini MySQL untuk menerapkan hak-hak ini untuk digunakan di seluruh basis data dbtest. Anda dapat mengganti * dengan nama tabel tertentu atau menyimpan rutinitas jika diinginkan.
TO 'user'@'hostname'
- 'pengguna' adalah nama pengguna akun pengguna yang Anda buat. Catatan: Anda harus memiliki tanda kutip tunggal di sana. 'hostname' memberi tahu MySQL dari host mana pengguna dapat terhubung. Jika Anda hanya menginginkannya dari mesin yang sama, gunakanlocalhost
IDENTIFIED BY 'password'
- Seperti yang sudah Anda duga, ini menetapkan kata sandi untuk pengguna itu.
Sintaksis
Untuk membuat pengguna di MySQL / MariaDB 5.7.6 dan lebih tinggi, gunakan
CREATE USER
sintaks :lalu untuk memberikan semua akses ke database (mis.
my_db
), gunakanGRANT
Sintaks , misMana
ALL
( priv_type ) bisa diganti dengan spesifik hak istimewa sepertiSELECT
,INSERT
,UPDATE
,ALTER
, dllKemudian untuk memuat ulang izin yang baru ditugaskan jalankan:
Mengeksekusi
Untuk menjalankan perintah di atas, Anda perlu menjalankan
mysql
perintah dan mengetiknya ke prompt, lalu keluar denganquit
perintah atau Ctrl- D.Untuk menjalankan dari shell, gunakan
-e
parameter (gantiSELECT 1
dengan salah satu dari perintah di atas):atau cetak pernyataan dari input standar:
Jika Anda mendapat akses ditolak dengan di atas, tentukan
-u
(untuk pengguna) dan-p
(untuk kata sandi) parameter, atau untuk akses jangka panjang atur kredensial Anda~/.my.cnf
, misalnyaIntegrasi shell
Bagi orang-orang yang tidak terbiasa dengan sintaks MySQL, berikut adalah fungsi-fungsi shell yang mudah diingat dan digunakan (untuk menggunakannya, Anda perlu memuat fungsi-fungsi shell yang disertakan lebih jauh ke bawah).
Berikut ini contohnya:
Untuk menggunakan perintah di atas, Anda perlu menyalin & menempel fungsi-fungsi berikut ke file rc Anda (mis.
.bash_profile
) Dan memuat kembali shell Anda atau sumber file. Dalam hal ini ketik sajasource .bash_profile
:Catatan: Jika Anda lebih suka untuk tidak meninggalkan jejak (seperti kata sandi) di riwayat Bash Anda, periksa: Bagaimana mencegah perintah muncul di riwayat bash?
sumber
~/.my.cnf
seperti yang disarankan di atas.Untuk membuat pengguna dan memberikan semua hak istimewa pada database.
Masuk ke MySQL:
Sekarang buat dan berikan
Pengguna anonim (hanya untuk pengujian lokal)
Sebagai alternatif, jika Anda hanya ingin memberikan akses penuh tanpa batas ke basis data (mis. Pada mesin lokal Anda untuk contoh uji, Anda dapat memberikan akses ke pengguna anonim, seperti:
Waspadalah
Ini bagus untuk data sampah dalam pengembangan. Jangan lakukan ini dengan apa pun yang Anda pedulikan.
sumber
abaikan opsi -p , jika pengguna mysql tidak memiliki kata sandi atau cukup tekan tombol "[Enter]" untuk mem-by-pass. string yang dikelilingi oleh kurung kurawal perlu diganti dengan nilai aktual.
sumber
Anda dapat membuat pengguna baru menggunakan pernyataan CREATE USER , dan memberikan hak kepada mereka menggunakan GRANT .
sumber
Bagi saya ini berhasil.
dimana
sumber
Perintah di bawah ini akan berfungsi jika Anda ingin membuat pengguna baru memberinya semua akses ke database tertentu (tidak semua database di Mysql Anda) di localhost Anda.
Ini akan memberikan semua hak istimewa ke satu basis data
test_database
(dalam kasus AndadbTest
) kepada pengguna tersebut di localhost.Periksa izin apa yang dikeluarkan oleh perintah di atas untuk pengguna tersebut dengan menjalankan perintah di bawah ini.
Untuk jaga-jaga, jika Anda ingin membatasi akses pengguna hanya satu tabel
sumber
Dalam kasus
host
bagian dihilangkan itu default ke simbol wildcard%
, memungkinkan semua host.CREATE USER 'service-api';
GRANT ALL PRIVILEGES ON the_db.* TO 'service-api' IDENTIFIED BY 'the_password'
sumber