Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zablokowanie dodawania nowych wierszy do bazy danych
Forum PHP.pl > Forum > Bazy danych > MySQL
axkrauze
Witam,

Na wstępie zaznaczam, że mam bardzo małe pojęcie o bazach danych, więc przepraszam jeśli umieściłem coś nie w tym miejscu.

Mam następujący problem. Chciałbym zablokować możliwość dodawania nowych wierszy do bazy danych. Sytuacja wygląda następująco - mam stronę, na której można dodawać komentarze, a skrypt komentarzy jest autorskim skryptem opartym o bazę danych. Ostatnio strona non stop jest spamowana przez te komentarze i chciałbym zablokować możliwość ich dodawania. W samym skrypcie kompletnie się nie orientuję i stąd moje pytanie - czy da się to zrobić z poziomu samej bazy danych poprzez zablokowanie możliwość dodawania nowych wierszy (lub np. wprowadzenie automatycznego usuwania wierszy o jakimś ID)?

Z góry dziękuję za wszelkie porady, pozdrawiam.
b4rt3kk
Jeśli idzie o bazę danych to najszybszym rozwiązaniem na pewno będzie:

  1. REVOKE INSERT ON tabela FROM user@host


Jednak spowoduje to, że skrypt prawdopodobnie będzie sypał błędem przy wykonaniu inserta (choć niekoniecznie, być może autor obsłużył wyjątek).

A jeśli idzie o skrypt to zalecałbym wprowadzenie captchy.
axkrauze
Coś mi chyba nie działa, bo MySQL zwraca błąd.

Nie wiem czy dobrze rozumiem, ale wpisuję coś takiego:

  1. REVOKE INSERT ON `nazwa tabeli z komentarzami` FROM `nazwa_superużytkownika@adres_serwera`
Pyton_000
FROM localhost
axkrauze
Niestety nadal mi coś nie działa, MySQL zwraca komunikat #1142 - GRANT command denied to user 'tu_nazwa_superużytkownika'@'tu_ip' for table 'koment'

Raczej popełniam jakiś beznadziejnie podstawowy błąd, tylko nie wiem jaki...
b4rt3kk
Cytat(axkrauze @ 5.02.2015, 10:43:18 ) *
Niestety nadal mi coś nie działa, MySQL zwraca komunikat #1142 - GRANT command denied to user 'tu_nazwa_superużytkownika'@'tu_ip' for table 'koment'

Raczej popełniam jakiś beznadziejnie podstawowy błąd, tylko nie wiem jaki...


Nie popełniasz błędu, Twój su nie ma odpowiednich uprawnień do wykonania tej komendy.

Więc na bazie tego nie zrobisz, kombinuj ze skryptem.
mmmmmmm
Dodaj jakąś kolumnę NOT NUL z DEFAULTEM. Zapisz, a potem tego DEFAULTA wywal
axkrauze
Cytat(mmmmmmm @ 5.02.2015, 12:14:35 ) *
Dodaj jakąś kolumnę NOT NUL z DEFAULTEM. Zapisz, a potem tego DEFAULTA wywal



Mógłbyś podać dokładnie jaką, bo jak pisałem z SQL nie miałem nigdy do czynienia i nie wiem jak wykorzystać taki sposób...
mmmmmmm
Dodanie nowej kolumny (pole_xx) z defaultem:
  1. ALTER TABLE `tabela` ADD `pole_xx` INT NOT NULL DEFAULT '0'

Wszystkie istniejace rekordy beda miay zapisane tam 0.
Zmiana kolumny na NOT NULL bez DEFAUTA:
  1. ALTER TABLE `tabela` CHANGE `pole_xx` `pole_xx` INT( 11 ) NOT NULL

I już nic nie dodasz istniejącym kodem, bo się wywali, że pole nie może być NULL smile.gif
phpion
@mmmmmmm:
Na pewno? MySQL przypadkiem nie przepuszcza takich wartości wstawiając (dla liczb) 0? Jedyne co to wyświetla ostrzeżenie typu:
Cytat
1 row(s) affected, 1 warning(s): 1364 Field 'test' doesn't have a default value

ale rekord zapisuje się do bazy, a w kolumnie test jest wstawiane 0.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.