对于一个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();
}
答案 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
。