建立資料庫使用者和授權

建立資料庫。請注意,縮短的單詞 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 和 Collat​​ion。

建立使用者:

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 僅表示使用者可以登入。這就是所有這一切。