在另一台服务器上连接数据库

时间:2019-02-09 05:13:04

标签: php sql database rhel

对于一个Web项目,我们提供了两台服务器,一台用于Web,另一台用于数据库。当我尝试连接到另一台服务器上的数据库时,出现“无法连接权限被拒绝”错误。我想知道是否需要更改任何设置或修改任何文件(例如php.ini或cnf等)才能使其正常工作?我在rhel 7.5服务器上运行php 7.2。我也更改了root权限,以允许用户中的所有主机(%)。

$db_host        = '172.xx.xx.xx';
$db_user        = 'root';
$db_pass        = 'passwrd';
$db_database    = 'some_db';

/* End config */


$db_conx = new mysqli($db_host, $db_user, $db_pass, $db_database);
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

2 个答案:

答案 0 :(得分:0)

您需要确保“ root”用户具有管理员权限,或尝试创建一个新用户并为其授予全部管理员权限。

% mysql --user=root mysql
CREATE USER 'youruser'@'yourserver' IDENTIFIED BY 'yourpass';
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'yourserver' WITH GRANT OPTION;
FLUSH PRIVILEGES;

答案 1 :(得分:0)

默认情况下,您无法从远程IP地址访问mysql。首先,您需要授予对root的所有访问权限,

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

然后,您需要取消绑定mysql ini文件中的IP地址部分,该文件看起来像bind-address = 127.0.0.1,或者将其删除或用#bind-address = 127.0.0.1进行注释。 更改所有这些之后,重新启动mysql服务以使更改生效。 注意:以上位置适用于Windows环境,如果您使用的是Linux,则可能的位置可能是/etc/mysql/my.cnf,在某些情况下可能是/etc/mysql/mysql.conf.d/mysqld.cnf