Pertanyaan Mengapa GRANT tidak berfungsi di MySQL?


Saya menggaruk-garuk kepala saya saat ini karena saya melihat banyak situs web penolong menunjukkan cara membuat pengguna MySQL dan memberikan hak istimewa tetapi untuk beberapa alasan itu tidak bekerja untuk saya. Saya mencoba laptop WinXP dan MacBook Pro dengan versi MySQL terbaru.

Berikut ini hanyalah contoh dari ketika saya bekerja dengan WordPress. Basis data sebenarnya adalah sesuatu yang berbeda tetapi masalah yang sama.

Berikut langkahnya:

mysql> mysql -uroot -p<password>
mysql> CREATE DATABASE wwordpress;
mysql> CREATE USER 'www'@'localhost' IDENTIFIED BY 'basic';

Permintaan OK, 0 baris terpengaruh (0,14 detik)

mysql> GRANT INSERT ON wordpress.* TO 'www'@'localhost' IDENTIFIED BY 'basic';

Permintaan OK, 0 baris terpengaruh (0,00 detik)

mysql> FLUSH PRIVILEGES;

Permintaan OK, 0 baris terpengaruh (0,03 detik)

mysql> SELECT * FROM mysql.user WHERE User='www' \G
*************************** 1. baris ******************** *******
                 Tuan rumah: localhost
                 Pengguna: www
             Kata Sandi: * E85C94AF0F09C892339D31CF7570A970BCDC5805
          Select_priv: N
          Insert_priv: N
          Update_priv: N
          Hapus_priv: N
          Create_priv: N
            Drop_priv: N
          Reload_priv: N
        Shutdown_priv: N
         Process_priv: N
            File_priv: N
           Grant_priv: N
      Referensi_priv: N
           Index_priv: N
           Alter_priv: N
         Tampilkan_db_priv: N
           Super_priv: N
Create_tmp_table_priv: N
     Lock_tables_priv: N
         Execute_priv: N
      Repl_slave_priv: N
     Repl_client_priv: N
     Create_view_priv: N
       Show_view_priv: N
  Create_routine_priv: N
   Alter_routine_priv: N
     Create_user_priv: N
           Event_priv: N
         Trigger_priv: N
             ssl_type:
           ssl_cipher:
          x509_issuer:
         x509_subject:
        max_questions: 0
          max_updates: 0
      max_connections: 0
 max_user_connections: 0
1 baris di set (0,00 detik)

mysql>

Seperti yang Anda lihat "Insert_priv: N" seharusnya "Y".

Ada saran?

Terima kasih sebelumnya.


32
2017-10-07 23:41


asal


Jawaban:


apa yang Anda pilih adalah hak istimewa global. Namun Anda memberikan basis data (dan tuan rumah, tetapi itu tidak masalah) hak khusus.

GRANT INSERTON wordpress.* TO 'www'@'localhost' IDENTIFIED BY 'basic';

izin ini disimpan dalam db meja.

hanya untuk mengarahkan Anda ke arah yang benar:

SHOW GRANTS FOR 'www'@'localhost'

http://dev.mysql.com/doc/refman/5.0/en/show-grants.html


32
2017-10-08 19:29



Itu bukan tempat hak GRANTed pengguna paling disimpan - coba

SHOW GRANTS FOR 'www'@'localhost'

untuk melihat perizinan khusus database sebagai gantinya. (Hibah hanya akan muncul di tabel pengguna jika itu untuk semua basis data.)

Berikut ini adalah detail langkah demi langkah yang agak lama bagaimana perizinan disimpan di MySQL - saya tidak berpikir banyak hal telah berubah.


8
2017-10-07 23:49



Ini seharusnya berfungsi:

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

2
2017-07-05 05:04



Anda perlu melihat tabel mysql.db atau mysql.tables_priv jika Anda perlu memilih Y atau N jika Anda mencoba melakukan pembatasan dari halaman apa yang dapat diedit atau dimasukkan atau dihapus oleh pengguna ... Tabel ini diperbarui secara otomatis dengan Ys dan Ns karena mereka semata-mata dirancang untuk menunjukkan hak istimewa apa yang dimiliki pengguna pada tabel atau kolom sebagai lawan dari mysql.user yang tujuannya adalah untuk menunjukkan bahwa ada pengguna tertentu yang dapat masuk (membuat koneksi) ke database.


1
2018-03-26 12:06