Hakların atanması ve kaldırılması. İzinleri ayarlama Grant komutu Ayrıcalıkları filtrelemek için görünümleri kullanma

GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...] ON (tbl_name | * | *.* | db_name.*) TO user_name "password"] [, user_name ...] ] ] ] ] REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...] ON (tbl_name | * | *.* | db_name.*) FROM user_name [, user_name ...]

GRANT, MySQL 3.22.11 ve üzeri sürümlere dahildir. MySQL'in önceki sürümlerinde GRANT ifadesi hiçbir şey yapmaz.

GRANT ve REVOKE komutları, sistem yöneticilerinin MySQL kullanıcıları oluşturmasına ve kullanıcılara dört ayrıcalık düzeyinde haklar vermesine veya bunları iptal etmesine olanak tanır:

Küresel düzey Genel ayrıcalıklar belirtilen sunucudaki tüm veritabanlarına uygulanır. Bu ayrıcalıklar mysql.user tablosunda saklanır. Veritabanı düzeyi Veritabanı ayrıcalıkları, belirtilen veritabanındaki tüm tablolar için geçerlidir. Bu ayrıcalıklar mysql.db ve mysql.host tablolarında saklanır. Tablo seviyesi Tablo ayrıcalıkları belirtilen tablonun tüm sütunlarına uygulanır. Bu ayrıcalıklar mysql.tables_priv tablosunda saklanır. Sütun düzeyi Sütun ayrıcalıkları, belirtilen tablodaki tek tek sütunlar için geçerlidir. Bu ayrıcalıklar mysql.columns_priv tablosunda saklanır.

Mevcut olmayan bir kullanıcıya ayrıcalıklar verilirse o kullanıcı oluşturulur. GRANT komutunun örnekleri için 4.3.5 MySQL'e Yeni Kullanıcı Ekleme bölümüne bakın.

Tablo, GRANT ve REVOKE ifadelerine ilişkin priv_type parametresine yönelik olası değerlerin bir listesini gösterir:

TÜMGRANT SEÇENEĞİ İLE dışındaki tüm basit ayrıcalıkları ayarlar
DEĞİŞTİRALTER TABLE kullanımına izin verir
YARATMAKCREATE TABLE kullanımına izin verir
GEÇİCİ TABLOLAR OLUŞTURUNGEÇİCİ TABLO OLUŞTUR kullanımına izin verir
SİLMEKDELETE kullanımına izin verir
DÜŞÜRMEKDROP TABLE kullanımına izin verir.
UYGULAMAKKullanıcının saklı yordamları çalıştırmasına izin verir (MySQL 5.0 için)
DOSYASELECT... INTO OUTFILE ve LOAD DATA INFILE kullanımına izin verir.
DİZİNCREATE INDEX kullanımına izin verir ve BIRAK DİZİN
SOKMAKINSERT kullanımına izin verir
MASALARI KİLİTLEMESELECT ayrıcalığına sahip tablolarda LOCK TABLES kullanımına izin verir.
İŞLEMTAM İŞLEM LİSTESİNİ GÖSTER kullanımına izin verir
REFERANSLARgelecekte kullanılmak üzere rezerve edilmiştir
TEKRAR YÜKLEFLUSH kullanımına izin verir
ÇOĞALTMA İSTEMCİSİKullanıcıya ana ve yardımcı sunucuların konumunu sorgulama hakkı verir.
ÇOĞALTMA KÖLEÇoğaltma sırasında yardımcı sunucular için gereklidir (ana sunucunun ikili günlüklerinden bilgi okumak için).
SEÇMESELECT kullanımına izin verir
VERİTABANLARINI GÖSTERVERİTABANLARINI GÖSTER Tüm veritabanlarını listeler.
KAPATMysqladmin kapatma kullanımına izin verir
SÜPERMax_connections'a ulaşılsa bile bir bağlantı kurmanıza (bir kez) ve CHANGE MASTER, KILL thread, mysqladmin debug, PURGE MASTER LOGS ve SET GLOBAL komutlarını çalıştırmanıza olanak tanır.
GÜNCELLEMEUPDATE kullanımına izin verir
KULLANIM``Ayrıcalıksız''ın eşanlamlısı.

Ayrıcalıkları olmayan bir kullanıcı oluşturmanız gerekiyorsa KULLANIM değeri belirtilebilir.

GEÇİCİ TABLOLAR OLUŞTUR, ÇALIŞTIR, TABLOLARI KİLİTLE, ÇOĞALTMA..., VERİTABANLARINI GÖSTER ve SÜPER ayrıcalıkları 4.0.2 sürümünde yenidir. Sürüm 4.0.2'ye yükselttikten sonra bu yeni ayrıcalıklardan yararlanmak için mysql_fix_privilege_tables betiğini çalıştırmalısınız.

MySQL'in eski sürümlerinde PROCESS ayrıcalığı, yeni SUPER ayrıcalığıyla aynı hakları verir.

GRANT komutu tarafından bir kullanıcıya verilen ayrıcalıkları iptal etmek için GRANT SEÇENEĞİ'ndeki priv_type değerini kullanın:

Mysql> HİBE SEÇENEKLERİNİ İPTAL ET ... DAN ...;

Bir tablo için belirtilebilecek tek priv_type değerleri şunlardır: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, IDEX ve ALTER.

Bir sütun için belirtilebilecek tek priv_type değerleri (column_list operatörü kullanıldığında) SELECT, INSERT ve UPDATE'dir.

Genel ayrıcalıklar ON *.* sözdizimi kullanılarak ayarlanabilir ve veritabanı ayrıcalıkları ON db_name.* sözdizimi kullanılarak ayarlanabilir. Geçerli veritabanı açıkken ON* belirtirseniz o veritabanı için ayrıcalıklar ayarlanacaktır. ( Uyarı: ne zaman ON * belirtirseniz yokluk mevcut veritabanı açık, bu genel ayrıcalıkları etkileyecektir!)

Belirli bilgisayarlardaki kullanıcılara yönelik hakları tanımlayabilmek için MySQL, formda kullanıcı adını (kullanıcı_adı) belirtme olanağı sağlar. Özel karakterler ('-' gibi) içeren bir kullanıcı dizesi veya özel veya joker karakterler ('%' gibi) içeren bir ana bilgisayar dizesi belirtmeniz gerekiyorsa, adı içine alabilirsiniz. uzak bilgisayar veya tırnak içindeki kullanıcı (örneğin, "test kullanıcısı"@"test-ana bilgisayar adı").

Uzak bilgisayar adına joker karakterler de ekleyebilirsiniz. Örneğin, "%.loc.gov", loc.gov etki alanındaki tüm uzak bilgisayarların kullanıcısını, "144.155.166.%" ise C sınıfı alt ağ 144.155.166'daki tüm uzak bilgisayarların kullanıcısını ifade eder.

Basit form kullanıcısı "%" ile eşanlamlıdır.

MySQL, kullanıcı adlarında joker karakterleri desteklemez. Anonim kullanıcılar, mysql.user tablosuna User="" kayıtları eklenerek veya GRANT komutunu kullanarak boş isimle bir kullanıcı oluşturularak tanımlanır.

Not: Anonim kullanıcıların MySQL sunucusuna bağlanmasına izin veriliyorsa, tüm yerel kullanıcılara da ayrıcalıklar vermelisiniz, çünkü aksi takdirde, bir kullanıcı yerel bilgisayardan MySQL'de oturum açmaya çalıştığında mysql.user tablosu anonim kullanıcıyı kullanacaktır. giriş yapmak!

Bunun bilgisayarınızda olup olmadığını kontrol etmek için aşağıdaki sorguyu çalıştırın:

Mysql> Ana Bilgisayarı Seçin, mysql.user'dan Kullanıcı WHERE Kullanıcısı = "";

Şu anda GRANT komutu uzak bilgisayarların, tabloların, veritabanlarının ve 60 karaktere kadar sütunların adlarını desteklemektedir. Kullanıcı adı en fazla 16 karakterden oluşmalıdır.

Bir tablo veya sütuna ilişkin ayrıcalıklar, dört düzeyin her birindeki ayrıcalıklardan mantıksal OR operatörü kullanılarak oluşturulur. Örneğin, mysql.user tablosu kullanıcının genel SELECT ayrıcalığına sahip olduğunu gösteriyorsa bu ayrıcalık veritabanı, tablo veya sütun düzeyinde iptal edilmez.

Bir sütunun ayrıcalıkları şu şekilde hesaplanabilir:

Genel ayrıcalıklar VEYA (veritabanı ayrıcalıkları VE uzak bilgisayar ayrıcalıkları) VEYA tablo ayrıcalıkları VEYA sütun ayrıcalıkları

Çoğu durumda, kullanıcı hakları yalnızca bir ayrıcalık düzeyinde tanımlanır; dolayısıyla bu prosedür genellikle yukarıda açıklandığı kadar karmaşık değildir. detaylı bilgi Ayrıcalıkların kontrol edilmesine yönelik eylemlerin sırası bölüm 4.2 Genel güvenlik sorunları ve MySQL erişim ayrıcalık sistemi bölümünde sunulmaktadır.

Mysql.user tablosunda bulunmayan bir kullanıcı/uzak kombinasyonuna ayrıcalıklar verilirse, mysql.user tablosuna bir giriş eklenir ve DELETE komutu kullanılarak silinene kadar tabloda kalır. Başka bir deyişle, GRANT komutu tabloda kullanıcı kayıtları oluşturabilir ancak REVOKE komutu bunları silemez. Bu, DELETE komutu kullanılarak yapılmalıdır.

Veritabanı ayrıcalıklarınız varsa, gerekirse mysql.db tablosunda bir giriş oluşturulur. REVOKE komutuyla bu veritabanına ilişkin tüm ayrıcalıklar kaldırıldıktan sonra bu giriş silinir.

Kullanıcının bir tabloda herhangi bir ayrıcalığı yoksa, kullanıcı bir tablo listesi istediğinde (örneğin, SHOW TABLES deyimini kullanarak) tablo görüntülenmez.

With GRANT OPTION ifadesi, kullanıcıya kendisinin sahip olduğu ayrıcalıkları belirli bir ayrıcalık düzeyinde diğer kullanıcılara verme yeteneği verir. Farklı ayrıcalıklara sahip iki kullanıcı ayrıcalıklarını birleştirebileceğinden GRANT ayrıcalığı verilirken dikkatli olunmalıdır!

MAX_QUERIES_PER_HOUR # , MAX_UPDATES_PER_HOUR # ve MAX_CONNECTIONS_PER_HOUR # seçenekleri MySQL 4.0.2 sürümünde yenidir. Bu ayarlar, bir kullanıcının bir saat içinde yapabileceği istek, güncelleme ve oturum açma sayısını sınırlar. 0 (varsayılan) olarak ayarlanırsa bu, bu kullanıcı için herhangi bir kısıtlama olmadığı anlamına gelir. bölümüne bakın.

Sahip olmadığınız bir ayrıcalığı başka bir kullanıcıya veremezsiniz. GRANT ayrıcalığı yalnızca sahip olduğunuz ayrıcalıkları vermenize olanak tanır.

Bir kullanıcıya belirli bir ayrıcalık düzeyinde GRANT ayrıcalığı atanmışsa, o kullanıcının bu düzeyde zaten sahip olduğu (veya gelecekte atanacak!) tüm ayrıcalıkların da o kullanıcıya atanabileceğini unutmayın. Bir kullanıcıya veritabanı üzerinde INSERT ayrıcalığının verildiğini varsayalım. Daha sonra veritabanında SELECT ayrıcalığını verirseniz ve GRANT OPTION İLE belirtirseniz, kullanıcı yalnızca SELECT ayrıcalığını değil aynı zamanda INSERT ayrıcalığını da verebilir. Daha sonra kullanıcıya veritabanında UPDATE ayrıcalığını verirseniz, kullanıcı INSERT, SELECT ve UPDATE işlemlerini gerçekleştirebilir.

ALTER ayrıcalıkları normal kullanıcılara atanmamalıdır. Bu, kullanıcıya tabloları yeniden adlandırarak ayrıcalık sistemini kırma yeteneği verir!

Tablo veya sütun ayrıcalıkları tek bir kullanıcı için bile kullanılıyorsa, sunucunun tüm kullanıcılar için tablo ve sütun ayrıcalıklarını kontrol ettiğini ve bunun MySQL'i bir miktar yavaşlatacağını lütfen unutmayın.

MySQL başlatıldığında tüm ayrıcalıklar belleğe okunur. Veritabanı, tablo ve sütun ayrıcalıkları hemen etkili olurken, kullanıcı düzeyindeki ayrıcalıklar kullanıcının bir sonraki bağlayışında etkinleşir. GRANT ve REVOKE komutları kullanılarak ayrıcalık atama tablolarında yapılan değişiklikler sunucu tarafından anında işlenir. Ayrıcalık atama tablolarını manuel olarak değiştirirseniz (INSERT , UPDATE vb. kullanarak), sunucuya ayrıcalık atama tablolarını yeniden yüklemesi talimatını vermek için FLUSH PRIVILEGES veya mysqladminflush-privilege s ifadesini çalıştırmalısınız. Bkz. bölüm 4.3.3 Ayrıcalık değişiklikleri ne zaman geçerli olur.

GRANT komutunun ANSI SQL ve MySQL versiyonları arasındaki en önemli farklar şunlardır:

  • MySQL'de ayrıcalıklar yalnızca kullanıcı adına değil, kullanıcı adı + uzak bilgisayar kombinasyonuna atanır.
  • ANSI SQL'in genel veya veritabanı düzeyinde ayrıcalıkları yoktur ve ANSI SQL, tüm MySQL ayrıcalık türlerini desteklemez. Öte yandan MySQL, ANSI SQL TRIGGER, EXECUTE veya UNDER ayrıcalıklarını desteklemez.
  • ANSI SQL ayrıcalık yapısı hiyerarşiktir. Bir kullanıcıyı silerseniz, o kullanıcıya atanan tüm ayrıcalıklar iptal edilir. MySQL'de atanan ayrıcalıklar otomatik olarak iptal edilmez; gerekirse bunları kendiniz kaldırmalısınız.
  • MySQL'de, bir kullanıcı bir tablodaki yalnızca birkaç sütunda INSERT ayrıcalığına sahipse, bir tabloyu INSERT yapabilir. INSERT ayrıcalığına sahip olmayan sütunlar varsayılan değerlerine ayarlanacaktır. ANSI SQL, tüm sütunlarda INSERT ayrıcalığını gerektirir.
  • ANSI SQL'de bir tabloyu bıraktığınızda o tablonun tüm ayrıcalıkları iptal edilir. ANSI SQL'de bir ayrıcalığı iptal ederseniz, bu ayrıcalığa dayalı olarak atanan tüm ayrıcalıklar da iptal edilir. MySQL'de ayrıcalıklar yalnızca REVOKE komutu kullanılarak veya MySQL ayrıcalık atama tabloları değiştirilerek kaldırılabilir.

REQUIRE kullanımının açıklaması için bkz. bölüm 4.3.9 Güvenli Bağlantıları Kullanma.

Kullanıcı Yorumları

Frank Wortner tarafından gönderildi[Sil] [Düzenle]

ld ile hiçbir sorunum olmadı. DEC (Compaq) olabilir
bir yama kitinde sabit kimlik var. isteyebilirsiniz
Digital Unix'iniz için en son yama kitini yükleyin
(Tru64 Unix) MySQL'i oluşturmadan önce. Yama kitleri
şu adreste mevcuttur:
href=http://ftp.support.compaq.com/public/unix/ >
http://ftp.support.compaq.com/public/unix/

16 Şubat 2002 Cumartesi, 22:21'de gönderildi[Sil] [Düzenle]

Kaynak kurulumları için bu talimatlar, yapılandırma ile "usr/local" (varsayılan) kullanıldığını varsayan dizin yapısına atıfta bulunur. Ancak önceki sayfadaki talimatlar (derleme/kurulum için) aşağıdakileri kullanmanızı önerir:

./configure --prefix=/usr/local/mysql

Tutarlı olmak için (ve bu Perl'de bazı sıkıntılara neden oluyor, dolayısıyla tamamen anlamsal değil), bu sayfadaki talimatlar, yapılandırma ile kurulum dizini olarak /usr/local/mysql'nin belirtildiğini varsaymalıdır.

Linda Wright tarafından 16 Şubat 2002 Cumartesi, saat 22:21'de gönderildi[Sil] [Düzenle]

Bu muhtemelen en önemli ve en az
Tüm MySQL'in beğenilen bölümleri
İlk kez mySQL kullanıcıları için belgeler. BENİM NACİZANE FİKRİME GÖRE,
bu sayfayı birlikte okumak
http://www.mysql.com/doc/P/r/Privileges.html bir
Herkesin güvenli veritabanı sistemlerini planlamak için bir zorunluluktur
herhangi bir gerçek karmaşıklığa sahip.

Christopher Raymond tarafından 16 Şubat 2002 Cumartesi, saat 22:21'de gönderildi[Sil] [Düzenle]

MySQL'i OS X Public Beta altında yüklemeye çalışıyorum. mysql_install_db betiğini çalıştırdığımda bir hata mesajı alıyorum:

Dyld: ./bin/mysqld kitaplığı açamıyor: /usr/lib/libpthread.A.dylib (Böyle bir dosya veya dizin yok, errno = 2)
Hibe tablolarının kurulumu başarısız oldu!

Apple'ın biraz farklı dizin adlandırma yapısına sahip olması nedeniyle betiğin var olmayan bir dizin aradığını varsayıyorum.Belki de bu betiğin OS X dağıtımı için değiştirilmesi gerekiyor.

Biri yardım edebilir mi?

Mark Zieg tarafından 16 Şubat 2002 Cumartesi, saat 22:21'de gönderildi[Sil] [Düzenle]

Bağlantıları günlüğe kaydetme seçeneği olsaydı, ancak sorgular olmasaydı iyi olurdu.

Bennett Haselton tarafından 16 Şubat 2002 Cumartesi, saat 22:21'de gönderildi[Sil] [Düzenle]

Geçerli bir veritabanı seçili olmadan MySQL kök kullanıcısı olarak oturum açtıysanız ve
Bir kullanıcıya tüm ayrıcalıkları şu komutla verin:

Bhaselto'ya * TÜM AYRICALIKLARI VERİN

Bu durumda, YENİDEN YÜKLEME, KAPATMA, İŞLEM, DOSYA ve HİBE verilmeyecektir.
"mysql" veritabanının "kullanıcı" tablosu kontrol edilerek doğrulandı. (Bu muhtemelen tasarımdan kaynaklanmaktadır,
çünkü bu ayrıcalıklar kullanıcıyı "çok güçlü" yapabilir.)

DC Hill tarafından 16 Şubat 2002 Cumartesi, saat 22:21'de gönderildi[Sil] [Düzenle]

NOT: Bir kullanıcıya belirli bir veritabanında veya bundan daha düşük bir düzeyde ayrıcalıklar verdiyseniz, "REVOKE ALL ON *.* FROM ;" komutunu çağırın. bu düzeylerdeki ayrıcalıkları iptal ETMEZ. Yukarıdaki ifadedeki *.*, tüm (bireysel) veritabanlarındaki "tüm (bireysel) tablolar" değil, "genel" anlamına gelir. Bu bildirim YALNIZCA mysql.user tablosunda saklanan genel ayrıcalıkları iptal edecektir. Daha spesifik olanları iptal etmeniz GEREKİR. Ayrıcalık tablolarından kaldırılmalarını istiyorsanız, ayrıcalıkları verildikleri şekilde kullanın (ör. - GRANT ALL ON foo.* TO ; => REVOKE ALL ON foo.* FROM ;) Umarım bu bazı şeyleri kurtarır. biraz zaman ve hayal kırıklığı.

Cris Perdue tarafından 16 Şubat 2002 Cumartesi, saat 22:21'de gönderildi[Sil] [Düzenle]

"İşlem ayrıcalığınız varsa, görebilirsiniz
tüm konular.
Aksi halde yalnızca kendi konularınızı görebilirsiniz."

FreeBSD Forumları tarafından 16 Şubat 2002 Cumartesi, saat 22:21'de gönderildi[Sil] [Düzenle]

Pek çok şey yapmak için phpMyAdmin web tabanlı aracını kullanabilirsiniz
mySQL yönetici fonksiyonlarının. href = "http://www.freebsdforums.org"
>ÜcretsizBSD forumları

Gönderen: Pazartesi 25 Şubat 2002, @6:03[Sil] [Düzenle]

Red Hat Linux 7.1'de MySQL 3.23.36'da doğrulandı:
yazarsanız şunu unutmayın
a_c'yi kullanın;
*'a seçim hakkı verin;
herhangi birine erişim izni verilecek
alt çizginin bir olduğu "a_c" ile eşleşen veritabanı
joker karakter. (Nadiren bir sorun sanırım).
Şununla düzelt:
mysql.db'yi güncelle set db="a\_c" burada db="a_c";

jan behrens tarafından 9 Temmuz 2002 Salı, saat 01:31'de gönderildi[Sil] [Düzenle]

DAN ELIN'in x.x.41'deki yukarıda bahsedilen hatası:
Görünüşe göre x.x.51'de hala geçerli, oturum açamıyorum
ayrıcalıklar verildikten ve bir veri tabanı verildikten sonra veritabanı
yeni bir kullanıcının şifresi (evet, temizledim
ayrıcalıklar)..............yalnızca root erişimi mümkündür

Dan Egli tarafından 4 Nisan 2002 Perşembe, 20:33'te gönderildi[Sil] [Düzenle]

Grant kullanımında 3.23.41'de bir hata var gibi görünüyor.
MySQL veritabanına yalnızca root erişebilir, hatta
Grant'i herhangi bir konuda ayrıcalık vermek için kullandıktan sonra
veritabanı/tablo/sütun/vb.. her zaman elde edersiniz
izin ne olursa olsun reddedildi.

Lars Aronsson tarafından 8 Haziran 2002 Cumartesi, saat 11:16'da gönderildi["%". Bunları silmeye çalıştığımda bana sertifika veritabanı söylendi, ancak genel ayrıcalıklar yok,
Bu veritabanında GEÇİCİ TABLO ayrıcalığı CREATE
engellendi.

Global CREATE __and__ global değerini vermelisiniz
Kullanıcıya GEÇİCİ TABLOLAR OLUŞTURUN. IOW:
HİBE OLUŞTURUN, *.* ÜZERİNDE GEÇİCİ TABLOLAR OLUŞTURUN
;

Bunun güvenliği büyük ölçüde etkilediğini söylemeye gerek yok.

25 Ağustos 2002 Pazar, @9:17'de gönderildi[Sil] [Düzenle]

Geçici dosyalar harika bir fikir, ancak
Geçici Dosya oluşturma ve oluşturma hakları
kullanıcı (global haklar) dosyası hala çalışmıyor.
Bu kötü tasarlanmış gibi görünüyor.

Brad Bulger tarafından 2 Eylül 2002 Pazartesi @4:09'da gönderildi[Sil] [Düzenle]

Yalnızca HİBE SEÇENEĞİ İLE
kullanıcının ayrıcalıkları kullanıcılara devretmesine olanak tanır
zaten var. Kullanıcının otomatik olarak yaratılması
kayıtlar değil uygula - şunu söyleyen bir hata alıyorsunuz
GRANT OPTION ayrıcalığına sahip kullanıcının bunu yapması
"mysql" veritabanına erişiminiz yok. Bu
muhtemelen iyi bir şey ama belgelenmesi gerekiyor.

Michael Babcock tarafından 8 Kasım 2002 Cuma, saat 13:00'te gönderildi[Sil] [Düzenle]

SHOW MASTER STATUS, PROCESS ayrıcalıklarını gerektirir.
Bu tür diğer garip kombinasyonlar belgelenmelidir.

Dee Kintaudi tarafından 21 Kasım 2002 Perşembe, saat 12:42'de gönderildi[Sil] [Düzenle]

Tamam, MySQL ile ilgili bir sorum ve sorunum var ve
şifreler :). Seçeneklerden birkaçını kullanmaya çalıştım
ve çoğu işe yaramadı. Ancak bir
soloution işe yaradı ve iki kez test ettim ve işe yaradı
sağlamdı. Tabii ki küçük kağıt parçasını kaybettim
bunu yazdım ve bunu bulamıyorum
her yerde çözüm, sanki yokmuş gibi ya da belki ben
hayal ettim. İşime yarayan çözüm,
üzerine yazdığım küçük kağıt parçasını kaybetmeden önce
şöyle bir şey oluyor..... Takın kullanıcı kökü
Şifre "şifrem" ve ardından bir şey
"Y", "Y", "Y" ile (yaklaşık bir düzine veya 15 kez kadar)
Ancak bu çözümü hiçbir yerde bulamıyorum
birisi bana yardım edebilir mi?

Bence bunu koysalar çok güzel olur
denemek yerine belgeleri boyunca
sakla. Bunun birçok sorunu çözeceğini düşünüyorum. Sadece
şifre koy = "Y", "Y", "Y", sanki bundan utanıyorlar
ya da başka birşey.

AJIT DIXIT tarafından 25 Kasım 2002 Pazartesi @6:56'da gönderildi[Sil] [Düzenle]

Kök kullanıcıyla çoklu tablo güncellemesi üzerinde çalıştığımda
iyi çalışıyor

Root dışı kullanıcıyla çalıştığımda hata alıyorum

Sql: Stokçuları güncelleyin, alanları ayarlayın a_nm = aname
burada acd = alan

Bu bölümde ayrıcalıklarla nasıl çalışılacağını öğreneceksiniz. Bölüm 2'de tartışıldığı gibi, SQL genellikle kullanıcıların tanınmasını ve sistemlerin farklı kullanıcıları arasında ayrım yapılmasını gerektiren ortamlarda kullanılır. Genel olarak veritabanı yöneticileri kullanıcıları kendileri oluşturur ve onlara ayrıcalıklar verir. Öte yandan tabloları kendileri oluşturan kullanıcılar da bu tabloları yönetme hakkına sahiptir. Ayrıcalıklar, belirli bir kullanıcının belirli bir komutu yürütüp yürütemeyeceğini belirleyen şeydir. Çeşitli işlem türlerine karşılık gelen çeşitli ayrıcalık türleri vardır. Ayrıcalıklar iki SQL komutu kullanılarak verilir ve iptal edilir: - GRANT ve REVOKE. Bu bölüm size bu komutların nasıl kullanıldığını gösterecektir.

KULLANICILAR

SQL ortamındaki her kullanıcının özel bir kimlik adı veya numarası vardır. Terminoloji her yerde farklıdır, ancak biz (ANSI'yi takip ederek) ona veya numaraya Erişim Tanımlayıcı (ID) olarak atıfta bulunmayı seçtik. Veritabanına gönderilen bir komut belirli bir kullanıcıyla ilişkilendirilir; veya aksi takdirde özel bir Erişim Tanımlayıcısı. Bir SQL veritabanıyla ilgili olduğundan, izin kimliği kullanıcı adıdır ve SQL, geçerli komutla ilişkili Erişim Kimliğini ifade eden özel USER anahtar sözcüğünü kullanabilir. Komut, komutu veren kullanıcının Erişim Kimliğiyle ilişkili bilgilere göre yorumlanır ve buna izin verilir (veya reddedilir).

KAYIT

Çok sayıda kullanıcısı olan sistemlerde, kullanıcının bilgisayar sistemine erişebilmesi için tamamlaması gereken bir tür giriş prosedürü bulunmaktadır. Bu prosedür, geçerli kullanıcıyla hangi erişim kimliğinin ilişkilendirileceğini belirler. Tipik olarak, veritabanını kullanan her kişinin kendi erişim kimliğine sahip olması gerekir ve kayıt olduktan sonra geçerli bir kullanıcı haline gelir. Ancak çoğu zaman birçok görevi olan kullanıcılar farklı erişim kimlikleri altında kaydedilebilir veya bunun tersine, bir erişim kimliği birden fazla kullanıcı tarafından kullanılabilir. SQL açısından bakıldığında bu iki durum arasında hiçbir fark yoktur; kullanıcıya yalnızca erişim kimlikleri gibi davranır. SQL veritabanı kendi oturum açma prosedürünü kullanabilir veya aşağıdaki gibi başka bir programa izin verebilir: işletim sistemi(bilgisayarınızda çalışan ana program), kayıt dosyasını işleyin ve bu programdan erişim kimliğini alın. Öyle ya da böyle, SQL'in eylemlerinizle ilişkilendirilecek bir erişim kimliği olacak ve USER anahtar sözcüğü sizinle alakalı olacaktır.

AYRICALIK SAĞLAMAK

SQL veritabanındaki her kullanıcının bir takım ayrıcalıkları vardır. Kullanıcının yapmasına izin verilen şey budur (belki de minimum ayrıcalık olarak kabul edilebilecek bir günlük dosyasıdır). Bu ayrıcalıklar zamanla değişebilir; yenileri eklenir, eskileri kaldırılır. Bu ayrıcalıklardan bazıları ANSI SQL'de tanımlanmıştır ancak gerekli olan ek ayrıcalıklar da vardır. ANSI tarafından tanımlanan SQL ayrıcalıkları çoğu gerçek hayattaki durumda yeterli değildir. Öte yandan, ihtiyaç duyulan ayrıcalık türleri, kullandığınız sistemin türüne göre değişiklik gösterebilir; ANSI bu sistem için herhangi bir öneride bulunmaz. SQL standardının parçası olmayan ayrıcalıklar, standartla tamamen tutarlı olmayan ancak benzer bir sözdizimi kullanabilir.

STANDART AYRICALIKLAR

ANSI tarafından tanımlanan SQL ayrıcalıkları nesne ayrıcalıklarıdır. Bu, kullanıcının belirli bir komutu yalnızca veritabanındaki belirli bir nesne üzerinde yürütme ayrıcalığına sahip olduğu anlamına gelir. Açıkçası, ayrıcalıkların bu nesneler arasında ayrım yapması gerekir, ancak yalnızca bir nesnenin ayrıcalıklarına dayanan bir ayrıcalık sistemi, bu bölümün ilerleyen kısımlarında göreceğimiz gibi, SQL'in ihtiyaç duyduğu her şeyi karşılayamaz. Bir nesnenin ayrıcalıkları hem kullanıcılarla hem de tablolarla ilişkilidir. Yani ayrıcalık, belirli bir tablodaki veya temel tablo veya görünümdeki belirli bir kullanıcıya verilir. Tabloyu (her türlü) oluşturan kullanıcının bu tablonun sahibi olduğunu unutmamalısınız.

Bu, kullanıcının bu tablodaki tüm ayrıcalıklara sahip olduğu ve ayrıcalıkları bu tablodaki diğer kullanıcılara aktarabileceği anlamına gelir. Bir kullanıcıya atanabilecek ayrıcalıklar:

SELECT Bu ayrıcalığa sahip bir kullanıcı, tabloda sorgu çalıştırabilir.

INSERT Bu ayrıcalığa sahip bir kullanıcı, bir tablo üzerinde INSERT komutu verebilir.

UPDATE Bu ayrıcalığa sahip bir kullanıcı, bir tablo üzerinde UPDATE komutu yayınlayabilir. Bu ayrıcalığı belirli tablo sütunlarıyla sınırlayabilirsiniz.

DELETE Bu ayrıcalığa sahip bir kullanıcı, bir tablo üzerinde DELETE komutu verebilir.

BAŞVURULAR Bu ayrıcalığa sahip bir kullanıcı, bu tablonun bir veya daha fazla sütununu kullanan bir yabancı anahtarı üst anahtar olarak tanımlayabilir. Bu ayrıcalığı belirli sütunlarla sınırlayabilirsiniz. (Yabancı anahtar ve ana anahtarla ilgili ayrıntılar için Bölüm 19'a bakın.)

Ayrıca Bölüm 23'te anlatılacak olan tablo üzerinde indeks oluşturma hakkı veren INDEX, bir nesnenin eşanlamlısını oluşturma hakkı veren SYNONYM gibi standart olmayan nesne ayrıcalıklarıyla da karşılaşacaksınız. ve bir tabloda ALTER TABLE komutunu çalıştırma hakkını veren ALTER. SQL motoru bu ayrıcalıkları GRANT komutunu kullanarak kullanıcılara atar.

HİBE EKİBİ

Diane kullanıcısının Müşteriler tablosuna sahip olduğunu ve Adrian kullanıcısının bu tabloyu sorgulamasına izin vermek istediğini varsayalım. Diane daha sonra aşağıdaki komutu girmelidir:

Diane'e Satış Elemanlarına HİBE EKLEMESİ;

Artık Adrian Müşteriler tablosunda sorgu çalıştırabilir. Diğer ayrıcalıklar olmadan yalnızca değerleri seçebilir; ancak Müşteriler tablosundaki değerleri etkileyecek herhangi bir eylem gerçekleştiremez (Müşteriler tablosundaki değerde yapılabilecek değişiklikleri sınırlayan yabancı anahtarın ana tablosu olarak Müşteriler tablosunun kullanılması dahil).

SQL bir GRANT komutu aldığında, GRANT komutunun geçerli olup olmadığını belirlemek için komutu veren kullanıcının ayrıcalıklarını kontrol eder. Adrian bu komutu tek başına veremez. Ayrıca başka bir kullanıcıya SELECT izni veremez: tablo hala Diane'e aittir (Diane'in diğer kullanıcılara Adrian SELECT iznini nasıl verebileceğini daha sonra göstereceğiz).

Sözdizimi diğer ayrıcalıkların verilmesiyle aynıdır. Adrian Satıcılar tablosunun sahibiyse aşağıdaki cümleyi kullanarak Diane'in bu tabloya satır girmesine izin verebilir

Diane'e Satış Elemanlarına HİBE EKLEMESİ; Diane artık masaya yeni bir satıcı yerleştirme hakkına sahip.

AYRICALIK GRUPLARI, KULLANICI GRUPLARI

GRANT komutu ile bireysel bir kullanıcıya tek bir ayrıcalık vermekle kendinizi sınırlamamalısınız. Virgülle ayrılmış ayrıcalık veya kullanıcı listeleri tamamen kabul edilebilir. Stephen, Adrian için Sipariş tablosunda hem SELECT hem de INSERT sağlayabilir

Adrian'a SEÇİM VERİN, SİPARİŞLERE EKLEYİN; veya hem Adrian hem de Diane için GRANT SEÇİN, SİPARİŞLERE EKLEYİN Adrian, Diane'e;

Ayrıcalıklar ve kullanıcılar bu şekilde listelendiğinde, ayrıcalık listesinin tamamı belirtilen tüm kullanıcılara verilir. Katı ANSI yorumunda, tek bir komutla birçok tabloya aynı anda ayrıcalık veremezsiniz, ancak bazı uygulamalar, virgüllerle ayrılmış birden fazla tablo belirtmenize izin vererek bu kısıtlamayı gevşetebilir, böylece ayrıcalıklar listesinin tamamı tüm tablolara verilebilmektedir. belirtilen tablolar.

BELİRLİ SÜTUNLARDAKİ AYRICALIKLARIN SINIRLANDIRILMASI

Sütun adları gerektirmeyen UPDATE ve REGERNCES komutları dışında tüm nesne ayrıcalıkları aynı sözdizimini kullanır. UPDATE ayrıcalığı diğer ayrıcalıklar gibi verilebilir:

Diane'e Satış Elemanları Hakkında Güncel Bilgi Verme;

Bu komut Diane'in Satıcılar tablosunun herhangi bir sütunundaki veya tüm sütunlarındaki değerleri değiştirmesine olanak tanır. Ancak Adrian, Diane'in örneğin komisyonları değiştirmesini kısıtlamak istiyorsa girebilir

Diane'e Satış Elemanları HAKKINDA GÜNCELLEME (iletişim) HİBE EDİN;

Başka bir deyişle, UPDATE ayrıcalığının uygulanması gereken belirli sütunu tablo adından sonra parantez içinde belirtmesi yeterlidir. Birden çok tablo sütununun adları, virgülle ayrılarak herhangi bir sırada belirtilebilir:

Diane'e Satış Elemanları HAKKINDA GÜNCELLEME (şehir, iletişim) HİBE EDİN;

KAYNAKLAR aynı kurala uyar. REFERENCES ayrıcalığını başka bir kullanıcıya verdiğinizde, bu kullanıcı tablonuzdaki sütunlara ana anahtar olarak başvuran yabancı anahtarlar oluşturabilecektir. UPDATE gibi, REFERENCES ayrıcalığı da bu ayrıcalığın kısıtlandığı bir veya daha fazla sütunun listesi olarak belirtilebilir. Örneğin Diane, aşağıdaki komutla Stephen'a Müşteri tablosunu ana anahtar tablosu olarak kullanma hakkını verebilir:

Müşterilere Stephen'a Referanslar (cname, cnum) HİBE EDİN; Bu komut Stephen'a cnum ve cname sütunlarını tablolarındaki herhangi bir yabancı anahtarın ana anahtarı olarak kullanma hakkını verir. Stephen bunun nasıl yapılacağını kontrol edebilir. (cname, cnum) veya bizim durumumuzda (cnum, cname), yabancı bir anahtar tarafından kendi tablolarından birindeki iki sütunla eşleşen iki sütunlu bir ana anahtar olarak tanımlayabilir. Veya cinsiyete tek tek atıfta bulunmak için ayrı yabancı anahtarlar oluşturabilir ve böylece Diane'in kendisine atanmış bir ebeveyn anahtarına sahip olmasını sağlayabilir (bkz. Bölüm 19).

Yabancı anahtar sayılarında herhangi bir kısıtlama olmaksızın, bu ana anahtarlara dayalı olmalı ve farklı yabancı anahtarların ana anahtarlarının çakışmasına izin verilmelidir.

UPDATE ayrıcalığında olduğu gibi, bir sütun listesini hariç tutabilir ve böylece tüm sütunların ana anahtar olarak kullanılmasına izin verebilirsiniz. Adrian aşağıdaki komutla Diane'e bunu yapma hakkını verebilir:

Satış Elemanlarına İlişkin Referansları Diane'e Verin;

Doğal olarak ayrıcalık yalnızca ana anahtarların gerektirdiği kısıtlamalara sahip sütunlarda kullanılabilir.

TÜM VE KAMU TARTIŞMALARINI KULLANMAK

SQL, GRANT komutuna yönelik özel bir anlamı olan iki bağımsız değişkeni destekler: TÜM AYRICALIKLAR veya yalnızca TÜM ve KAMU. Bir tablodaki tüm ayrıcalıkları vermek için GRANT komutunda ayrıcalık adları yerine ALL kullanılır. Örneğin Diane, aşağıdaki komutla Stephen'a Müşteriler tablosundaki tüm ayrıcalıkları verebilir:

Satış Elemanlarına İlişkin Referansları Diane'e Verin;

(UPDATE ve REFERENCES ayrıcalıkları doğal olarak tüm sütunlar için geçerlidir.) Aynı şeyi söylemenin başka bir yolu:

Müşterilerin HEPSİNİ Stephen'a VERİN;

PUBLIC, bir kullanıcı ayrıcalığından çok, tümünü kapsayan bir argüman türüne benzer. Yayınlama ayrıcalıkları verdiğinizde, tüm kullanıcılar bu ayrıcalıkları otomatik olarak alır. Çoğu zaman bu, herhangi bir kullanıcının kullanımına sunmak istediğiniz belirli temel tablo veya görünümlerdeki SELECT ayrıcalığı için kullanılır. Herhangi bir kullanıcının Sipariş tablosunu görmesine izin vermek için örneğin aşağıdakileri girebilirsiniz:

KAMUYA SİPARİŞLERDE SEÇİM VERİN;

Elbette topluma ayrıcalıkların herhangi birini veya tamamını verebilirsiniz, ancak bu muhtemelen tavsiye edilmez. SELECT dışındaki tüm ayrıcalıklar, kullanıcının tablo içeriğini değiştirmesine (veya REFERANSLAR durumunda kısıtlama yapmasına) olanak tanır. Tablolarınızın içeriğini tüm kullanıcıların değiştirmesine izin vermek sorun yaratacaktır.

Küçük bir şirketiniz olsa ve mevcut kullanıcılarınızın tümü belirli bir tablo üzerinde değişiklik komutlarını yürütme yeteneğine sahip olsa bile, aynı ayrıcalıkları herkese vermektense her kullanıcıya ayrı ayrı ayrıcalıklar vermek daha iyi olacaktır. KAMU, yalnızca mevcut kullanıcılara aktarmakla sınırlı değildir. Herhangi Yeni kullanıcı Sisteminize eklenenler, daha önce herkese atanmış tüm ayrıcalıkları otomatik olarak alacaktır; bu nedenle, tablo erişimini şimdi veya gelecekte herkesle sınırlamak istiyorsanız, bireysel kullanıcılara SELECT dışında ayrıcalıklar vermek en iyisidir.

HİBE SEÇENEĞİ İLE KULLANILAN AYRICALIKLARIN VERİLMESİ

Bazen bir tablonun yaratıcısı, diğer kullanıcıların kendi masasında ayrıcalık kazanmasını ister. Bu genellikle bir veya daha fazla kişinin bir veritabanındaki temel tabloların birkaçını (veya tamamını) oluşturduğu ve daha sonra bunların sorumluluğunu gerçekten onlarla çalışacak kişilere devrettiği sistemlerde yapılır. SQL, With GRANT OPTION yan tümcesini kullanarak bunu yapmanıza olanak sağlar. Diane, Adrian'ın Müşteriler tablosunda SELECT ayrıcalığını diğer kullanıcılara vermesini isteseydi, ona SELECT ayrıcalığını YOUR GRANT OPTION yan tümcesini kullanarak verirdi:

HİBE SEÇENEĞİYLE Adrian'a Müşterilere HİBE SEÇİMİ; Adrian daha sonra SELECT ayrıcalığını üçüncü taraflara devretme hakkını elde etti; Diane.Müşteriler Stephen'a GRANT SELECT ON komutunu verebilir; hatta Diane'DE HİBE SEÇİMİ.Müşteriler HİBE SEÇENEĞİYLE Stephen'A; Belirli bir tablodaki belirli bir ayrıcalığa ilişkin GRANT SEÇENEĞİ olan bir kullanıcı, aynı tabloda, GRANT SEÇENEĞİ olsun ya da olmasın, bu ayrıcalığı başka herhangi bir kullanıcıya verebilir. Bu, tablonun sahipliğini değiştirmez; masa daha önce olduğu gibi yaratıcısına aittir. (Bu nedenle, verilen kullanıcılar bu tablolara başvururken sahip erişim kimliğinin önüne eklemelidir. Sonraki bölüm size bu yöntemi gösterecektir.) Belirli bir tablo için tüm ayrıcalıklarda GRANT SEÇENEĞİ'ni kullanan bir kullanıcı, o tabloda tam yetkiye sahip olacaktır.

AYRICALIKLARIN İPTALİ

ANSI'nin bir tablodan kurtulmak için DROP TABLE komutu yerine CREATE TABLE komutunu sağlaması gibi, GRANT komutu da onları geri almanın bir yolunu sunmadan kullanıcılara ayrıcalıklar vermenize olanak tanır. Ayrıcalıkların kaldırılması ihtiyacı, aslında oldukça açık bir giriş biçimine sahip standart bir araç olan REVOKE komutuna bağlıdır. REVOKE komutunun sözdizimi GRANT'a benzer ancak tam tersi bir anlama sahiptir. Sipariş tablosunda Adrian'ın INSERT ayrıcalığını kaldırmak için şunu girebilirsiniz:

Adrian'dan Gelen Siparişlerdeki Eklemeyi İptal Edin;

GRANT'ta olduğu gibi burada da ayrıcalık ve kullanıcı listelerinin kullanılmasına izin verilir, böylece aşağıdaki komutu girebilirsiniz:

Adrian, Stephen'DAN MÜŞTERİLERDE EKLEMEYİ İPTAL ET, SİL; Ancak burada bazı belirsizlikler var. Ayrıcalıkları geri alma hakkına kim sahiptir? Ayrıcalıklarını başkalarına devretme hakkına sahip bir kullanıcı bu hakkını ne zaman kaybeder? Bu ayrıcalıkları verdiği kullanıcılar da bu ayrıcalıkları kaybedecek mi? Bu standart bir özellik olmadığı için bu sorulara yetkili cevaplar yoktur ancak en yaygın yaklaşım şudur: * Ayrıcalıklar, onları veren kullanıcı tarafından iptal edilir ve iptal etme işlemi kademeli olarak gerçekleşir, yani otomatik olarak diğer kullanıcılara yayılır. ondan ayrıcalık alan tüm kullanıcılar.

AYRICALIKLARI FİLTRELEMEK İÇİN GÖRÜNÜMLERİ KULLANMA

Görünümleri kullanarak ayrıcalık eylemlerini daha kesin hale getirebilirsiniz. Bir kullanıcıya temel tabloda bir ayrıcalık verdiğinizde, bu ayrıcalık otomatik olarak tüm satırlara ve olası UPDATE ve REFERENCES istisnaları kullanıldığında tablonun tüm sütunlarına yayılır. Temel tabloya referans veren ve ardından ayrıcalığı tablo yerine görünüme aktaran bir görünüm oluşturarak, bu ayrıcalıkları görünümde yer alan sorgudaki herhangi bir ifadeyle sınırlayabilirsiniz. Bu, GRANT komutunun temel yeteneklerini büyük ölçüde geliştirir.

BAŞVURULARI KİMLER YAPABİLİR?

Görünüm oluşturmak için görünümde referans verdiğiniz tüm tablolarda SELECT ayrıcalığına sahip olmanız gerekir. Görünüm değiştirilebilirse, temel tabloda sahip olduğunuz tüm INSERT, UPDATE ve DELETE ayrıcalıkları otomatik olarak görünüme aktarılacaktır. Temel tablolarda değişiklik ayrıcalıklarınız yoksa, oluşturduğunuz görünümlerde, bu görünümler değiştirilebilir olsa bile, bu ayrıcalıklara sahip olamazsınız. Görünümlerde yabancı anahtarlar kullanılmadığından, görünümler oluşturulurken REFERENCES ayrıcalığı hiçbir zaman kullanılmaz. Tüm bu kısıtlamalar ANSI tarafından tanımlanır. Standart olmayan sistem ayrıcalıkları da (bu bölümün ilerleyen kısımlarında ele alınacaktır) etkinleştirilebilir. Aşağıdaki bölümlerde tartıştığımız görünümlerin yaratıcılarının tüm temel tablolarda özel veya uygun ayrıcalıklara sahip olduğunu varsayacağız.

BELİRLİ SÜTUNLARDA SEÇİM AYRICALIĞININ SINIRLANDIRILMASI

Diyelim ki Claire kullanıcısına Sales tablosunun yalnızca snum ve sname sütunlarını görme yeteneği vermek istiyorsunuz. Bunu, bu sütunların adlarını görünüme koyarak yapabilirsiniz.

GÖRÜNÜMÜ OLUŞTUR Clairesview AS SELECT snum, sname Satış Görevlilerinden; ve Claire'e Satıcılar tablosu yerine görünümde SELECT ayrıcalığını verin: Clairesview'da Claire'e GRANT SELECT; Diğer ayrıcalıkları kullanmak gibi, özellikle sütunlar için ayrıcalıklar oluşturabilirsiniz, ancak INSERT komutu için bu, varsayılan değerleri ekleyecektir ve DELETE komutu için sütun kısıtlamasının hiçbir etkisi olmayacaktır. REFERENCES ve UPDATE ayrıcalıkları elbette bir görünüme başvurmadan sütunları spesifik hale getirebilir.

BELİRLİ DİZİLER İÇİN AYRICALIKLARIN SINIRLANDIRILMASI Genellikle görünümlerle ayrıcalıkları filtrelemenin daha kullanışlı bir yolu, ayrıcalığın yalnızca belirli satırlara uygulanmasını sağlamak için görünümü kullanmaktır. Bunu, görünümde hangi satırların dahil edileceğini belirleyecek bir yüklem kullanarak doğal olarak yaparsınız. Adrian kullanıcısına, Londra'da bulunan tüm müşteriler için Müşteriler tablosunda GÜNCELLEME ayrıcalığını vermek için şunun gibi bir görünüm oluşturabilirsiniz:

Londoncust GÖRÜNÜMÜNÜ MÜŞTERİLERDEN SEÇİNİZ * NEREDE şehir = "Londra" KONTROL SEÇENEĞİ İLE OLUŞTURUN; Daha sonra bu tablodaki GÜNCELLEME ayrıcalığını Adrian'a vermelisiniz: Londoncust'TA Adrian'A GÜNCELLEME VERİN; Bu, belirli satırlara yönelik ayrıcalık ile belirli sütunlara yönelik GÜNCELLEME ayrıcalığı arasındaki farktır; Müşteriler tablosunun tüm sütunları için geçerlidir ancak satırlar için geçerli değildir; Londra dışında şehir cinsiyeti değerine sahip satırlar dikkate alınmayacaktır. . İLE KONTROL SEÇENEĞİ maddesi, Adrian'ın şehrin cinsiyet değerini Londra dışında bir değerle değiştirmesini engelliyor. SADECE ÇIKARILAN VERİLERE ERİŞİM SAĞLANMASI Diğer bir olasılık ise kullanıcılara tablodaki gerçek değerler yerine daha önce alınmış olan verilere erişim olanağı sunmaktır. Toplama fonksiyonları bu yöntemin kullanılmasında çok kullanışlı olabilir. Siparişin her günü için siparişlerin sayısını, ortalamasını ve toplamını veren bir görünüm oluşturabilirsiniz: ODA SEÇİMİ, COUNT (*), SUM (amt), AVG (amt) FROM Siparişler GRUBU ODAYA ​​GÖRE OLARAK GÖRÜNÜM Tarihtoplamları OLUŞTURUN; Artık Diane kullanıcısına Datetotals görünümünde SEÇİM ayrıcalığını veriyorsunuz: Datetotals'DA Diane'E SEÇİM VERİN; GÖSTERİMLERİN KISITLAMALARA ALTERNATİF OLARAK KULLANILMASI Bölüm 18'de açıklanan serideki en son uygulamalardan biri, kısıtlamalara alternatif olarak CHECK OPTION ile görünümlerin kullanılmasıdır. Diyelim ki Satıcılar tablosundaki tüm şehir cinsiyeti değerlerinin şirketinizin şu anda ofisinin bulunduğu şehirlerden birinde olduğundan emin olmak istediniz. Doğrudan şehir sütununda bir CHECK kısıtlaması belirleyebilirsiniz, ancak örneğin şirketinizin orada başka departmanlar açması durumunda bunu daha sonra değiştirmek zorlaşabilir. Alternatif olarak, geçersiz şehir değerlerini hariç tutan bir görünüm oluşturabilirsiniz: KONTROL SEÇENEĞİYLE CREATE VIEW Curcities AS SELECT * FROM Salesperson WHERE city IN ("Londra", "Roma", "San Jose", "Berlin"); Artık kullanıcılara Satıcılar tablosunda değişiklik ayrıcalıkları vermek yerine, bunları Curcities görünümünde verebilirsiniz. Bu yaklaşımın avantajı, bir değişiklik yapmanız gerekiyorsa, o görünümü silebilir, yeni bir görünüm oluşturabilir ve kullanıcılara bu yeni görünümde ayrıcalıklar verebilirsiniz; bu, kısıtlamaları değiştirmekten daha kolaydır. Dezavantajı ise Satış tablosunun sahibinin kendi komutlarının reddedilmesini istemiyorsa bu görünümü de kullanmak zorunda olmasıdır. Öte yandan, bu yaklaşım, tablo sahibinin ve diğer herkesin, kısıtlamalara istisnalar yapmak için görünüm yerine tablonun kendisinde değişiklik ayrıcalıkları kazanmasına olanak tanır.

Bu genellikle arzu edilen bir durumdur ancak temel tabloda kısıtlamalar kullanıyorsanız mümkün değildir. Ne yazık ki bu istisnalar görünümde görünmeyecektir. Bu yaklaşımı seçerseniz, yalnızca istisnaları içeren ikinci bir görünüm oluşturmak isteyeceksiniz: CREATE VIEW Othercities AS SELECT * FROM Satış Görevlileri WHERE city NOT IN ("Londra", "Roma", "San Jose", "Berlin") İLE SEÇENEĞİ KONTROL EDİN; Bu görünümde kullanıcılara yalnızca SELECT ayrıcalığı vermeyi seçmelisiniz, böylece hariç tutulan satırları görebilirler ancak temel tabloya geçersiz şehir değerleri koyamazlar. Aslında kullanıcılar bir birleşimdeki her iki görünümü de sorgulayabilir ve tüm satırları aynı anda görebilir.

DİĞER AYRICALIK TÜRLERİ

Elbette ilk önce tabloyu oluşturma hakkına kimin sahip olduğunu bilmek istersiniz. Bu ayrıcalık alanı ANSI değildir ancak göz ardı edilemez. Tüm standart ANSI ayrıcalıkları bu ayrıcalıktan türetilir; Nesne ayrıcalıklarını aktarabilen tablo oluşturucuların ayrıcalıkları. Tüm kullanıcılarınız sistemde temel tablolar oluşturuyorsa farklı boyutlar bu onların fazlalığına ve sistemin verimsizliğine yol açacaktır. Başka sorular da dikkat çekiyor:

Tabloları değiştirme, silme veya sınırlama hakkı kimdedir?

Temel tablo oluşturma hakları, görünüm oluşturma haklarından farklı mı olmalı?

Veritabanının bakımından sorumlu olan ve dolayısıyla bireysel olarak verilmeyen ayrıcalıkların çoğuna veya tümüne sahip olan bir süper kullanıcı mı olmalı?

ANSI işin içine girip SQL çeşitli ortamlarda kullanılıncaya kadar bu sorulara kesin bir cevap veremeyiz. Burada en genel sonuçların bir kısmını dikkate almayı öneriyoruz.

Özel veri nesneleri açısından tanımlanmayan ayrıcalıklara sistem ayrıcalıkları veya veritabanı hakları denir. Temel düzeyde, bunlar muhtemelen temel tablolar (genellikle birkaç kullanıcı tarafından oluşturulur) ve görünümler (genellikle kullanıcıların çoğunluğu tarafından oluşturulur) dışında veri nesneleri oluşturma hakkını içerecektir. Görünüm oluşturmaya yönelik sistem ayrıcalıkları, ANSI'nin görünüm oluşturuculardan talep ettiği nesne ayrıcalıklarına ek olmalı ve bunların yerine geçmemelidir (bu bölümün başlarında açıklanmıştır). Ek olarak, her boyuttaki bir sistemde her zaman bazı süper kullanıcı türleri (ayrıcalıkların çoğuna veya tamamına otomatik olarak sahip olan kullanıcılar) bulunur ve bunlar, bir ayrıcalık veya ayrıcalık grubu aracılığıyla süper kullanıcı statülerini başka birine aktarabilir. Veritabanı Yöneticisi veya DBA, böyle bir süper kullanıcı ve sahip olduğu ayrıcalıklar için en yaygın kullanılan terimdir.

TİPİK SİSTEM AYRICALIKLARI

Genel bir yaklaşımla üç temel sistem ayrıcalığı vardır: - CONNECT, - RESOURCE ve - DBA (Veritabanı Yöneticisi). Daha basit bir ifadeyle, CONNECT'in, eğer nesnenin ayrıcalıkları aktarılırsa, kaydolma hakkından ve görünümler ve eşanlamlılar oluşturma hakkından (bkz. Bölüm 23) oluştuğu söylenebilir. RESOURCE, temel tablolar oluşturma hakkından oluşur. DBA, kullanıcıya veritabanında yüksek yetki veren bir süper kullanıcı ayrıcalığıdır. Veritabanı yöneticisi işlevine sahip bir veya daha fazla kullanıcı bu ayrıcalığa sahip olabilir. Bazı sistemlerde, bazen SYSADM veya SYS (Sistem Veritabanı Yöneticisi) adı verilen ve en yüksek yetkiye sahip olan özel bir kullanıcı da bulunur; sadece özel DBA ayrıcalığına sahip bir kullanıcı değil, onlara özeldir. Aslında yalnızca bir kişinin erişim kimliği olan SYSADM adıyla kayıt olmasına izin verilir. Bu ayrım oldukça incedir ve farklı sistemlerde farklı şekilde çalışır. Amacımız açısından, DBA ayrıcalıklarına sahip bir veritabanı geliştiren ve yöneten, bu ayrıcalıkların aslında aynı ayrıcalık olduğunu anlayan yüksek ayrıcalıklı bir kullanıcıyı kastedeceğiz. GRANT komutu, değiştirilmiş haliyle, sistem ayrıcalıklarının yanı sıra nesne ayrıcalıklarıyla da kullanılabilir. Başlangıç ​​olarak, hakların devri bir DBA kullanılarak yapılabilir. Örneğin, bir DBA, Rodriguez'e tablo oluşturma ayrıcalığını şu şekilde verebilir: Rodriguez'e KAYNAK VERİN;

KULLANICI OLUŞTURUN VE SİLİN

Doğal olarak şu soru ortaya çıkıyor: Rodriguez adlı kullanıcı nereden geliyor? Gümrükleme kimliği nasıl belirlenir? Çoğu uygulamada DBA, kullanıcıya CONNECT ayrıcalığını otomatik olarak vererek kullanıcıyı oluşturur. Bu durumda genellikle parolayı belirtmek için IDENTIFIED BY cümleciği eklenir. (Değilse, işletim sisteminin, verilen erişim kimliğiyle veritabanında oturum açıp açamayacağınızı belirlemesi gerekir.) DBA, örneğin Redwagon TARAFINDAN TANIMLANAN Thelonius'A GRANT CONNECT verebilir; Thelonius adında bir kullanıcı yaratacak, ona kayıt olma hakkını verecek ve ona Redwagon şifresini atayacak, hepsi tek bir cümleyle. Thelonious zaten kimliği doğrulanmış bir kullanıcı olduğundan, kendisi veya DBA, Redwagon'un şifresini değiştirmek için aynı komutu kullanabilir. Bu uygun olmasına rağmen, bu yaklaşımda hala sınırlamalar vardır. Bu, en azından geçici olarak kayıt olamayan bir kullanıcının bulunmasının imkansızlığıdır. Bir kullanıcının oturum açmasını engellemek istiyorsanız, o kullanıcıyı "kaldıran" REVOKE üzerindeki CONNECT ayrıcalığını kullanmalısınız. Bazı uygulamalar, oturum açma ayrıcalıklarına bakılmaksızın kullanıcı oluşturmanıza ve silmenize olanak tanır. Bir kullanıcıya CONNECT ayrıcalığını verdiğinizde, o kullanıcıyı yaratırsınız. Üstelik bunu kendiniz yapabilmeniz için DBA ayrıcalığına sahip olmanız gerekmektedir. Bu kullanıcı temel tablolar (yalnızca görünümler değil) oluşturacaksa, kendisine RESOURCE ayrıcalığının da verilmesi gerekir. Ancak bu hemen başka bir soruna yol açıyor. Kendisi tarafından oluşturulmuş tablolara sahip bir kullanıcının CONNECT ayrıcalığını kaldırmaya çalışırsanız, tabloyu sahipsiz bırakacağı için komut reddedilecektir, buna izin verilmez. CONNECT ayrıcalığını kaldırmadan önce bu kullanıcı tarafından oluşturulan tüm tabloları bırakmalısınız. Bu tablolar boş değilse, muhtemelen sorgu kullanan INSERT komutunu kullanarak verilerini diğer tablolara aktarmak isteyeceksiniz. RESOURSE ayrıcalığını ayrıca kaldırmanıza gerek yoktur; Kullanıcıyı silmek için CONNECT'i silmeniz yeterlidir. Yukarıdakiler sistem ayrıcalıklarına yönelik oldukça standart bir yaklaşım olsa da önemli sınırlamaları da vardır. Daha spesifik olarak tanımlanmış ve sistem ayrıcalıklarını daha doğru bir şekilde kontrol eden alternatif yaklaşımlar ortaya çıkmıştır.

Bu sonuçlar bizi şu anda tanımlandığı şekliyle SQL standardının biraz ötesine taşıyor ve bazı uygulamalarda SQL standardının tamamen ötesine geçebiliyor. Bir DBA veya kullanıcı olmadığınız sürece bunlar muhtemelen sizi çok fazla ilgilendirmeyecektir. yüksek seviye. Düzenli kullanıcıların prensipte sistemin ayrıcalıklarına aşina olması ve yalnızca özel mesajlar durumunda belgelerine başvurması yeterlidir.

ÖZET

Ayrıcalıklar, SQL'in özel bir veritabanı sistemi üzerinde özel kullanıcılar aracılığıyla eylemler gerçekleştirmesi durumunda SQL'i yeni bir perspektiften görme yeteneği sağlar. GRANT komutunun kendisi oldukça basittir: onun yardımıyla bir veya daha fazla kullanıcıya bir nesnenin belirli ayrıcalıklarını verirsiniz. Bir kullanıcıya With GRANT OPTION ayrıcalığını verirseniz, o kullanıcı da bu ayrıcalığı başkalarına da verebilir. Artık görünümlerde ayrıcalıkların kullanılmasıyla ilgili ipuçlarını (temel tablolardaki ayrıcalıkları geliştirmek için veya kısıtlamalara alternatif olarak) ve bu yaklaşımın bazı avantajlarını ve dezavantajlarını anlıyorsunuz. Gerekli olan ancak SQL standardının kapsamına girmeyen sistem ayrıcalıkları en genel haliyle tartışılmıştır ve bunları pratik yaparak öğreneceksiniz. Bölüm 23'te, değişiklikleri kaydetme veya geri yükleme, diğer kişilerin sahip olduğu tablolar için kendi adlarınızı oluşturma ve farklı kullanıcılar aynı nesneye aynı anda erişmeye çalıştığında ne olacağını anlama gibi SQL'deki çıkarımlarla ilgili tartışmaya devam edilecektir.

SQL'LE ÇALIŞMAK

1. Janet'a müşterinin puanını değiştirme hakkını verin.

2. Stephan'a diğer kullanıcılara Siparişler tablosunda sorgu yapma hakkı verme hakkını verin.

3. Satıcılar tablosundaki INSERT ayrıcalığını Claire'den ve bu yetkinin verildiği tüm kullanıcılardan kaldırın.

4. Jerry'ye, 100 ila 500 aralığındaki değerleri değerlendirme yeteneğini korurken Müşteriler tablosunu ekleme veya değiştirme hakkı verin.

5. Janet'in Müşteri tablosunu sorgulamasına izin verin ancak aynı Müşteri tablosundaki derecelendirmeleri azaltmasını önleyin.

SQL Server platformu, belirli bir kullanıcıya atanan izin ayarlarını iptal etmenin bir yolu olarak REVOKE ifadesini kullanır. Bu nokta önemlidir çünkü SQL Server, kullanıcının belirli bir kaynağa erişimini açıkça reddeden ek bir DENY deyimini destekler. SQL Server'da REVOKE ifadesi, GRANT ifadesi kullanılarak bir kullanıcıya atanan ayrıcalıkları iptal etmek için kullanılabilir. Bir kullanıcıya belirli bir ayrıcalığı açıkça reddetmek istiyorsanız DENY ifadesini kullanmalısınız.

SQL Server platformu ANSI HİYERARŞİ SEÇENEĞİ ve ADMIN OPTION yan tümcelerini desteklemez. ADMIN OPTION yan tümcesi desteklenmese de, REVOKE komutunun SQL Server sürümünün iki yönetim ayrıcalığı vardır (CREATE ve BACKUP). Talimat sözdizimi aşağıdaki gibidir.

REVOKE ([object_privilege] [, ...] | [system_privilege]) [(sütun [, ...])]]| (TO | FROM) (alıcı_adı [, …] | rolü [, …] | KAMU | MİSAFİR) ]

HİBE SEÇENEĞİ

Kullanıcı, diğer kullanıcılara belirli ayrıcalıklar atama hakkından mahrum bırakılır.

nesne ayrıcalığı

Herhangi bir sırayla birleştirilebilen çeşitli talimatlara erişim hakları iptal edilir.

TÜM

Tüm ayrıcalıklar atandı şu anda belirtilen kullanıcılar ve/veya belirtilen veritabanı nesneleri için. Bu öneri, programlama belirsizliğini arttırdığı için önerilmez.

(SEÇ | GÜNCELLEMEYİ EKLE SİL)

Belirtilen kullanıcının, belirtilen nesnede (örneğin bir tablo veya görünüm) belirtilen erişim ayrıcalığı reddedildi. Sütun düzeyindeki ayrıcalıkları iptal etmek için parantez içine alınmış sütunların listesini kullanın.

REFERANSLAR

Bir veritabanı nesnesine ana nesne olarak başvuran yabancı anahtar kısıtlamalarını oluşturma ve silme hakkı iptal edilir.

Kullanıcının bir tablo veya görünümde kural oluşturma veya silme hakkı iptal edilir.

Saklı yordamı, kullanıcı tanımlı işlevi veya genişletilmiş saklı yordamı yürütme hakkı iptal edilir.

sistem ayrıcalığı

Aşağıdaki ifadeleri yürütme hakkı iptal edilir: CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW, CREATE DATABASE ve YEDEKLEME GÜNLÜĞÜ.

ON [nesne] [(sütun [, ...])]

Kullanıcının belirtilen nesneye erişim hakkı iptal edilir. Nesne bir tablo veya görünümse, tek tek sütunlardaki erişim ayrıcalıklarını iptal edebilirsiniz. Bir tablo veya görünümdeki SELECT, INSERT, UPDATE, DELETE ve REFERENCES ayrıcalıklarını iptal edebilirsiniz. Tablo veya görünüm sütunlarında yalnızca SELECT ve UPDATE ayrıcalıklarını iptal edebilirsiniz. Bir saklı yordamda, kullanıcı tanımlı işlevde veya genişletilmiş saklı yordamda EXECUTE ayrıcalıklarını iptal edebilirsiniz.

[KİME | FROM] alıcı adı | rolü | KAMU | MİSAFİR

Belirtilen ayrıcalığı kaybeden kullanıcıları veya rolleri belirtir. PUBLIC rolüne (tüm kullanıcıları içerir) atanan ayrıcalıkları iptal etmek için PUBLIC anahtar sözcüğünü kullanabilirsiniz. Adlarını virgülle ayırarak birden fazla alıcıyı listeleyebilirsiniz. Ayrıca SQL Server'da da desteklenir Hesap GUEST, veritabanında kendi girişi olmayan tüm kullanıcılar tarafından kullanılır.

İLE GRANT SEÇENEĞİ maddesi ile haklarını alan kullanıcıların ayrıcalıkları kaldırılmaktadır. GRANT OPTION FOR yan tümcesi kullanılırken bu yan tümce gereklidir.

AS (grup_adı rol_adı)

Ayrıcalığın iptal edildiği haklar belirtilir. Bazı durumlarda, bir kullanıcının belirtilen ayrıcalıkları geçersiz kılmak için geçici olarak belirli bir grubun haklarına ihtiyacı olabilir. Bu durumda bu hakları elde etmek için AS maddesini kullanabilirsiniz.

REVOKE ifadesinin iki biçimi olan REVOKE nesne ayrıcalığı ve REVOKE system_privilege birbirini dışlar. Her iki işlemi de tek bir ifadede yapmaya çalışmayın. İkisi arasındaki temel sözdizimsel fark, sistem ayrıcalıklarını kaldırırken ON yan tümcesini kullanmamanız gerektiğidir. Örneğin bir sistem ayrıcalığını kaldırmak için aşağıdaki komutu kullanabilirsiniz.

Dylan, Katie'DEN VERİTABANINI OLUŞTURUN, VERİTABANINI YEDEKLEYİN

Bir kullanıcıya, YOUR GRANT OPTION yan tümcesi kullanılarak ayrıcalıklar atanmışsa, bu ayrıcalıklar, iki yan tümcenin (With GRANT OPTION ve CASCADE) eşzamanlı kullanımı kullanılarak iptal edilmelidir. Örneğin:

Editörlere başlıklarda SEÇ, EKLE, GÜNCELLEME, SİLME İÇİN HİBE SEÇENEKLERİNİ İPTAL EDİN CASCADE GO

REVOKE komutu yalnızca geçerli veritabanında kullanılabilir. Buna göre ANSI standart seçenekleri CURRENTJJSER ve CURRENTROLE her zaman örtülü olarak varsayılır. REVOKE ifadesi aynı zamanda tüm DENY seçeneklerini iptal etmek için de kullanılır.

SQL Server platformu ayrıca ek bir DENY ifadesini de destekler. DENY ifadesinin sözdizimi REVOKE ifadesinin sözdizimi ile aynıdır. Ancak özünde, REVOKE'un kullanıcının ayrıcalıklarını etkisiz hale getirmesi, DENY'nin ise bunları açıkça yasaklaması bakımından farklılık gösterirler. Ayrıcalık açıkça veya rol atama yoluyla verilmiş olsa bile, bir kullanıcının veya rolün bir ayrıcalığa erişimini reddetmek için DENY ifadesini kullanın.

REVOKE deyimi daha önce verilen veya DENY ayrıcalıklarını kaldırmak için kullanılmalıdır. Örneğin, Kelly kullanıcısı uzatılmış doğum iznine çıktı. Bu süre zarfında çalışan masasına erişimi reddedildi. Geri döndü ve biz de ayrıcalıklara yeniden izin verdik.

Kelly GO'YA ÇALIŞANIN HER ŞEYİNİ REDDETTİ

Kelly GO'YA ÇALIŞANLARIN HEPSİNİ İPTAL EDİN

Bu örnekte, REVOKE komutu onun ayrıcalıklarını kaldırmaz; DENY komutunu geçersiz kılar.

Bir kullanıcı oluşturmak, kullanıcıya veritabanı nesnelerine erişim konusunda herhangi bir hak vermez.

İzinler GRANT komutu ile verilmektedir. GRANT komutunu veren kullanıcının, yalnızca kendisinin sahip olduğu hakları diğer kullanıcılara devredebileceği veya dilerseniz devredebileceği unutulmamalıdır.

GRANT, veritabanı nesneleri üzerindeki hakları kullanıcılara, rollere veya diğer veritabanı nesnelerine ayarlar. Bir nesne oluşturulduğunda, yalnızca onu oluşturan kişi onun üzerinde haklara sahiptir ve yalnızca o, diğer kullanıcılara veya nesnelere haklar verebilir.

Bir tabloya veya görünüme erişmek için kullanıcının veya nesnenin SELECT, INSERT, UPDATE, DELETE veya REFERENCES haklarına ihtiyacı vardır. ALL seçeneği ile tüm haklar verilebilmektedir.

Bir uygulamada bir prosedürü çağırmak için kullanıcının EXECUTE haklarına sahip olması gerekir.

Kullanıcılar listeye göre hakları devrederek diğer kullanıcılara hak verme izni alabilirler. , İLE GRANT SEÇENEĞİ seçeneğiyle belirtilir. Kullanıcı, yalnızca kendisinin sahip olduğu hakları başkalarına verebilir.

Kullanıcı adı listesi yerine PUBLIC seçeneği kullanılarak tüm kullanıcılara izinler verilebilir. PUBLIC seçeneğinin belirtilmesi veritabanı nesnelerini değil yalnızca kullanıcıları etkiler.

Hakların listesi tabloda verilmiştir. 8.5.

Tablo 8.5. Hakların listesi

Hakları, REVOKE komutunu kullanarak veren kullanıcı tarafından iptal edilebilir. Haklar ALL kullanılarak verildiyse, yalnızca ALL modunda tasfiye edilebilir; haklar KAMU kullanılarak verildiyse, yalnızca KAMU modunda tasfiye edilebilir.

Sözdizimi:

GRANT (tümü /AYRICALIKLAR) / LJST_ ) MASADA ]

(tablo adı/görünüm adı)

İLE( /LİSTE_ /GROUP UNIX_group^

/PROSEDÜR PROCEDURE ÜZERİNDE ÇALIŞTIRIN

(LİSTE_ LİSTE_ (HİBE SEÇENEĞİ İLE./)

ILJST_rol adı TO (KAMU)

/LİSTE_ (ADKIN SEÇENEĞİYLE] ) ;

;;= SEÇ / SİL / EKLE / GÜNCELLE [ (LIST_col) ] j REFERANSLAR PT5T_co1) ]

; . = PROSEDÜR işlem adı j TRIGGER trig adı j GÖRÜNÜM görünüm adı / PUBLIC

;:= kullanıcı adı I rol adı

:;= kullanıcı adı

Tablo 8.6. GRANT komutunun sözdizimi öğelerinin açıklaması

Argüman Tanım
ayrıcalık Verilen hakkın adı. Geçerli değerler: SEÇ, SİL, INSERT, GÜNCELLE, REFERANSLAR
Col Hakların verildiği sütunun adı.
Tablo ismi Hakların geçerli olduğu mevcut tablonun adı
Görünüm adı Haklara tabi olan mevcut incelemenin adı
Hakların geçerli olduğu mevcut bir veritabanı nesnesinin adı (prosedür, inceleme, tetikleyici)
Kullanıcı adı Hakların devredildiği kullanıcının adı
HİBE SEÇENEĞİ İLE LIST_ listesinde listelenen kullanıcılara aktarım izinleri verir
rol ismi CREATE ROLE komutu tarafından oluşturulan mevcut bir rolün adı
Rol haklarının atandığı kullanıcı. Kullanıcı listesi isc4.gdb'de belirtilmelidir (örneğin, IBConsole yardımcı programı tarafından oluşturulmuştur)
GRUP unix_group /etc/group'ta tanımlanan UNIX grup adı

Aşağıdaki komut kullanıcıya SELECT ve DELETE haklarını verir. HİBE SEÇENEĞİ İLE seçeneği, daha sonraki aktarım haklarını verir.

Örnek 8.5

Bu komut da başka bir prosedüre ve kullanıcıya bir prosedürü yürütme hakkı verir.

Örnek 8.6

PROSEDÜR PAUTHOR'UNU PROSEDÜR YÜRÜTME PBOOKAUTHOR, MISHA'YA HİBE EDİN;

Bu durumda, veritabanımızdaki PBOOKAUTHOR prosedürüne hakların aktarılması anlamsızdır, çünkü sadece PAUTHOR prosedürünü kullanmaz, ancak sözdizimsel olarak oldukça doğrudur.

Aşağıdaki komut içerik olarak Örnek 8.5'e tamamen benzer, ancak gömülü SQL kullanımına odaklanmıştır.

Örnek 8.7 EXEC SQL

HİBE SEÇİN, HİBE SEÇENEĞİYLE MISHA'YA TBOOK'TAN SİLİN;

Hakların tasfiyesi. REVOKE komutu

REVOKE, veritabanı nesnelerine erişim haklarını kaldırır. Haklar, kullanıcıya izin verilen bir nesneyle yapılan eylemlerdir. SQL hakları tabloda açıklanmıştır. 8.7.

REVOKE komutunu kullanırken dikkat edilmesi gereken bazı sınırlamalar vardır. Yalnızca bunları düzenleyen kullanıcı hakları tasfiye edebilir. Bir kullanıcıya herhangi bir sayıda farklı kullanıcıdan bir veritabanı nesnesine aynı haklar atanabilir. REVOKE komutu, bu belirli kullanıcı tarafından daha önce verilen hakların yoksun bırakılmasını gerektirir. PUBLIC seçeneği ile tüm kullanıcılara verilen haklar ancak PUBLIC seçeneği ile REVOKE komutu ile iptal edilebilir. Sözdizimi:

Kullanıcı adını İPTAL ET / KAMU :;= /"USER7 kullanıcı adı

Aşağıdaki komut kullanıcının tablodan silme hakkını ortadan kaldırır (bkz. örnek 8.5, bu durumda hala okuma haklarına sahiptir).

Örnek 8.8

MISHA'DAN ALINAN SİLMEYİ İPTAL ET;

Ve bu komut, başka bir prosedürden ve kullanıcıdan bir prosedürü yürütme hakkını iptal eder (örnek 8.6'da ilgili hakların vurgulanmasına bakın)

PROSEDÜR PBOOKAUTHOR, MISHA'DAN PROSEDÜR PAUTHOR'UNU İPTAL EDİN.

 Tepe