MySQL
Создание баз данных
Поиск…
Синтаксис
- CREATE {DATABASE | SCHEMA} [ЕСЛИ НЕ СУЩЕСТВУЕТ] db_name [create_specification] /// Создание базы данных
- DROP {БАЗЫ ДАННЫХ | SCHEMA} [IF EXISTS] db_name /// Чтобы удалить базу данных
параметры
параметр | подробности |
---|---|
СОЗДАТЬ БАЗА ДАННЫХ | Создает базу данных с заданным именем |
СОЗДАТЬ СХЕМА | Это синоним CREATE DATABASE |
ЕСЛИ НЕ СУЩЕСТВУЕТ | Используется, чтобы избежать ошибки выполнения, если указанная база данных уже существует |
create_specification | create_specification определяют характеристики базы данных, такие как CHARACTER SET и COLLATE (сортировка базы данных) |
Создание базы данных, пользователей и грантов
Создайте базу данных. Обратите внимание, что сокращенное слово SCHEMA может использоваться как синоним.
CREATE DATABASE Baseball; -- creates a database named Baseball
Если база данных уже существует, возвращается ошибка 1007. Чтобы обойти эту ошибку, попробуйте:
CREATE DATABASE IF NOT EXISTS Baseball;
Так же,
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
Из-за вышеперечисленных возможностей ошибки операторы DDL часто используются с IF EXISTS
.
Можно создать базу данных с установкой CHARACTER SET по умолчанию и сортировкой. Например:
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 */ |
+----------+-------------------------------------------------------------------+
См. Текущие базы данных:
SHOW DATABASES;
+---------------------+
| Database |
+---------------------+
| information_schema |
| ajax_stuff |
| Baseball |
+---------------------+
Установите текущую активную базу данных и посмотрите информацию:
USE Baseball; -- set it as the current database
SELECT @@character_set_database as cset,@@collation_database as col;
+------+-----------------+
| cset | col |
+------+-----------------+
| utf8 | utf8_general_ci |
+------+-----------------+
Вышеприведенные настройки CHARACTER SET и Collation для базы данных.
Создайте пользователя:
CREATE USER 'John123'@'%' IDENTIFIED BY 'OpenSesame';
Вышеприведенное создает пользователя John123, способного подключаться к любому имени хоста из-за шаблона %
. Пароль для пользователя установлен в «OpenSesame», который hashed.
И создать другое:
CREATE USER 'John456'@'%' IDENTIFIED BY 'somePassword';
Покажите, что пользователи были созданы путем изучения специальной базы данных mysql
:
SELECT user,host,password from mysql.user where user in ('John123','John456');
+---------+------+-------------------------------------------+
| user | host | password |
+---------+------+-------------------------------------------+
| John123 | % | *E6531C342ED87 .................... |
| John456 | % | *B04E11FAAAE9A .................... |
+---------+------+-------------------------------------------+
Обратите внимание, что на данный момент пользователи созданы, но без каких-либо разрешений использовать базу данных Baseball.
Работа с разрешениями для пользователей и баз данных. Предоставьте права пользователю John123 иметь полные привилегии в базе данных бейсбола и просто права SELECT для другого пользователя:
GRANT ALL ON Baseball.* TO 'John123'@'%';
GRANT SELECT ON Baseball.* TO 'John456'@'%';
Проверьте вышеуказанное:
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'@'%' |
+--------------------------------------------------------------------------------------------------------+
Обратите внимание, что GRANT USAGE
которое вы всегда увидите, означает просто, что пользователь может войти в систему. Это все, что это значит.
MyDatabase
Вы должны создать свою собственную базу данных, а не использовать запись в любую из существующих баз данных. Это, вероятно, будет одной из первых вещей, которые нужно сделать после первого подключения.
CREATE DATABASE my_db;
USE my_db;
CREATE TABLE some_table;
INSERT INTO some_table ...;
Вы можете ссылаться на свою таблицу, пройдя квалификацию с именем базы данных: my_db.some_table
.
Системные базы данных
Для использования MySQL используются следующие базы данных. Вы можете прочитать ( SELECT
) их, но вы не должны писать ( INSERT
/ UPDATE
/ DELETE
) таблицы в них. (Есть несколько исключений.)
-
mysql
- репозиторий для информацииGRANT
и некоторые другие вещи. -
information_schema
- Таблицы здесь являются «виртуальными» в том смысле, что они фактически проявляются в структурах памяти. Их содержимое включает схему для всех таблиц. -
performance_schema
- ?? [примите, затем отредактируйте] - другие ?? (для MariaDB, Galera, TokuDB и т. д.)
Создание и выбор базы данных
Если администратор создает вашу базу данных для вас при настройке ваших прав, вы можете начать ее использовать. В противном случае вам нужно создать его самостоятельно:
mysql> CREATE DATABASE menagerie;
В Unix имена баз данных чувствительны к регистру (в отличие от ключевых слов SQL), поэтому вы всегда должны ссылаться на свою базу данных как на звезду, а не на Menagerie, MENAGERIE или какой-либо другой вариант. Это также верно для имен таблиц. (В Windows это ограничение не применяется, хотя вы должны обращаться к базам данных и таблицам, используя один и тот же буквенный регистр во всем заданном запросе. Однако по целому ряду причин рекомендуемая передовая практика всегда должна использовать тот же буквенный регистр, который использовался, когда база данных была создана.)
Создание базы данных не выбирает ее для использования; вы должны сделать это явно. Чтобы сделать звезду текущей базы данных, используйте это утверждение:
mysql> USE menagerie
Database changed
Ваша база данных должна быть создана только один раз, но вы должны выбрать ее для использования каждый раз, когда вы начинаете сеанс mysql. Вы можете сделать это, выпустив инструкцию USE, как показано в примере. Кроме того, вы можете выбрать базу данных в командной строке при вызове mysql. Просто укажите его имя после любых параметров подключения, которые вам могут потребоваться. Например:
shell> mysql -h host -u user -p menagerie
Enter password: ********