建立資料庫使用者和授權
建立資料庫。請注意,縮短的單詞 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’。
並創造另一個:
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
僅表示使用者可以登入。這就是所有這一切。