seperatly "güncelleme" "insert" ve açıklamada "yinelenen anahtar güncelleme üzerine [...] insert" için ayrıcalık eksik, ama yeterince

oy
1

Ben gereken minimum bir veritabanı kullanıcının sahip haklarını azaltmaya çalıştı. Aksi Aşağıdaki durum fark ettik:

Ben bir veritabanı var testve bir kullanıcı userşu ayrıcalıkları:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'%';
GRANT SELECT, INSERT ON test.test TO 'user'@'%';
GRANT UPDATE (y) ON test.test TO 'user'@'%';

testTablo (InnoDB'nin) gibi tanımlanmıştır

create table test
(
    x int null,
    y int null
);

create unique index test_x_uindex on test (x);

Ben çalıştırabilir insertve updatebenzeri sorgular

INSERT INTO test (x,y) VALUES (1,1), (2,2);
UPDATE test SET y = 3 WHERE x = 1;

Ama çalışan

INSERT INTO test (x,y) VALUES (2,4) ON DUPLICATE KEY UPDATE y = VALUES(y);

sonuçları

Hata 1143 (42000): UPDATE komutu kullanıcı 'sap' engellendi @ sütunu 'localhost 'x' Tablo 'test' de

ifadesi aslında bir şey güncelleştirmek ama sadece yeni bir satır eklemek olmaz aynı şey meydana gelir.

Bu biraz tuhaf görünüyor. Ben doğrudan ilgili hata raporu bulamadık. Sadece bir şey MySQL için eski (kapalı ama birisi. Ben bunu test vermedi. Aslında sabit olmadığını belirtti mı). Gelen MySQL 8.0 belgelenmesi söz güncelleyen ayrıcalıkları yalnızca değiştirilen sütunlar için ihtiyaç vardır. Mariadb dokümantasyon herhangi ayrıcalık gereksinimlerini bahsetmiyor.

Bir şey özlüyor musunuz?

Bu, tüm mariadb 10.2.16 üzerinde test edilmiştir.

Oluştur 27/11/2018 saat 18:09
kaynak kullanıcı
Diğer dillerde...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more