수색…


통사론

  • CREATE {DATABASE | SCHEMA} [존재하지 않는 경우] db_name [create_specification] /// 데이터베이스를 만들려면
  • DROP {DATABASE | SCHEMA} [IF EXISTS] db_name /// 데이터베이스를 삭제하려면

매개 변수

매개 변수 세부
CREATE DATABASE 지정된 이름의 데이타베이스를 작성합니다.
SCHEMA 생성 이것은 CREATE DATABASE 의 동의어입니다.
존재하지 않는 경우 지정된 데이터베이스가 이미 존재하면 실행 오류를 방지하는 데 사용됩니다.
create_specification create_specification 옵션은 CHARACTER SETCOLLATE (데이터베이스 정렬)와 같은 데이터베이스 특성을 지정합니다.

데이터베이스, 사용자 및 지원 작성

DATABASE를 작성하십시오. 단축 된 단어 인 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 와 함께 사용 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 |
+------+-----------------+

위의 내용은 데이터베이스의 기본 문자 집합 및 데이터 정렬을 보여줍니다.

사용자 만들기 :

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

위와 같이 사용자 John123이 생성되어 % 와일드 카드로 인해 모든 호스트 이름에 연결할 수 있습니다. 사용자의 암호는 해시 된 'OpenSesame'으로 설정됩니다.

그리고 다른 것을 창조하십시오 :

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 사용자에게 Baseball 데이터베이스에 대한 모든 권한을 부여하고 다른 사용자에 대한 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에서는 주어진 쿼리에서 동일한 문자를 사용하여 데이터베이스와 테이블을 참조해야하지만이 제한은 적용되지 않습니다. 그러나 여러 가지 이유로 항상 최선의 방법은 다음과 같은 경우 사용 된 것과 동일한 문자를 사용하는 것입니다. 데이터베이스가 생성되었습니다.)

데이터베이스를 작성해도 사용을 위해 선택되지는 않습니다. 당신은 명시 적으로 그렇게해야합니다. menagerie를 현재 데이터베이스로 만들려면 다음 문을 사용하십시오.

mysql> USE menagerie
Database changed

데이터베이스는 한 번만 생성해야하지만 mysql 세션을 시작할 때마다 사용하도록 선택해야합니다. 예제와 같이 USE 문을 실행하면됩니다. 또는 mysql을 호출 할 때 명령 행에서 데이터베이스를 선택할 수있다. 제공해야 할 수도있는 연결 매개 변수 다음에 이름을 지정하십시오. 예 :

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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow