MySQL
Datenbanken erstellen
Suche…
Syntax
- CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] /// Datenbank erstellen
- DROP {DATABASE | SCHEMA} [IF EXISTS] Datenbankname /// Zum Löschen der Datenbank
Parameter
Parameter | Einzelheiten |
---|---|
DATENBANK ERSTELLEN | Erzeugt eine Datenbank mit dem angegebenen Namen |
SCHEMA ERSTELLEN | Dies ist ein Synonym für CREATE DATABASE |
WENN NICHT EXISTEN | Wird verwendet, um Ausführungsfehler zu vermeiden, wenn die angegebene Datenbank bereits vorhanden ist |
create_specification | Optionen für create_specification geben Datenbankmerkmale wie CHARACTER SET und COLLATE (Datenbanksortierung) an. |
Erstellen Sie Datenbanken, Benutzer und Zuschüsse
Erstellen Sie eine Datenbank. Beachten Sie, dass das verkürzte Wort SCHEMA als Synonym verwendet werden kann.
CREATE DATABASE Baseball; -- creates a database named Baseball
Wenn die Datenbank bereits vorhanden ist, wird Fehler 1007 zurückgegeben. Um diesen Fehler zu umgehen, versuchen Sie Folgendes:
CREATE DATABASE IF NOT EXISTS Baseball;
Ähnlich,
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
Aufgrund der oben genannten IF EXISTS
werden häufig DDL-Anweisungen mit IF EXISTS
.
Man kann eine Datenbank mit einem Standard-Zeichensatz und einer Kollatierung erstellen. Zum Beispiel:
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 */ |
+----------+-------------------------------------------------------------------+
Sehen Sie Ihre aktuellen Datenbanken an:
SHOW DATABASES;
+---------------------+
| Database |
+---------------------+
| information_schema |
| ajax_stuff |
| Baseball |
+---------------------+
Legen Sie die derzeit aktive Datenbank fest und sehen Sie einige Informationen:
USE Baseball; -- set it as the current database
SELECT @@character_set_database as cset,@@collation_database as col;
+------+-----------------+
| cset | col |
+------+-----------------+
| utf8 | utf8_general_ci |
+------+-----------------+
Das obige zeigt das Standardzeichen CHARACTER SET und die Sortierung für die Datenbank.
Erstellen Sie einen Benutzer:
CREATE USER 'John123'@'%' IDENTIFIED BY 'OpenSesame';
Das Obige erstellt einen Benutzer John123, der aufgrund des Platzhalters %
eine Verbindung mit einem beliebigen Hostnamen herstellen kann. Das Passwort für den Benutzer ist auf 'OpenSesame' gesetzt, das Hash ist.
Und ein anderes erstellen:
CREATE USER 'John456'@'%' IDENTIFIED BY 'somePassword';
Zeigen Sie, dass die Benutzer erstellt wurden, indem Sie die spezielle mysql
Datenbank untersuchen:
SELECT user,host,password from mysql.user where user in ('John123','John456');
+---------+------+-------------------------------------------+
| user | host | password |
+---------+------+-------------------------------------------+
| John123 | % | *E6531C342ED87 .................... |
| John456 | % | *B04E11FAAAE9A .................... |
+---------+------+-------------------------------------------+
Beachten Sie, dass die Benutzer zu diesem Zeitpunkt erstellt wurden, jedoch keine Berechtigung zur Verwendung der Baseball-Datenbank haben.
Arbeiten Sie mit Berechtigungen für Benutzer und Datenbanken. Gewähren Sie dem Benutzer John123 die Berechtigung, über vollständige Berechtigungen für die Baseball-Datenbank zu verfügen, und nur die SELECT-Rechte für den anderen Benutzer:
GRANT ALL ON Baseball.* TO 'John123'@'%';
GRANT SELECT ON Baseball.* TO 'John456'@'%';
Überprüfen Sie das oben:
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'@'%' |
+--------------------------------------------------------------------------------------------------------+
Beachten Sie, dass die GRANT USAGE
, die Sie immer sehen werden, lediglich bedeutet, dass sich der Benutzer anmelden kann. Das ist alles was das bedeutet.
MeineDatenbank
Sie müssen Ihre eigene Datenbank erstellen und keine Schreibzugriff auf die vorhandenen Datenbanken verwenden. Dies ist wahrscheinlich eines der ersten Dinge, die Sie nach dem ersten Verbindungsaufbau tun sollten.
CREATE DATABASE my_db;
USE my_db;
CREATE TABLE some_table;
INSERT INTO some_table ...;
Sie können auf Ihre Tabelle verweisen, indem Sie sich mit dem Datenbanknamen qualifizieren: my_db.some_table
.
Systemdatenbanken
Die folgenden Datenbanken stehen für MySQL zur Verfügung. Sie können sie lesen ( SELECT
), aber Sie dürfen die Tabellen nicht darin schreiben ( INSERT
/ UPDATE
/ DELETE
). (Es gibt einige Ausnahmen.)
-
mysql
- Repository fürGRANT
Informationen und einige andere Dinge. -
information_schema
- Die Tabellen hier sind "virtuell" in dem Sinne, dass sie sich tatsächlich durch In-Memory-Strukturen manifestieren. Ihr Inhalt enthält das Schema für alle Tabellen. -
performance_schema
- ?? [bitte akzeptieren, dann bearbeiten] - Andere?? (für MariaDB, Galera, TokuDB usw.)
Anlegen und Auswählen einer Datenbank
Wenn der Administrator beim Einrichten der Berechtigungen Ihre Datenbank für Sie erstellt, können Sie sie verwenden. Ansonsten müssen Sie es selbst erstellen:
mysql> CREATE DATABASE menagerie;
Unter Unix ist bei Datenbanknamen die Groß- und Kleinschreibung zu beachten (im Gegensatz zu SQL-Schlüsselwörtern). Sie müssen daher immer als Menagerie auf Ihre Datenbank verweisen, nicht als Menagerie, MENAGERIE oder eine andere Variante. Dies gilt auch für Tabellennamen. (Unter Windows gilt diese Einschränkung nicht, obwohl Sie in einer Abfrage immer auf Datenbanken und Tabellen mit dem gleichen Buchstaben achten müssen. Aus verschiedenen Gründen empfiehlt es sich jedoch, immer den gleichen Buchstaben zu verwenden, der verwendet wurde Die Datenbank wurde erstellt.)
Durch das Erstellen einer Datenbank wird sie nicht zur Verwendung ausgewählt. Sie müssen das explizit tun. Verwenden Sie diese Anweisung, um die Menagerie zur aktuellen Datenbank zu machen:
mysql> USE menagerie
Database changed
Ihre Datenbank muss nur einmal erstellt werden. Sie müssen sie jedoch jedes Mal auswählen, wenn Sie eine mysql-Sitzung starten. Sie können dies tun, indem Sie eine USE-Anweisung ausgeben, wie im Beispiel gezeigt. Alternativ können Sie die Datenbank in der Befehlszeile auswählen, wenn Sie mysql aufrufen. Geben Sie einfach den Namen nach den Verbindungsparametern an, die Sie möglicherweise angeben müssen. Zum Beispiel:
shell> mysql -h host -u user -p menagerie
Enter password: ********