允许来自 MySQL 中的远程服务器的连接

允许来自 MySQL 中的远程服务器的连接

我在 Google 上搜索了这个问题并找到了答案,但即使按照所有应该可行的步骤操作后,我仍然无法从另一台服务器连接到我的 SQL 服务器。

这是 my.cnf,我在这里做的唯一更改是添加参数,bind因为它从一开始就缺失了

[mysqld]
query-cache-type = 1
query-cache-size = 8M

set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

bind=205.xxx.xxx.xx # the IP of the server that mySQL is located on as well as this my.cnf

# To enable the InnoDB Plugin, uncomment the 2 next lines
#ignore-builtin-innodb
#plugin-load=innodb=ha_innodb_plugin.so

# To enable InnoDB-related INFORMATION_SCHEMA tables
# Join the following options to above directive
  ;innodb_trx=ha_innodb_plugin.so
  ;innodb_locks=ha_innodb_plugin.so
  ;innodb_cmp=ha_innodb_plugin.so
  ;innodb_cmp_reset=ha_innodb_plugin.so
  ;innodb_cmpmem=ha_innodb_plugin.so
  ;innodb_cmpmem_reset=ha_innodb_plugin.so

set-variable = innodb_buffer_pool_size=2M
set-variable = innodb_additional_mem_pool_size=500K
set-variable = innodb_log_buffer_size=500K
set-variable = innodb_thread_concurrency=2
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

set-variable = innodb_buffer_pool_size=2M
set-variable = innodb_additional_mem_pool_size=500K
set-variable = innodb_log_buffer_size=500K
set-variable = innodb_thread_concurrency=2

然后我重新启动了 mysql 服务器

/etc/init.d/mysqld restart

然后我以 root 身份登录到 mysql 服务器

然后我授予了所有权限

mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY "pass";

据我了解userpass服务器上现有数据库的登录详细信息正确吗?或者它们还有其他含义?此外,ip50.xx.xx.xx 是ip将尝试建立连接的远程服务器的。

我这个说法有错吗?

之后我清除了所有权限

mysql> FLUSH PRIVILEGES;

然后在远程服务器上的 PHP 脚本中我只需填写想要连接的 SQL 数据库的详细信息。

$database = demo_;
$dbpass = 'user';
$dbpass = 'pass';

我使用了与我在 just 中指定的相同的用户和密码,GRANT ALL PRIVILEGES以确保一切匹配。

但最后我仍然收到这个错误

SQLSTATE[HY000] [1130] Host 'sandbox.abc.com' is not allowed to connect to this MySQL server

有任何想法吗?

答案1

假设权限如您所说,它应该可以工作 - 但值得注意的是 GRANT 为 MySQL 中的底层访问控制表提供了一个接口 - 并且很长一段时间内直接写入这些表是标准做法;您检查过 mysql.user 表中有什么吗?

您是否检查过服务器看到的客户端地址是否与您在授权中指定的地址相同?即 50.xx.xx.xx 是仅有的sandbox.abc.com 的地址

此外,mysql 手册中还有关于此错误的说明:

在 Linux 上,发生此错误的另一个原因是您使用的二进制 MySQL 版本是使用与您正在使用的 glibc 库版本不同的版本编译的

相关内容