MariaDB 跨主機 SSL 傳輸筆記 2020-04-14
1. 確認是否有開啟 Private Ip
2. 防火牆設置
進入 DigitalOcean 後台管理
Manage > Droplets > Networking > Firewalls
3. 新增存取權限
利用 MySQL GUI 新增存取權限
app server ip: 10.130.99.96
database ip: 10.130.68.78
GUI 應新增 10.130.99.96 存取權限
```
mysql -u root -p
```
```
CREATE USER 'kaoru'@'10.130.99.96' IDENTIFIED BY 'p@ssw0rd';
GRANT ALL PRIVILEGES ON *.* TO 'kaoru'@'10.130.99.96' WITH GRANT OPTION;
FLUSH PRIVILEGES;
```
4. 測試連線
app server 利用 GUI 測試連線
10.130.68.78
建議開啟 display_errors=1 除錯
```
$conn = mysqli_init();
mysqli_ssl_set(
$conn,
$client_key_path,
$client_cert_path,
$ca_cert_path,,
NULL,
NULL
);
if (!mysqli_real_connect($conn, $ip, $user, $passwd, $dbname))
exit('DB REAL CONNECT ERROR');
```
appendix.
安裝 MySQL 方法
https://blog.gtwang.org/linux/centos-7-install-mariadb-mysql-server-tutorial/
產生 SSL 簽證教學
https://www.cnblogs.com/zhoujinyi/p/4191096.html
(可以利用 -config ssl.conf 參數直接讀取 ssl 設定檔)
關閉 MySQL 日誌
在 /etc/my.cnf.d/mariadb-server.cnf 新增
```
[mysqld]
skip-log-bin
...
#log-error=/var/log/mariadb/mariadb.log
...
```
產生憑證注意 mariadb 需要 server 與 ca 頻證不同
但是產生憑證時 common name欄位(server's hostname)需要保持 server / ca / client (不確定是否全部都要一致)
因為沒有開啟除錯
所以一直不知道問題在哪