Saya telah membuat basis data, misalnya 'mydb'.
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
Sekarang saya bisa masuk ke database dari mana saja, tetapi tidak bisa membuat tabel.
Bagaimana memberi semua hak istimewa pada database itu dan (di masa depan) tabel. Saya tidak bisa membuat tabel dalam database 'mydb'. Saya selalu mendapatkan:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
mysql
mariadb
mysql-error-1142
marioosh
sumber
sumber
FLUSH PRIVILEGES
?flush privileges
tidak diperlukan saat Anda menggunakangrant
perintah. x4FLUSH PRIVILEGES;
hanya jika Anda memodifikasi tabel hibah langsung menggunakan pernyataan sepertiINSERT
,UPDATE
atauDELETE
Jawaban:
Ini adalah bagaimana saya membuat hak istimewa "Pengguna Super" (meskipun saya biasanya menentukan host).
CATATAN PENTING
Sementara jawaban ini dapat menyelesaikan masalah akses,
WITH GRANT OPTION
membuat pengguna MySQL yang dapat mengedit izin pengguna lain .Untuk alasan keamanan, Anda tidak boleh menggunakan jenis akun pengguna ini untuk proses apa pun yang dapat diakses publik (yaitu situs web). Anda disarankan untuk membuat pengguna dengan hak akses database hanya untuk penggunaan semacam itu.
sumber
myuser
dengan nama pengguna kustom mereka sendiri.Ini pertanyaan lama tapi saya rasa jawaban yang diterima tidak aman. Ini bagus untuk membuat pengguna super tetapi tidak bagus jika Anda ingin memberikan hak istimewa pada satu basis data.
%
tampaknya tidak mencakup komunikasi soket, itulocalhost
untuk.WITH GRANT OPTION
hanya baik untuk pengguna super, selain itu biasanya risiko keamanan.Pembaruan untuk MySQL 5.7+ sepertinya ini memperingatkan tentang:
Jadi pengaturan kata sandi harus dengan perintah terpisah. Terima kasih atas komentar dari @ scary-wombat.
Semoga ini membantu.
sumber
WITH GRANT OPTION
dan menargetkan basis data tertentu, bukan semua (*
)unix sockets
. Saat menggunakanlocalhost
klien myslq di linux sedang mencoba menggunakan soket unix alih-alih koneksi TCP ke server.Ini akan bermanfaat bagi sebagian orang:
Dari baris perintah MySQL:
Sayangnya, pada saat ini pengguna baru tidak memiliki izin untuk melakukan apa pun dengan database. Bahkan, jika pengguna baru bahkan mencoba masuk (dengan kata sandi, kata sandi), mereka tidak akan dapat mencapai shell MySQL.
Oleh karena itu, hal pertama yang harus dilakukan adalah memberi pengguna akses ke informasi yang mereka butuhkan.
Tanda bintang dalam perintah ini merujuk ke database dan tabel (masing-masing) yang dapat mereka akses — perintah khusus ini memungkinkan pengguna untuk membaca, mengedit, mengeksekusi, dan melakukan semua tugas di semua database dan tabel.
Setelah menyelesaikan izin yang ingin Anda siapkan untuk pengguna baru, selalu pastikan memuat ulang semua hak istimewa.
Perubahan Anda sekarang akan berlaku.
Untuk informasi lebih lanjut: http://dev.mysql.com/doc/refman/5.6/id/grant.html
Jika Anda tidak nyaman dengan baris perintah maka Anda dapat menggunakan klien seperti MySQL workbench , Navicat atau SQLyog
sumber
flush privileges
tidak diperlukan saat Anda menggunakangrant
perintah. x4GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
(aneh ..., tetapi benar)1. Buat database
2. Buat nama pengguna untuk basis data db_name
3. Gunakan database
4. Akhirnya Anda berada di database db_name dan kemudian jalankan perintah-perintah seperti buat, pilih dan masukkan operasi.
sumber
username
seharusnya memiliki semua hak istimewadb_name
tetapi bukanDROP db_name;
hak istimewa?SQL ini memberikan semua basis data tetapi hanya hak-hak dasar. Mereka cukup untuk Drupal atau Wordpress dan sebagai basa-basi, memungkinkan satu akun pengembang untuk proyek lokal.
sumber
Bekerja untuk hak istimewa pada skema :)
Opsional: setelah
mypasswd
Anda dapat menambahkanWITH GRANT OPTION
sumber
Saya bisa membuatnya hanya dengan menambahkan
GRANT OPTION
, tanpa itu selalu menerima izin ditolak kesalahansumber
Halo Saya menggunakan kode ini untuk memiliki pengguna super di mysql
lalu
sumber
flush privileges
tidak diperlukan saat Anda menggunakangrant
perintah. x4GRANT
bervariasi antara Versi MySQL.Untuk mengakses dari server jarak jauh ke database mydb saja
Untuk mengakses dari server jauh ke semua database.
sumber
Untuk memberikan semua hak pada basis data:
mydb
kepada penggunamyuser
:, cukup jalankan:atau:
Kata
PRIVILEGES
kunci tidak perlu.Saya juga tidak tahu mengapa jawaban lain menyarankan agar
IDENTIFIED BY 'password'
diletakkan di akhir perintah. Saya percaya bahwa itu tidak diperlukan.sumber