MySQL的Windows版本已經將OpenSSL加入了。也面的命令是查看你的MySQL是否打開了SSL功能。
SHOW VARIABLES LIKE 'have_openssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl | NO |
+---------------+-------+
1 row in set (0.00 sec)
如果返回的是NO,那麼說明你需要將OpenSSL編譯進自己的MySQL
在有時你可能需要將用戶名和密碼進行加密傳輸。在這時可以使用下面GRANT命令:
GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%' IDENTIFIED BY "passWord!" REQUIRE SSL;
還可以通過 REQUIRE x509 選項進行SSL傳輸:
GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%' IDENTIFIED BY "passWord!" REQUIRE x509;
你還可以使用REQUIRE SUBJECT來指定一個特定的客戶端證書來訪問數據庫。
GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%'
IDENTIFIED BY "passWord!"
REQUIRE SUBJECT "/C=US/ST=New York/L=Albany/O=Widgets Inc./CN=clIEnt-ray.
example.com/[email protected]";
也許你並不關心使用的是什麼客戶許可,而僅僅關心的是你的證書。那麼你可以使用REQUIRE ISSUER來實現:
GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%' IDENTIFIED BY "passWord!"
REQUIRE ISSUER "/C=US/ST=New+20York/L=Albany/O=Widgets Inc./CN=cacert.example.
com/[email protected]";
SSL還可以直接通過密碼進行加密。可以使用REQUIRE CIPHER設置密碼。
GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%' IDENTIFIED BY "passWord!"
REQUIRE CIPHER "EDH-RSA-DES-CBC3-SHA";
上面使用了GRANT命令對用戶權限進行設置。而這些信息都是保存在授權表中,這些表是安全系統的心髒。在這些表中保存了每一個用戶和客戶機所具有的權限。如果正確地操作這些表,將會對數據庫的安全起到積極的作用,而如果使用不慎,將是非常危險的。