Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Programmazione >> PHP /MySQL Programmazione >> .

Come si crea un utente pubblico che richiede la password per visualizzare il database in MySQL?

Ecco come creare un utente pubblico in MySQL che richiede una password per visualizzare un database, insieme a spiegazioni e migliori pratiche:

1. Connettiti a mysql come root o un utente amministratore

Dovrai connetterti al tuo server MySQL utilizzando un account utente che ha privilegi sufficienti per creare utenti e concedere le autorizzazioni. In genere, questo è l'utente `root` o un altro utente amministrativo.

`` `Bash

mysql -u root -p

`` `

Immettere la password di root quando richiesto.

2. Crea l'utente

Utilizzare l'istruzione "Crea utente" per creare l'utente. È meglio specificare l'host da cui l'utente può connettersi. Se si desidera che l'utente si connetta da qualsiasi host, utilizzare `%`. Stai molto attento all'utilizzo di `%` per account sensibili! Per un approccio più sicuro, limita l'utente a connettersi solo da specifici indirizzi IP o nomi host.

`` `sql

Crea utente 'public_user'@'%' identificato da 'your_strong_password';

`` `

* `'public_user'@'%'` :Questo definisce il nome utente (`public_user`) e l'host (`%`significa qualsiasi host). Sostituisci `your_strong_password` con una password forte e univoca.

* `Identificato da 'your_strong_password'` :Questo imposta la password per l'utente. Usa una password forte che è lunga, complessa e include un mix di lettere, numeri e simboli maiuscola e minuscola. Prendi in considerazione l'utilizzo di un gestore di password per generare e archiviare in modo sicuro le password.

Nota di sicurezza importante: Utilizzando `'%'` come host consente all'utente di connettersi da * qualsiasi indirizzo IP. Questo può essere un rischio per la sicurezza. Se possibile, limitare l'utente a un indirizzo IP specifico o a una gamma di indirizzi IP. Per esempio:

`` `sql

Crea l'utente 'public_user'@'192.168.1.100' identificato da 'your_strong_password'; - Consenti solo da IP 192.168.1.100

Crea l'utente 'public_user'@'192.168.1.%' identificato da 'your_strong_password'; - Consenti dalla sottorete 192.168.1.x

`` `

3. Concedere privilegi di sola lettura al database

Utilizzare la dichiarazione `Grant 'per concedere i privilegi di sola lettura dell'utente nel database desiderato.

`` `sql

Concedi seleziona su your_database.* A 'public_user'@'%';

`` `

* `Grant Select` :Ciò specifica che l'utente avrà solo il privilegio `Select`, che consente loro di leggere i dati. * Non * saranno in grado di inserire, aggiornare, eliminare o modificare la struttura del database.

* `su your_database.*` :Questo specifica il database (`your_database`) e che il privilegio si applica a tutte le tabelle all'interno di quel database (`.*`). Sostituisci `your_database` con il nome effettivo del database.

* `a 'public_user'@'%'` :Ciò specifica l'utente a cui è concesso il privilegio. Assicurati che questo corrisponda all'utente creato nel passaggio 2.

4. Privilegi a filo

Dopo aver concesso privilegi, è essenziale eliminare le tabelle dei privilegi per garantire che le modifiche abbiano effetto immediatamente.

`` `sql

Privilegi a filo;

`` `

5. Test dell'utente

Esci dall'account root o amministratore e accedi utilizzando l'account `public_user` appena creato.

`` `Bash

mysql -u public_user -p -h yor_mysql_server_address

`` `

Sostituisci `your_mysql_server_address` con l'indirizzo effettivo del tuo server MySQL. Se ti stai collegando dalla stessa macchina, puoi spesso usare `localhost '.

Immettere la password impostata per `public_user` quando richiesto.

Una volta effettuato l'accesso, prova a selezionare i dati dal database:

`` `sql

Usa your_database;

Seleziona * da your_table;

`` `

Se l'istruzione `Select` funziona, all'utente è stato concesso l'accesso di sola lettura. Prova un'operazione che richiede altri privilegi, come `insert`,` update`, `delete` o` Crea table`. Questi dovrebbero fallire con un errore di "autorizzazione negata".

Esempio completo:

`` `sql

-Connetti come root:mysql -u root -p

- Crea l'utente (sostituire con una password forte!)

Crea utente 'public_user'@'%' identificato da 'supersecretpassword123!';

-Concedi l'accesso di sola lettura al database "myDatabase"

Concedere seleziona su mydatabase.* A 'public_user'@'%';

- Aggiorna i privilegi

Privilegi a filo;

- Esci dalla sessione di root

USCITA;

- Accedi come nuovo utente (dalla riga di comando):

-mysql -u public_user -p -h your_mysql_server_address

- testare le autorizzazioni:

Usa myDatabase;

Seleziona * dai clienti; - dovrebbe funzionare

Inserisci i valori dei clienti (nome) ("nuovo cliente"); - dovrebbe fallire

- Esci dalla sessione di public_user

USCITA;

`` `

Considerazioni importanti e migliori pratiche:

* Privilegio minimo: Concedere solo i privilegi necessari. Evita di concedere privilegi più ampi di quanto richiesto. Ad esempio, se l'utente deve solo leggere da una tabella specifica, concedi `selezionare" solo su quella tabella, non l'intero database.

* Restrizione host: Limitare gli host da cui l'utente può connettersi. Non utilizzare `'%'` a meno che non si capisca le implicazioni di sicurezza.

* Gestione password: Applicare politiche di password forti e ruotare regolarmente le password. Usa un gestore di password.

* Registrazione di audit: Abilita la registrazione di audit sul server MySQL per tenere traccia dell'attività dell'utente, inclusi accessi, query e altre operazioni. Questo può aiutarti a rilevare e indagare su incidenti di sicurezza.

* Audit di sicurezza regolari: Rivedi regolarmente la configurazione MySQL, gli account utente e i privilegi per identificare e affrontare potenziali vulnerabilità di sicurezza.

* Crittografia: Utilizzare la crittografia per proteggere i dati a riposo e in transito. Abilita SSL per le connessioni client.

* Firewall: Configura il tuo firewall per consentire solo il traffico necessario per il server MySQL.

* Monitoraggio: Monitora il tuo server MySQL per problemi di prestazioni e minacce alla sicurezza.

* Design del database: Progetta il tuo database pensando alla sicurezza. Utilizzare tipi e vincoli di dati appropriati per prevenire la corruzione dei dati e gli attacchi di iniezione. Prendi in considerazione l'uso di dichiarazioni preparate per prevenire l'iniezione di SQL.

* Evita di esporre direttamente a Internet: Nella maggior parte dei casi, non dovresti * esporre direttamente il tuo database MySQL a Internet pubblico. Invece, utilizzare un server delle applicazioni (ad esempio un server Web che esegue PHP, Python, Node.js, ecc.) Per gestire le richieste dai client e interagire con il database per conto dell'utente. Ciò consente di implementare controlli di sicurezza più severi e proteggere il database da attacchi diretti. Ciò è fondamentale per prevenire l'accesso non autorizzato e le violazioni dei dati.

* Nessuna esposizione diretta all'utente finale: Non consentire mai all'utente finale di inserire direttamente nel database, utilizza un sito Web.

Seguendo questi passaggi e le migliori pratiche, è possibile creare un utente pubblico che richiede una password per visualizzare i dati in MySQL mantenendo un livello ragionevole di sicurezza. Ricorda di adattare queste istruzioni al proprio ambiente specifico e ai requisiti di sicurezza. Dai la priorità sempre alla sicurezza e rivedi regolarmente la configurazione per assicurarti che rimanga efficace.

 

Programmazione © www.354353.com