Как подключить PHPMyAdmin к MySQL через именной канал с другим именем?

Статус
В этой теме нельзя размещать новые ответы.

Sobesednik

Постоялец
Регистрация
30 Мар 2013
Сообщения
105
Реакции
23
Вот вам задачка :confused:

1) MySQL работает со следующими настройками
[client]
Socket=mysql
Pipe
[mysqld]
Socket=mysql
skip-networking
enable-named-pipe


2) PHPMyAdmin имеет следующие параметры
$cfg['Servers'][$i]['host'] = '.';
$cfg['Servers'][$i]['connect_type'] = 'socket';

С помощью этих настроек вы можете подключиться к MySQL через именованный канал под названием "mysql".Видимо, "mysql" есть единственное имя по умолчанию которое можно употреблять в PhpMyAdmin.Вопрос: Возможно ли ввести изменения в конфигурационный файл PHPMyAdmin для того, чтобы подключиться к MySQL через именной канал с другим именем (например mypipe29.sock)?
 
[mysqld]
Socket=mypipe29
 

К сожалению, это не пойдет. Я пыталась объяснить, что по моим испытаниям, да, вы можете изменить [mysqld] настройки, но потом phpMyAdmin не "жрет" эти изменения. Надо найти, если это вообще возможно не изменяя код, как поправить конфигурационный файл у phpMyAdmin. Кокая то брехня...
 
В Windows системах, если в качестве имени хоста передается ., библиотека попытается открыть соединение на основе именованного пайпа. В этом случае имя сокета будет воспринято, как имя пайпа. Если имя сокета не задано, то будет использовано значение \\.\pipe\MySQL.
my.cnf:
socket = /var/lib/mysql/mysql.sock #любое имя сокета, хоть veliki_ktulhu.sock
Для просмотра ссылки Войди или Зарегистрируйся
 
В Windows системах, если в качестве имени хоста передается ., библиотека попытается открыть соединение на основе именованного пайпа. В этом случае имя сокета будет воспринято, как имя пайпа. Если имя сокета не задано, то будет использовано значение \\.\pipe\MySQL.
my.cnf:
socket = /var/lib/mysql/mysql.sock #любое имя сокета, хоть veliki_ktulhu.sock
Для просмотра ссылки Войди или Зарегистрируйся

Совершенно верно. Но видимо я что то упустил в формулировке моего вопроса. Нет никоких проблем работая с MySQL сервером, но вот что касается phpMyAdmin, это уже вопрос.

phpMyAdmin подключается к MySQL только в том случае если наименование named-pipe будет default, т.е. mysql (в том случае, как сказано, даже не обязательно указать в [mysqld] Socket=mysql).

Но, если мы меняем named-pipe на любое другое наименование (например mypipe29.sock), то phpMyAdmin не будет подключаться к MySQL server, и будет выбрасываться следующая ошибка:

"#2002 Cannot log in to the MySQL server"

Естественно! То есть, phpMyAdmin не находит именного канала с новым названием. Мое предположение в том, что код phpMyAdmin осознает только default named-pipe, т.е. "mysql".

Пробовал добавить следующее в конфигурационный файл PHPMyAdmin:

$cfg['Servers'][$i]['socket'] = 'somename.sock';

Где 'socket' означает Для просмотра ссылки Войди или Зарегистрируйся. Тоже на Для просмотра ссылки Войди или Зарегистрируйся. Тоже неработает, несмотря на рекомендации разработчиков. В общем, все еще пробую решить проблему безрезультатно.
 
если всё так сложно - может забить на именованые пайпы и использовать стандартные? либо вообще tcp разрешить в пределах локального хоста.
 
если всё так сложно - может забить на именованые пайпы и использовать стандартные?


Все может быть. Всегда в таких случаях мы находим другое, часто более простое, решение. А пока напрашивается вот что:PHPMyAdminвидимо не в состоянии правильно прочитать путьк именному каналу.
 
если это windows хост, и phpmyadmin только для себя, можно использовать вместо него navicat на машине, подключаясь по RDP. он 100% подключается к любым сокетам и пайпам. можно также подключаться к машине через ssh туннель, таким образом можно избежать открытого tcp доступа к базе.
navicat есть на Для просмотра ссылки Войди или Зарегистрируйся
 
Я был очень занят, чтобы появиться на сайте ранее. Все оказалось довольно прозаическую и легко. Следующие параметры должны быть для того, чтобы подключиться к MySQL через именованный канал с любым именем:

$cfg['Servers'][$i]['host'] = '.';
$cfg['Servers'][$i]['connect_type'] = 'socket';
$cfg['Servers'][$i]['socket'] = '\\\\.\\pipe\\anynameofpipe';

Я надеюсь, что кто нибуть найдет это полезным тоже.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху