MySQL
Tworzenie baz danych
Szukaj…
Składnia
- UTWÓRZ {BAZY DANYCH | SCHEMA} [JEŚLI NIE ISTNIEJE] nazwa_db [specyfikacja_tworzenia] /// Aby utworzyć bazę danych
- DROP {BAZA DANYCH | SCHEMA} [JEŚLI ISTNIEJE] nazwa_db /// Aby usunąć bazę danych
Parametry
Parametr | Detale |
---|---|
UTWÓRZ BAZA DANYCH | Tworzy bazę danych o podanej nazwie |
UTWÓRZ SCHEMAT | To jest synonim CREATE DATABASE |
JEŚLI NIE ISTNIEJE | Służy do uniknięcia błędu wykonania, jeśli określona baza danych już istnieje |
utwórz specyfikację | opcje create_specification określają cechy bazy danych, takie jak CHARACTER SET i COLLATE (sortowanie bazy danych) |
Utwórz bazę danych, użytkowników i dotacje
Utwórz bazę danych. Pamiętaj, że skrócone słowo SCHEMA może być używane jako synonim.
CREATE DATABASE Baseball; -- creates a database named Baseball
Jeśli baza danych już istnieje, zwracany jest błąd 1007. Aby obejść ten błąd, spróbuj:
CREATE DATABASE IF NOT EXISTS Baseball;
Podobnie,
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
Ze względu na powyższe możliwości wystąpienia błędu instrukcje DDL są często używane z IF EXISTS
.
Można utworzyć bazę danych z domyślnym ZESTAWEM ZNAKÓW i zestawieniem. Na przykład:
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 */ |
+----------+-------------------------------------------------------------------+
Zobacz swoje aktualne bazy danych:
SHOW DATABASES;
+---------------------+
| Database |
+---------------------+
| information_schema |
| ajax_stuff |
| Baseball |
+---------------------+
Ustaw aktualnie aktywną bazę danych i zobacz kilka informacji:
USE Baseball; -- set it as the current database
SELECT @@character_set_database as cset,@@collation_database as col;
+------+-----------------+
| cset | col |
+------+-----------------+
| utf8 | utf8_general_ci |
+------+-----------------+
Powyżej pokazano domyślny ZESTAW ZNAKÓW i sortowanie dla bazy danych.
Utwórz użytkownika:
CREATE USER 'John123'@'%' IDENTIFIED BY 'OpenSesame';
Powyższe powoduje utworzenie użytkownika John123, który może połączyć się z dowolną nazwą hosta dzięki %
wildcard. Hasło użytkownika jest ustawione na „OpenSesame”, które jest mieszane.
I utwórz kolejną:
CREATE USER 'John456'@'%' IDENTIFIED BY 'somePassword';
Pokaż, że użytkownicy zostali utworzeni, sprawdzając specjalną bazę danych mysql
:
SELECT user,host,password from mysql.user where user in ('John123','John456');
+---------+------+-------------------------------------------+
| user | host | password |
+---------+------+-------------------------------------------+
| John123 | % | *E6531C342ED87 .................... |
| John456 | % | *B04E11FAAAE9A .................... |
+---------+------+-------------------------------------------+
Należy pamiętać, że w tym momencie użytkownicy zostali utworzeni, ale bez żadnych uprawnień do korzystania z bazy danych Baseball.
Praca z uprawnieniami dla użytkowników i baz danych. Przyznaj uprawnienia użytkownikowi John123, aby mieć pełne uprawnienia do bazy danych Baseball, i po prostu WYBIERZ uprawnienia dla drugiego użytkownika:
GRANT ALL ON Baseball.* TO 'John123'@'%';
GRANT SELECT ON Baseball.* TO 'John456'@'%';
Sprawdź powyższe:
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'@'%' |
+--------------------------------------------------------------------------------------------------------+
Pamiętaj, że GRANT USAGE
, które zawsze zobaczysz, oznacza po prostu, że użytkownik może się zalogować. To wszystko, co to znaczy.
Moja baza danych
Musisz stworzyć własną bazę danych, a nie korzystać z zapisu do żadnej z istniejących baz danych. Jest to prawdopodobnie jedna z pierwszych rzeczy do zrobienia po pierwszym połączeniu.
CREATE DATABASE my_db;
USE my_db;
CREATE TABLE some_table;
INSERT INTO some_table ...;
Możesz odwoływać się do tabeli, kwalifikując się przy użyciu nazwy bazy danych: my_db.some_table
.
Systemowe bazy danych
Istnieją następujące bazy danych do użytku MySQL. Możesz je przeczytać ( SELECT
), ale nie wolno zapisywać ( INSERT
/ UPDATE
/ DELETE
) tabel w nich. (Jest kilka wyjątków).
-
mysql
- repozytorium informacjiGRANT
i kilku innych rzeczy. -
information_schema
- Tabele tutaj są „wirtualne” w tym sensie, że faktycznie są manifestowane przez struktury w pamięci. Ich zawartość obejmuje schemat wszystkich tabel. -
performance_schema
- ?? [zaakceptuj, a następnie edytuj] - inni? (dla MariaDB, Galera, TokuDB itp.)
Tworzenie i wybór bazy danych
Jeśli administrator utworzy dla Ciebie bazę danych podczas konfigurowania uprawnień, możesz zacząć z niej korzystać. W przeciwnym razie musisz go utworzyć samodzielnie:
mysql> CREATE DATABASE menagerie;
W systemie Unix w nazwach baz danych rozróżniana jest wielkość liter (w przeciwieństwie do słów kluczowych SQL), dlatego zawsze należy odwoływać się do bazy danych jako menażeria, a nie jako menażeria, menageria lub inny wariant. Dotyczy to również nazw tabel. (W systemie Windows to ograniczenie nie ma zastosowania, chociaż należy odwoływać się do baz danych i tabel używających tej samej litery w całym zapytaniu. Jednak z różnych powodów zalecaną najlepszą praktyką jest zawsze stosowanie tej samej litery, która była używana, gdy baza danych została utworzona).
Utworzenie bazy danych nie powoduje jej wyboru; musisz to zrobić wyraźnie. Aby menażeria była bieżącą bazą danych, użyj tej instrukcji:
mysql> USE menagerie
Database changed
Baza danych musi zostać utworzona tylko raz, ale musisz ją wybrać do użycia przy każdym rozpoczęciu sesji mysql. Możesz to zrobić, wydając instrukcję USE, jak pokazano w przykładzie. Alternatywnie możesz wybrać bazę danych w wierszu poleceń, gdy wywołujesz mysql. Wystarczy podać jego nazwę po parametrach połączenia, które mogą być konieczne. Na przykład:
shell> mysql -h host -u user -p menagerie
Enter password: ********