标题: 如何利用 MySQL 设置远程数据库以优化网站性能 [打印本页] 作者: 道家人 时间: 2024-11-17 20:08 标题: 如何利用 MySQL 设置远程数据库以优化网站性能 前些天发现了一个巨牛的人工智能学习网站,普通易懂,风趣幽默,不由得分享一下给各人。点击跳转到网站。
先容
随着您的应用步伐或网站的增长,您大概会发现已经超出了当前的设置。如果您现在将 Web 服务器和数据库后端托管在同一台 VPS 上,一个好主意是将这两个功能分开,以便每个功能可以在自己的机器上运行和增长。
在本指南中,我们将讨论如何配置一个远程数据库服务器,以便您的 Web 服务器可以连接到动态内容。我们将以 WordPress 作为示例,如许我们就有了一些可以操作的内容。我们将在我们的演示中利用 Ubuntu 12.04 VPS 实例,配置 Nginx 在我们的 Web 服务器上,然后将其连接到远程机器上的 MySQL 数据库。
在数据库服务器上安装 MySQL
首先,我们将配置一个 VPS 实例作为 MySQL 服务器。将我们的数据存储在一个单独的盘算机上是一个很好的方式,当您在单机配置上达到极限时,可以优雅地扩展。它还提供了在以后更多地扩展和负载均衡您的设置所需的基本结构。
首先,我们需要在我们的数据库服务器上安装一些基本软件包。这些基本上是为传统的 LEMP 堆栈设置数据库所需的大部分雷同的步调,但我们不需要所有的组件(一些将在其他服务器上)。
首先更新软件包缓存并安装 MySQL 服务器:
sudo apt-get update
sudo apt-get install mysql-server
复制代码
在安装过程中,您将被要求选择并确认 MySQL 的 root 暗码。
安装完成后,您需要运行数据库安装命令,这将天生适当的目录结构来管理您的组件:
sudo mysql_install_db
复制代码
之后,我们应该通过运行一个脚本来加强一些安全性,该脚本将扣问我们是否禁用一些不安全的默认设置:
sudo mysql_secure_installation
复制代码
您将需要输入您在上述步调中设置的 MySQL 管理员暗码。之后,它会扣问您是否要更改该暗码。如果您对当前的暗码感到满意,请输入“N”体现不更改。
对于所有其他问题,您应该只需按 ENTER 键选择默认选项,这将删除一些测试数据库并锁定访问权限。
配置 MySQL 允许远程访问
现在您的数据库已经运行起来了,我们需要更改一些值以允许其他盘算机连接。
利用 root 权限在编辑器中打开 MySQL 的主配置文件:
sudo nano /etc/mysql/my.cnf
复制代码
该文件被分成由方括号([ 和 ])中的单词体现的部分。找到标志为 mysqld 的部分:
[mysqld]
复制代码
在这个部分(在这个标志和下一个部分标志之间的区域内),您需要找到一个名为 bind-address 的参数。这基本上告诉数据库软件要监听哪个网络地点上的连接。
当前,MySQL 配置为仅探求来自自己盘算机的连接。我们需要更改它以引用您的服务器可以访问的 外部 IP 地点。
如果您在具有私有网络功能的数据中心托管此服务,请利用您服务器的私有网络 IP。否则,您可以在此处利用公共 IP 地点:
bind-address = your_database_IP
复制代码
完成后保存并关闭文件。
为了逼迫 MySQL 读取我们刚刚实施的新更改,我们可以重新启动数据库:
sudo service mysql restart
复制代码
设置远程 WordPress 凭据和数据库
现在我们已经配置了 MySQL 监听外部地点,我们需要创建一个数据库并创建一个远程用户。尽管 MySQL 自己现在正在监听其他机器可以连接的 IP 地点,但现在还没有任何数据库可以访问。
这也是一个机会,让我们根据用户连接的位置创建不同的权限。我们可以创建两个“用户”,现实上可以是雷同的用户名,但与不同的主机相关联。
我所说的是,我们可以创建一个用户,该用户绑定到数据库服务器自己,并授予它非常广泛的权限。然后我们可以利用雷同的用户名,但与我们的 Web 服务器相关联,而且只给予它 WordPress 需要的最低权限。
这将允许我们在登录到我们的数据库服务器时进行重要工作,同时只为我们的 Web 服务器提供其完成工作所需的最低权限。这是一个良好的安全策略,可以在 Web 服务器受到损害的情况下部分保护数据库服务器。
首先利用您配置的 root 帐户和管理暗码连接到 MySQL:
mysql -u root -p
复制代码
您将被要求输入您的 MySQL root 暗码,然后将获得一个 MySQL 提示符。
让我们开始创建 WordPress 将利用的数据库。我们将简单地称之为 wordpress,以便以后可以轻松辨认它:
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
复制代码
让我们授予这个帐户对我们的数据库的完全访问权限:
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';
复制代码
现在,这个用户可以在 WordPress 的数据库上执行任何操作,但此帐户不能远程利用,因为它只匹配来自本地皮算机的连接。
让我们创建一个陪同帐户,它将仅匹配来自我们的 Web 服务器的连接。为此,您将需要您的 Web 服务器的 IP 地点。我们可以为此帐户命名任何名称,但为了更划一的体验,我们将利用与上面完全雷同的用户名,只是修改了主机部分。
请记住,您必须利用与您在 my.cnf 文件中配置的雷同网络的 IP 地点。这意味着如果您利用私有网络 IP,您将希望创建以下规则以利用您的 Web 服务器的私有 IP。如果您配置 MySQL 利用公共互联网,您应该利用 Web 服务器的公共 IP 地点。
CREATE USER 'wordpressuser'@'web_server_IP' IDENTIFIED BY 'password';
GRANT SELECT,DELETE,INSERT,UPDATE ON wordpress.* TO 'wordpressuser'@'web_server_ip';
复制代码
但现在,我们将暂时授予所有权限,这使其在现在现实上与当地帐户雷同:
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'web_server_ip';
复制代码
完成后,革新权限以将它们写入磁盘并开始利用它们:
FLUSH PRIVILEGES;
复制代码
现在,您可以通过键入以下命令退出 MySQL 提示符:
exit
复制代码
测试远程和当地连接
在继承之前,最好验证一下你是否可以利用 wordpressuser 账户从当地机器和 Web 服务器连接到数据库。
首先,通过尝试利用我们的新账户从数据库服务器登录来测试数据库机器上的连接:
mysql -u wordpressuser -p
复制代码
在提示时输入设置的暗码。
如果你看到了 MySQL 提示符,那么当地连接就成功了。你可以通过输入以下命令退出:
exit
复制代码
登录到你的 Web 服务器上测试远程连接。
在你的 Web 服务器上,你需要安装一些 MySQL 客户端工具以便访问远程数据库。更新当地软件包缓存,然后安装客户端工具:
sudo apt-get update
sudo apt-get install mysql-client
复制代码
现在,我们可以利用以下语法连接到我们的数据库服务器:
mysql -u wordpressuser -h database_server_IP -p
复制代码
再次确保你利用的是数据库服务器的正确 IP 地点。如果你配置了 MySQL 监听私有网络,请输入数据库的私有网络 IP,否则输入数据库服务器的公共 IP 地点。
你应该被要求输入 wordpressuser 账户的暗码,如果统统顺遂,你应该看到一个 MySQL 提示符。
如果这一步成功,那么你可以退出提示符,因为你已经验证了你可以远程连接。
作为额外的检查,你可以尝试从第三台服务器上做同样的事情,以确保其他服务器没有被授予访问权限。你已经验证了当地访问和来自 Web 服务器的访问,但你还没有验证其他连接会被拒绝。
尝试在你没有为其配置特定用户账户的服务器上执行同样的步调。你大概需要像上面那样安装客户端工具:
mysql -u wordpressuser -h database_server_IP -p
复制代码
这应该不会成功。它应该返回一个类似于以下的错误:
ERROR 1130 (HY000): Host '11.111.111.111' is not allowed to connect to this MySQL server
复制代码
这是我们期望的结果,也是我们想要的。
设置 Web 服务器
现在我们已经验证了我们的 Web 服务器可以访问 WordPress 数据库,我们需要通过配置 Nginx、PHP 和须要的组件来将其真正酿成一个 Web 服务器。
由于你在上面运行了测试之前更新了软件包索引,我们不需要再次执行这个步调。让我们安装我们需要的所有软件包: