Visualizzazione risultati 1 fino 5 di 5

Discussione: Accesso Commenti Database information_schema

  1. #1
    rigidbodyinteractive non è connesso Utente AlterBlog
    Data registrazione
    18-02-2019
    Messaggi
    26

    Predefinito Accesso Commenti Database information_schema

    Ciao, sto scrivendo un codice Php per operazioni CRUD sulle tabelle del db. ho creato tabelle di diversi tipi "sys, user, owner ecc" per poter settare diversi tipi di permissions a diversi tipi di utenti in un sistema RBAC che sia dinamico e flessibile. originariamente avevo aggiunto una colonna table_type in ogni tabella e dalla tabella permissions ho associato tutti i tipi di utenti con i tipi di tabella e applicato un filtro da php e sql per vedere solo quelle consentite per tipo di utente. funziona bene ma hoscoperto che cosi facendo un utente non admin non puo' veder le cartelle sys ma puo' modificare una tabella normale e trasformarla in una di sistema, perdendo le capacita' di accedervi. cosi' in un colpo di genio :) ho notato che le tabelle hanno un comment field. potrei usarlo per sostutuirlo alla famigerata table_type column e filtrare in questo modo. purtroppo pero' il mio utente db non ha i privilegi per leggere i commenti da information_schema.

    usando query del tipo
    Codice:
    ALTER TABLE brands COMMENT='crud';
    SELECT TABLE_NAME, TABLE_COMMENT 
    FROM information_schema.TABLES 
    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'brands';
    ottengo l'errore:


    Codice:
    #1044 - Access denied for user 'mnebenchmark01'@'localhost' to database 'information_schema'
    come si puo' ovviare alla cosa? sarebbe veramente d'aiuto poter risolvere la cosa usando i commenti. mi piace molto come approccio e non dovrei usare espedienti del tipo aggiungere tabelle extra solo per storare le tabelle esistenti ecc... avete suggerimenti?
    Ultima modifica di rigidbodyinteractive : 01-03-2025 alle ore 18.06.42

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,885

    Predefinito

    I commenti andrebbero usati appunto come commenti, non come parte della logica del programma: i commenti non sono progettati per questo e non è il loro utilizzo corretto: sui database, i dati vanno inseriti nelle tabelle.

    funziona bene ma hoscoperto che cosi facendo un utente non admin non puo' veder le cartelle sys ma puo' modificare una tabella normale e trasformarla in una di sistema
    Non mi è chiara questa cosa, ovvero: perché prima della modifica da "normale" a "di sistema" non controlli che l'utente sia admin? Ovvero che abbia i permessi per farlo?

    Ciao!

  3. #3
    rigidbodyinteractive non è connesso Utente AlterBlog
    Data registrazione
    18-02-2019
    Messaggi
    26

    Predefinito

    si hai ragione sui commenti ma se servono solo per trovare le tabelle perche' non avvalersene? ma comunque non ho capito se sono disattivati dagli admin o semplicemente non funzionano bene. si possono attivare volendo?

    la modifica delle tabelle da normal a crud e' perche' ho creato una tabella permissions per impostare i privilegi per categorie, senno' avrei dovuto cambiare tutti i miei script CRUD, e sono parecchi, per implemantare un check su ogni operazione. invece il check e' gia fatto in fase di login, nell'header.php. il problema salta fuori quando un utente accede alle tabelle alle quali e' abilitato (come da permissions). in quanto utente abilitato, se la tabella ha un colonna "tipo di tabella" esso puo' ovviamente modificarla. e cosi facendo la tabella diventa una alla quale non e' abilitato.

    comunque per ora ho risolto usando dei prefix "_sys" "_owner" ecc nel nome delle tabelle ma avrei preferito una soluzione piu' solida, se esite

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,885

    Predefinito

    Ho provato così e a me funziona:

    Codice:
    CREATE TABLE mia_tabella (
        id int(10) NOT NULL auto_increment,
        PRIMARY KEY (id)
    ) COMMENT 'Tabella di test per commenti';
    
    SELECT TABLE_NAME, TABLE_COMMENT 
    FROM information_schema.TABLES 
    WHERE TABLE_NAME = 'mia_tabella';
    Puoi fare questa prova?

    Ciao!
    Ultima modifica di alemoppo : 02-03-2025 alle ore 02.02.06

  5. #5
    rigidbodyinteractive non è connesso Utente AlterBlog
    Data registrazione
    18-02-2019
    Messaggi
    26

    Predefinito

    Codice:
    CREATE TABLE mia_tabella (
        id int(10) NOT NULL auto_increment,
        PRIMARY KEY (id)
    ) COMMENT 'Tabella di test per commenti';
    MySQL said: Documentation
    
    #1044 - Access denied for user 'mnebenchmark01'@'localhost' to database 'information_schema'

    mi correggo, se lancio le 2 query separate funziona anche per me
    Codice:
    TABLE_NAME
    TABLE_COMMENT
    mia_tabella
    Tabella di test per commenti
    pero' questo vale per una tabella singola e io devo trovare tutte le tabelle the hanno un certo tipo di commento. per questo avevo usato
    Codice:
    SELECT TABLE_NAME, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE();
    e come risultato infatti mi dava tutta la lista delle tabelle di TABLE_SCHEMA, non quelle presenti nel mio DB. forse dovrei specificare il nome del database?
    Ultima modifica di rigidbodyinteractive : 02-03-2025 alle ore 15.30.31

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •