我GOOGLE了这个,并find了答案,但即使遵循所有应该已经工作的步骤后,我仍然无法连接到我的SQL服务器从另一台服务器。
这是my.cnf,我在这里做的唯一的改变是添加bind参数,因为它从一开始就缺less
[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身份login到mysql服务器
那么我做了一个授予所有特权
mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY "pass";
我的理解是, user和pass是服务器上现有数据库的login信息。 或者他们的意思是别的吗? 另外50.xx.xx.xx的ip是要尝试build立连接的远程服务器的ip 。
我在这个声明中错了吗?
之后我刷新了所有权限
mysql> FLUSH PRIVILEGES;
然后在远程服务器上的PHP脚本中,我只填写了要连接的sql数据库的详细信息。
$database = demo_; $dbpass = 'user'; $dbpass = 'pass';
我使用了相同的用户,并通过我在GRANT ALL PRIVILEGES指定的GRANT ALL PRIVILEGES ,以确保匹配的东西。
但最终我仍然得到这个错误
SQLSTATE[HY000] [1130] Host 'sandbox.abc.com' is not allowed to connect to this MySQL server
有任何想法吗?
假设权限如你所说,它应该工作 – 但值得注意的是,GRANT提供了一个接口到MySQL的底层访问控制表 – 很长一段时间,这是标准的做法直接写这些; 你有没有检查mysql.user表中的内容?
您是否检查过服务器看到的客户端地址是否与您在授权中指定的地址相同? 即50.xx.xx.xx是sandbox.abc.com的唯一地址
另外,在mysql手册中有关于这个错误的提示:
在Linux上,可能会发生此错误的另一个原因是,您正在使用的二进制MySQL版本是使用与您正在使用的版本不同的glibc库编译的