mysql数据库开放远程连接的方法

时间:2021-11-22 13:12:39

 

web与mysql数据库分离开来是一个不错的选择,避免因为大量的数据库查询占用CPU而使web资源不足,同时可以使web服务器的资源尽最大的提供浏览服务,而数据库服务器单独的只处理数据库事物。

 

适用范围:拥有独立主机权限。

 

硬件配置:两台服务器,其中:

 

A为web服务器(假设ip为:192.192.192.192)

B为mysql数据服务器(假设ip为:168.168.168.168)

 

着手动作:

 

1.在web服务器A配置好web服务,ip为:192.192.192.192。

 

2.在数据库服务器B安装好mysql服务,ip为:168.168.168.168。

 

3.现在新版的mysql一般默认都不允许远程连接的。需要建立远程连接账号才可以。

 

以命令行方式使用root账号进入mysql。

 

mysql -uroot -ppass

 

选择进入mysql数据库

 

use `mysql`;

 

查看所有存在的账号和地址。

 

SELECT `Host`,`User` FROM `user`;

比如我的就是:

 

+-----------+------+

| Host      | User |

+-----------+------+

| localhost |      |

| localhost | pma  |

+-----------+------+

 

也就是说,存在三个只允许本地连接的(localhost)账号,分别为 root、pma、空用户。

 

现在决定让root具有上面那个web服务器A的远程链接的权限,那么就这样:

 

UUPDATE `user` SET `Host`='192.192.192.192' WHERE `User`='root' LIMIT 1;

 

这样192.192.192.192这台web服务器就可以远程连接到这个数据库服务器了。假如你想让任何远程机器都可以连接这个数据库,就将192.192.192.192换为%。不过不建议这样做,原因你知道啦!

 

假如你想新建一个用户new_user具备远程链接的权限的话,就这样

 

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,当然你可以随意设置。

 

上面两种方法都需要做下面这步操作:

 

flush privileges;//使权限立刻生效

 

或者干脆重启下mysql服务。

 

实际操作中,最好两台机器在同一个机房的同意网段/防火墙内。当然如果有可能的话,将数据库服务器放置于web服务器网络内的局域网中就更好了。