在内部,您可以使用CREATE USER命令创建新的远程用户。我们将在用户规范的主机部分中使用客户端计算机的IP地址来限制与该计算机的连接。对于将来关闭require_secure_transport选项的某些冗余,我们还将在帐户创建期间指定此用户通过包含REQUIRE SSL子句来要求SSL:
CREATE USER 'remote_user'@'mysql_client_IP' IDENTIFIED BY 'password' REQUIRE SSL;接下来,为他们应该有权访问的数据库或表授予新用户权限。为了演示,我们将创建一个example数据库并赋予新的用户所有权:
CREATE DATABASE example; GRANT ALL ON example.* TO 'remote_user'@'mysql_client_IP';接下来,刷新权限立即应用这些设置:
FLUSH PRIVILEGES;完成后退出到shell:
exit我们的服务器设置为允许连接到我们的远程用户。
测试远程连接在MySQL客户端计算机上,进行测试以确保您可以成功连接到服务器。使用-u选项指定远程用户以及-h选项指定MySQL服务器IP地址:
mysql -u remote_user -p -h mysql_server_IP指定密码后,您将登录到远程服务器。
检查以确保您的连接安全:
\s -------------- . . . SSL: Cipher in use is DHE-RSA-AES256-SHA . . . Connection: mysql_server_IP via TCP/IP . . . --------------退出到shell:
exit接下来,尝试不安全地连接:
mysql -u remote_user -p -h mysql_server_IP --ssl-mode=disabled提示您输入密码后,应拒绝您的连接:
ERROR 1045 (28000): Access denied for user 'remote_user'@'mysql_server_IP' (using password: YES)它显示允许SSL连接,而拒绝未加密的连接。此时,我们的MySQL服务器已配置为安全地接受远程连接。如果这满足您的安全要求,您可以在这里停止,但我们可以实施一些额外的部分来进一步增强我们的安全性和信任。
配置MySQL连接的验证(可选)目前,我们的MySQL服务器配置了由本地生成的证书颁发机构(CA)签名的SSL证书。服务器的证书和密钥对足以为传入连接提供加密。
但是,我们目前没有利用证书颁发机构可以提供的信任关系。通过将CA证书分发给客户端以及客户端证书和密钥,双方都可以提供其证书由相互信任的证书颁发机构签名的证明。这有助于防止恶意服务器的欺骗性连接。
为了实现这个额外的可选安全措施,我们需要:
将适当的SSL文件传输到客户端计算机
创建客户端配置文件
改变我们的远程用户以获得可信证书
将客户端证书传输到客户端计算机首先,我们需要从MySQL服务器获取MySQL CA和客户端证书文件,并将它们放在MySQL客户端上。
首先在您将用于连接的用户的主目录中的MySQL客户端上创建一个目录。叫这个client-ssl:
mkdir ~/client-ssl我们应该锁定对此目录的访问权限,以便只有当前用户才能访问它:
chmod 700 ~/client-ssl现在,我们可以将证书信息复制到新目录。
在MySQL服务器计算机上,输入以下内容显示CA证书的内容:
sudo cat /var/lib/mysql/ca.pem -----BEGIN CERTIFICATE----- . . . -----END CERTIFICATE-----将整个输出(包括BEGIN CERTIFICATE和END CERTIFICATE行)复制到剪贴板。
在MySQL客户端上,在新目录中创建一个具有相同名称的文件:
nano ~/client-ssl/ca.pem在里面,粘贴剪贴板中复制的证书内容。完成后保存并关闭文件。
接下来,在MySQL服务器上显示客户端证书:
sudo cat /var/lib/mysql/client-cert.pem -----BEGIN CERTIFICATE----- . . . -----END CERTIFICATE-----再次,将内容复制到剪贴板。
在目录中的MySQL客户端上打开一个具有相同名称的client-ssl文件:
nano ~/client-ssl/client-cert.pem粘贴剪贴板中的内容。保存并关闭文件。
最后,在MySQL服务器上显示客户端密钥文件的内容:
sudo cat /var/lib/mysql/client-key.pem -----BEGIN RSA PRIVATE KEY----- . . . -----END RSA PRIVATE KEY-----将显示的内容(包括第一行和最后一行)复制到剪贴板。
在MySQL客户端上,打开目录中具有相同名称的client-ssl文件:
nano ~/client-ssl/client-key.pem粘贴剪贴板中的内容。保存并关闭文件。客户端计算机现在应具有访问MySQL服务器所需的所有凭据。接下来,我们需要改变我们的远程用户。
需要来自可信CA的远程用户证书目前,MySQL客户端具有可用于在连接时向服务器提供其证书的文件。但是,服务器仍未设置为要求来自受信任CA的客户端证书。
要更改此设置,请在MySQL服务器上再次登录MySQL root帐户:
mysql -u root -p