Попытка заставить phpMyAdmin разговаривать с удаленным сервером mySQL. Конфигурация приведена ниже, и в базе данных mySQL уже есть пользователь, который может войти в систему с указанного хоста, на котором находится PMA. Хостинг предоставляется Rackspace (Rightscale) и обоими облачными серверами за одним брандмауэром.
[config.inc.php]
<?php
$cfg['blowfish_secret'] = '';
$i = 0;
$i++;
$cfg['Servers'][$i]['host'] = 'XX.XX.XX.XX'; // MySQL hostname or IP address
$cfg['Servers'][$i]['port'] = ''; // MySQL port - leave blank for default port
$cfg['Servers'][$i]['socket'] = ''; // Path to the socket - leave blank for default socket
$cfg['Servers'][$i]['connect_type'] = 'tcp'; // How to connect to MySQL server ('tcp' or 'socket')
$cfg['Servers'][$i]['extension'] = 'mysql'; // The php MySQL extension to use ('mysql' or 'mysqli')
$cfg['Servers'][$i]['compress'] = FALSE; // Use compressed protocol for the MySQL connection
// (requires PHP >= 4.3.0)
$cfg['Servers'][$i]['controluser'] = ''; // MySQL control user settings
// (this user must have read-only
$cfg['Servers'][$i]['controlpass'] = ''; // access to the "mysql/user"
// and "mysql/db" tables).
// The controluser is also
// used for all relational
// features (pmadb)
$cfg['Servers'][$i]['auth_type'] = 'config'; // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user'] = 'USERNAME'; // MySQL user
$cfg['Servers'][$i]['password'] = 'PASSWORD'; // MySQL password (only needed
// with 'config' auth_type)
$cfg['Servers'][$i]['only_db'] = ''; // If set to a db-name, only
// this db is displayed in left frame
// It may also be an array of db-names, where sorting order is relevant.
$cfg['Servers'][$i]['hide_db'] = ''; // Database name to be hidden from listings
$cfg['Servers'][$i]['verbose'] = ''; // Verbose name for this host - leave blank to show the hostname
$cfg['Servers'][$i]['pmadb'] = ''; // Database used for Relation, Bookmark and PDF Features
// (see scripts/create_tables.sql)
// - leave blank for no support
// DEFAULT: 'phpmyadmin'
$cfg['Servers'][$i]['bookmarktable'] = ''; // Bookmark table
// - leave blank for no bookmark support
// DEFAULT: 'pma_bookmark'
$cfg['Servers'][$i]['relation'] = ''; // table to describe the relation between links (see doc)
// - leave blank for no relation-links support
// DEFAULT: 'pma_relation'
$cfg['Servers'][$i]['table_info'] = ''; // table to describe the display fields
// - leave blank for no display fields support
// DEFAULT: 'pma_table_info'
$cfg['Servers'][$i]['table_coords'] = ''; // table to describe the tables position for the PDF schema
// - leave blank for no PDF schema support
// DEFAULT: 'pma_table_coords'
$cfg['Servers'][$i]['pdf_pages'] = ''; // table to describe pages of relationpdf
// - leave blank if you don't want to use this
// DEFAULT: 'pma_pdf_pages'
$cfg['Servers'][$i]['column_info'] = ''; // table to store column information
// - leave blank for no column comments/mime types
// DEFAULT: 'pma_column_info'
$cfg['Servers'][$i]['history'] = ''; // table to store SQL history
// - leave blank for no SQL query history
// DEFAULT: 'pma_history'
$cfg['Servers'][$i]['verbose_check'] = TRUE; // set to FALSE if you know that your pma_* tables
// are up to date. This prevents compatibility
// checks and thereby increases performance.
$cfg['Servers'][$i]['AllowRoot'] = TRUE; // whether to allow root login
$cfg['Servers'][$i]['AllowDeny']['order'] // Host authentication order, leave blank to not use
= '';
$cfg['Servers'][$i]['AllowDeny']['rules'] // Host authentication rules, leave blank for defaults
= array();
Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация.
- Малькольм
Проверил это, заменив «xx.xx.xx.xx» на IP-адрес удаленного сервера mysql и убедившись, что базе данных разрешен доступ через ваш IP-адрес.
$ cfg ['Серверы'] [$ i] ['хост'] = 'XX.XX.XX.XX';
Есть несколько вещей, которые могут быть задействованы:
Само приложение не использует тот же исходный адрес, что и тот, который вы подключаете к серверу MySQL из командной строки. Если сервер и приложение являются локальными по отношению друг к другу, это может быть простое смешение 127.0.0.1
против localhost
, которые MySQL рассматривает как разные хосты, и поэтому им нужны разные маски разрешений. Точно так же, если ваше веб-приложение защищено SNAT за брандмауэром, весьма вероятно, что MySQL видит другой IP-адрес источника.
Другой распространенный источник проблем - использование имен хостов DNS в масках привилегий. Если вы это делаете (например, 'user'@'foo.bar.com'
) и разрешение DNS не удается или ваши прямые / обратные записи не совпадают, MySQL не разрешит соединение.
Если ничего из этого не произошло, вы также можете попробовать временно ослабить разрешения для 'user'@'%'
чтобы увидеть, решит ли это проблему.