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