Назад | Перейти на главную страницу

Разрешить подключения с удаленного сервера в MySQL

Я погуглил это и нашел ответы, но даже после выполнения всех шагов, которые должны были сработать, я все еще не могу подключиться к моему серверу 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

затем я вошел на сервер mysql как root

затем я дал все привилегии

mysql> GRANT ALL PRIVILEGES ON *.* TO user@50.xx.xx.xx IDENTIFIED BY "pass";

Насколько я понимаю user и pass правильны ли данные для входа в существующую базу данных на сервере? Или они имеют в виду что-то другое? Так же ip 50.xx.xx.xx - это ip удаленного сервера, который будет пытаться установить соединение.

Я ошибаюсь в этом утверждении?

после чего я сбросил все привилегии

mysql> FLUSH PRIVILEGES;

затем в моих сценариях PHP на удаленном сервере я просто заполнил данные для базы данных sql, к которой я хочу подключиться.

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

Я использовал того же пользователя и передаю, что я указал в 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, чем та, которую вы используете.