Ricerca…


Sintassi

  • CREATE {DATABASE | SCHEMA} [SE NON ESISTE] db_name [create_specification] /// Per creare un database
  • DROP {DATABASE | SCHEMA} [IF EXISTS] db_name /// Per eliminare il database

Parametri

Parametro Dettagli
CREA DATABASE Crea un database con il nome specificato
CREA SCHEMA Questo è un sinonimo per CREATE DATABASE
SE NON ESISTE Utilizzato per evitare errori di esecuzione, se il database specificato esiste già
create_specification create_specification opzioni create_specification specificano le caratteristiche del database come CHARACTER SET e COLLATE (confronto dei database)

Crea database, utenti e concessioni

Crea un DATABASE. Si noti che la parola abbreviata SCHEMA può essere utilizzata come sinonimo.

CREATE DATABASE Baseball; -- creates a database named Baseball

Se il database esiste già, viene restituito l'errore 1007. Per aggirare questo errore, prova:

CREATE DATABASE IF NOT EXISTS Baseball;

Allo stesso modo,

DROP DATABASE IF EXISTS Baseball; -- Drops a database if it exists, avoids Error 1008
DROP DATABASE xyz; -- If xyz does not exist, ERROR 1008 will occur

A causa delle precedenti possibilità di errore, le istruzioni DDL vengono spesso utilizzate con IF EXISTS .

Si può creare un database con un SET CARATTERE e regole di confronto predefiniti. Per esempio:

CREATE DATABASE Baseball CHARACTER SET utf8 COLLATE utf8_general_ci;

SHOW CREATE DATABASE Baseball;
+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| Baseball | CREATE DATABASE `Baseball` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------------+

Vedi i tuoi attuali database:

SHOW DATABASES;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| ajax_stuff          |
| Baseball            |
+---------------------+

Imposta il database attualmente attivo e vedi alcune informazioni:

USE Baseball; -- set it as the current database
SELECT @@character_set_database as cset,@@collation_database as col;
+------+-----------------+
| cset | col             |
+------+-----------------+
| utf8 | utf8_general_ci |
+------+-----------------+

Quanto sopra mostra il SET CARATTERE e le regole di confronto predefiniti per il database.

Crea un utente:

CREATE USER 'John123'@'%' IDENTIFIED BY 'OpenSesame';

Quanto sopra crea un utente John123, in grado di connettersi con qualsiasi nome host a causa della % jolly. La password per l'utente è impostata su 'OpenSesame', che è hash.

E creane un altro:

CREATE USER 'John456'@'%' IDENTIFIED BY 'somePassword';

Mostra che gli utenti sono stati creati esaminando lo speciale database mysql :

SELECT user,host,password from mysql.user where user in ('John123','John456');
+---------+------+-------------------------------------------+
| user    | host | password                                  |
+---------+------+-------------------------------------------+
| John123 | %    | *E6531C342ED87 ....................       |
| John456 | %    | *B04E11FAAAE9A ....................       |
+---------+------+-------------------------------------------+

Si noti che a questo punto, gli utenti sono stati creati, ma senza alcuna autorizzazione per utilizzare il database Baseball.

Lavora con permessi per utenti e database. Concedere i diritti all'utente John123 per avere i privilegi completi sul database Baseball e solo i diritti SELECT per l'altro utente:

GRANT ALL ON Baseball.* TO 'John123'@'%';
GRANT SELECT ON Baseball.* TO 'John456'@'%';

Verifica quanto sopra:

SHOW GRANTS FOR 'John123'@'%';
+--------------------------------------------------------------------------------------------------------+
| Grants for John123@%                                                                                   |
+--------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'John123'@'%' IDENTIFIED BY PASSWORD '*E6531C342ED87 ....................        |
| GRANT ALL PRIVILEGES ON `baseball`.* TO 'John123'@'%'                                                  |
+--------------------------------------------------------------------------------------------------------+

SHOW GRANTS FOR 'John456'@'%';
+--------------------------------------------------------------------------------------------------------+
| Grants for John456@%                                                                                   |
+--------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'John456'@'%' IDENTIFIED BY PASSWORD '*B04E11FAAAE9A ....................        |
| GRANT SELECT ON `baseball`.* TO 'John456'@'%'                                                          |
+--------------------------------------------------------------------------------------------------------+

Notare che l' GRANT USAGE che si vedrà sempre significa semplicemente che l'utente può accedere. Questo è tutto ciò che significa.

MyDatabase

È necessario creare il proprio database e non utilizzare la scrittura in nessuno dei database esistenti. Questa è probabilmente una delle prime cose da fare dopo essere stata connessa la prima volta.

CREATE DATABASE my_db;
USE my_db;
CREATE TABLE some_table;
INSERT INTO some_table ...;

È possibile fare riferimento alla tabella qualificandosi con il nome del database: my_db.some_table .

Database di sistema

I seguenti database esistono per l'uso di MySQL. Puoi leggerli ( SELECT ), ma non devi scrivere ( INSERT / UPDATE / DELETE ) le tabelle al loro interno. (Ci sono alcune eccezioni.)

  • mysql - repository per informazioni GRANT e alcune altre cose.
  • information_schema : le tabelle qui sono 'virtuali' nel senso che sono effettivamente manifestate da strutture in memoria. Il loro contenuto include lo schema per tutte le tabelle.
  • performance_schema - ?? [si prega di accettare, quindi modificare]
  • altri?? (per MariaDB, Galera, TokuDB, ecc.)

Creazione e selezione di un database

Se l'amministratore crea il tuo database al momento della configurazione delle autorizzazioni, puoi iniziare a usarlo. Altrimenti, devi crearlo da solo:

mysql> CREATE DATABASE menagerie;

Sotto Unix, i nomi dei database fanno distinzione tra maiuscole e minuscole (a differenza delle parole chiave SQL), quindi è necessario fare sempre riferimento al proprio database come serraglio, non come Menagerie, MENAGERIE o qualche altra variante. Questo vale anche per i nomi delle tabelle. (In Windows, questa limitazione non si applica, anche se è necessario fare riferimento a database e tabelle utilizzando la stessa lettera maiuscola in una determinata query. Tuttavia, per una serie di motivi, la best practice consigliata è sempre quella di utilizzare la stessa lettera maiuscola utilizzata quando il database è stato creato.)

La creazione di un database non lo seleziona per l'uso; devi farlo esplicitamente. Per rendere il serraglio il database attuale, utilizzare questa dichiarazione:

mysql> USE menagerie
Database changed

Il tuo database deve essere creato una sola volta, ma devi selezionarlo per l'uso ogni volta che inizi una sessione mysql. Puoi farlo inviando una dichiarazione USE come mostrato nell'esempio. In alternativa, puoi selezionare il database sulla riga di comando quando invochi mysql. Basta specificare il suo nome dopo ogni parametro di connessione che potrebbe essere necessario fornire. Per esempio:

shell> mysql -h host -u user -p menagerie
Enter password: ********


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow