web与mysql数据库分离开来是一个不错的选择,避免因为大量的数据库查询占用CPU而使web资源不足,同时可以使web服务器的资源尽最大的提供浏览服务,而数据库服务器单独的只处理数据库事物。
我对这方面的原理不甚太十分了解,我的做法其实就是下面要说的,很简单。大家有更好的经验和技巧不妨提出来分享一下。
适用范围:拥有独立主机权限。
硬件配置:两台服务器,至于具体服务器硬件配置就不在本文范围内了(最主要是偶不懂)
其中:A为web服务器(假设ip为:192.192.192.192)、B为mysql数据服务器(假设ip为:168.168.168.168)
着手动作:
1.在web服务器A配置好web服务。关于这方面文章很多了。我前一阵也写过win2000的配置。可以找一下我的Blog。假设web服务器的IP为:192.192.192.192
2.在数据库服务器B安装好mysql服务。这个不细说了,win下自我感觉超级简单。类Unix偶不熟。
3.现在新版的mysql一般默认都不允许远程连接的。需要建立远程连接账号才可以。
以命令行方式使用root账号进入mysql。
mysql -uroot -ppass
选择进入mysql数据库
use `mysql`;
查看所有存在的账号和地址。
Select `Host`,`User` FROM `user`;
比如我的就是:
QUOTE:
+-----------+------+
| Host | User |
+-----------+------+
| localhost | |
| localhost | pma |
| localhost | root |
+-----------+------+
3 rows in set (0.00 sec)
也就是说,存在三个只允许本地连接的(localhost)账号,分别为 root、pma、空用户。
现在决定让root具有上面那个web服务器A的远程链接的权限,那么就这样。
CODE:[Copy to clipboard]Update `user` SET `Host`='192.192.192.192' Where `User`='root' LIMIT 1;
这样192.192.192.192这台web服务器就可以远程连接到这个数据库服务器了。假如你想让任何远程机器都可以连接这个数据库,就将192.192.192.192换为%。不过不建议这样做,原因你知道啦!
假如你想新建一个用户new_user具备远程链接的权限的话,就这样
CODE:[Copy to clipboard]Insert INTO `user` ( `Host` , `User` , `Password` , `Select_priv` , `Insert_priv` , `Update_priv` , `Delete_priv` , `Create_priv` , `Drop_priv` , `Reload_priv` , `Shutdown_priv` , `Process_priv` , `File_priv` , `Grant_priv` , `References_priv` , `Index_priv` , `Alter_priv` , `Show_db_priv` , `Super_priv` , `Create_tmp_table_priv` , `Lock_tables_priv` , `Execute_priv` , `Repl_slave_priv` , `Repl_client_priv` , `ssl_type` , `ssl_cipher` , `x509_issuer` , `x509_subject` , `max_questions` , `max_updates` , `max_connections` ) VALUES ('192.192.192.192', 'new_user', PASSWORD( 'new_user_password' ) , 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');
将new_user改为你想要的名字就可以了,密码是:new_user_password,当然你可以随意设置。
当你的数据库可以远程连接后,你就可以在你的web服务器的论坛config.inc.php中设置$dbhost变量为你的mysql数据库服务器B的IP了。$dbhost = '168.168.168.168';
实际操作中,最好两台机器在同一个机房的同意网段/防火墙内。
当然如果有可能的话,将数据库服务器放置于web服务器网络内的局域网中就更好了。
我对这方面的原理不甚太十分了解,我的做法其实就是下面要说的,很简单。大家有更好的经验和技巧不妨提出来分享一下。
适用范围:拥有独立主机权限。
硬件配置:两台服务器,至于具体服务器硬件配置就不在本文范围内了(最主要是偶不懂)
其中:A为web服务器(假设ip为:192.192.192.192)、B为mysql数据服务器(假设ip为:168.168.168.168)
着手动作:
1.在web服务器A配置好web服务。关于这方面文章很多了。我前一阵也写过win2000的配置。可以找一下我的Blog。假设web服务器的IP为:192.192.192.192
2.在数据库服务器B安装好mysql服务。这个不细说了,win下自我感觉超级简单。类Unix偶不熟。
3.现在新版的mysql一般默认都不允许远程连接的。需要建立远程连接账号才可以。
以命令行方式使用root账号进入mysql。
mysql -uroot -ppass
选择进入mysql数据库
use `mysql`;
查看所有存在的账号和地址。
Select `Host`,`User` FROM `user`;
比如我的就是:
QUOTE:
+-----------+------+
| Host | User |
+-----------+------+
| localhost | |
| localhost | pma |
| localhost | root |
+-----------+------+
3 rows in set (0.00 sec)
也就是说,存在三个只允许本地连接的(localhost)账号,分别为 root、pma、空用户。
现在决定让root具有上面那个web服务器A的远程链接的权限,那么就这样。
CODE:[Copy to clipboard]Update `user` SET `Host`='192.192.192.192' Where `User`='root' LIMIT 1;
这样192.192.192.192这台web服务器就可以远程连接到这个数据库服务器了。假如你想让任何远程机器都可以连接这个数据库,就将192.192.192.192换为%。不过不建议这样做,原因你知道啦!
假如你想新建一个用户new_user具备远程链接的权限的话,就这样
CODE:[Copy to clipboard]Insert INTO `user` ( `Host` , `User` , `Password` , `Select_priv` , `Insert_priv` , `Update_priv` , `Delete_priv` , `Create_priv` , `Drop_priv` , `Reload_priv` , `Shutdown_priv` , `Process_priv` , `File_priv` , `Grant_priv` , `References_priv` , `Index_priv` , `Alter_priv` , `Show_db_priv` , `Super_priv` , `Create_tmp_table_priv` , `Lock_tables_priv` , `Execute_priv` , `Repl_slave_priv` , `Repl_client_priv` , `ssl_type` , `ssl_cipher` , `x509_issuer` , `x509_subject` , `max_questions` , `max_updates` , `max_connections` ) VALUES ('192.192.192.192', 'new_user', PASSWORD( 'new_user_password' ) , 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');
将new_user改为你想要的名字就可以了,密码是:new_user_password,当然你可以随意设置。
当你的数据库可以远程连接后,你就可以在你的web服务器的论坛config.inc.php中设置$dbhost变量为你的mysql数据库服务器B的IP了。$dbhost = '168.168.168.168';
实际操作中,最好两台机器在同一个机房的同意网段/防火墙内。
当然如果有可能的话,将数据库服务器放置于web服务器网络内的局域网中就更好了。