Задать вопрос
alexanderbulatov
@alexanderbulatov
Fullstack разработчик

Почему Indexer (из Sphinx Search Engine) выдаёт ошибку «Отказано в доступе»?

Доброго времени суток!

Пытаюсь установить Sphinx на сервер.

Сделал команду в Shell-клиенте
yum install sphinx

Затем поправил файл конфига, вот как он стал выглядить:
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#

source industry
{
    # тип источника, в данном случае БД MySQL
	type			    = mysql

	# Параметры подключения к БД
	sql_host		    = localhost
	sql_user		    = root
	sql_pass		    = --пароль--
	sql_db			    = industry
	sql_port		    = 3306    # optional, default is 3306

	# запрос или запросы, которые будут выполнены после установки соединения с базой данных
	sql_query_pre       = SET NAMES utf8 COLLATE utf8_unicode_ci
#	sql_attr_uint = group_id
}

# пример наследования source , который наследуется от другого source
source in_publication: industry
{
	sql_query           = SELECT * FROM in_publication
 
	#здесь вы должны указать по каким полям будете группировать результаты, 
	#лучше указать все которые были перечислены сверху, тогда выглядеть будет логично
	#type of group fields
#	sql_field_string = id
#	sql_field_string = title
#	sql_field_string = annotation
}

source in_company: industry
{
	sql_query           = SELECT *  FROM in_company_info
 
	#здесь вы должны указать по каким полям будете группировать результаты, 
	#лучше указать все которые были перечислены сверху, тогда выглядеть будет логично
	#type of group fields
	
#	sql_field_string = id
#        sql_field_string = name
#        sql_field_string = annotation
}

source in_used_equipment: industry
{
	sql_query           = SELECT * FROM in_used_equipment
}

source in_used_equipment_buy: industry
{
	sql_query           = SELECT * FROM in_used_equipment_buy
}


index used_equipment
{
	source 			    = in_used_equipment

	# Путь по которому будут сохранены файлы индекса
	path			    = /var/lib/sphinx/used_equipment

	# тип хранения атрибутов индекса
	docinfo			    = extern

	# морфологический препроцессор
	morphology		    = stem_enru, Soundex, Metaphone

	# минимальная длина индексируемого слова
	min_word_len        = 1

    expand_keywords     = 1
    index_exact_words   = 1
    min_infix_len       = 3

    # звездочки в запросах, например *борон* => оборона, борона
    enable_star         = 1
}

index used_equipment_buy
{
    source              = in_used_equipment_buy
    path                = /var/lib/sphinx/used_equipment_buy
    docinfo             = extern
    morphology          = stem_enru, Soundex, Metaphone
    min_word_len        = 1
    expand_keywords     = 1
    index_exact_words   = 1
    min_infix_len       = 3

    # звездочки в запросах, например *борон* => оборона, борона
    enable_star         = 1
}


index publication
{
	source        		= in_publication
  	path          		= /var/lib/sphinx/test3
  	docinfo      		= extern
	morphology		    = stem_enru, Soundex, Metaphone
	min_word_len		= 1
	expand_keywords		= 1
	index_exact_words	= 1
	min_infix_len		= 3

	# звездочки в запросах, например *борон* => оборона, борона
    enable_star         = 1
}


index company
{
	source			    = in_company
	path          		= /var/lib/sphinx/test4
	morphology		    = stem_enru, Soundex, Metaphone
	min_word_len		= 1
	expand_keywords		= 1
	index_exact_words	= 1
	min_infix_len		= 3
	docinfo			    = extern

	# звездочки в запросах, например *борон* => оборона, борона
    enable_star         = 1
}

indexer
{
    # лимит памяти для работы индексатора
	mem_limit		    = 128M
}


searchd
{
	listen              = 9312:sphinx       # порт для работы через API
	listen              = 9306:mysql41      # порт для комуникаций с MySQL
	log                 = /var/log/sphinx/searchd.log
	query_log           = /var/log/sphinx/query.log
	read_timeout        = 5
	max_children        = 30
	pid_file            = /var/run/sphinx/searchd.pid
	seamless_rotate     = 1
	preopen_indexes     = 1
	unlink_old          = 1
	binlog_path         = /var/lib/sphinx/
}


После запускаю Индексер командой
indexer --all

И мне вылетает следующее:
Sphinx 2.1.5-id64-release (rel21-r4508)                                                        
Copyright (c) 2001-2014, Andrew Aksyonoff                                                      
Copyright (c) 2008-2014, Sphinx Technologies Inc (http://sphinxsearch.com)                     
                                                                                               
using config file '/etc/sphinx/sphinx.conf'...                                                 
indexing index 'used_equipment'...                                                             
ERROR: index 'used_equipment': sql_connect: Access denied for user 'root'@'localhost' (using pa
ssword: YES) (DSN=mysql://root:***@localhost:3306/industry).                                   
total 0 docs, 0 bytes                                                                          
total 0.009 sec, 0 bytes/sec, 0.00 docs/sec                                                    
indexing index 'used_equipment_buy'...                                                         
ERROR: index 'used_equipment_buy': sql_connect: Access denied for user 'root'@'localhost' (usin
g password: YES) (DSN=mysql://root:***@localhost:3306/industry).                               
total 0 docs, 0 bytes                                                                          
total 0.000 sec, 0 bytes/sec, 0.00 docs/sec                                                    
indexing index 'publication'...                                                                
ERROR: index 'publication': sql_connect: Access denied for user 'root'@'localhost' (using passw
ord: YES) (DSN=mysql://root:***@localhost:3306/industry).                                      
total 0 docs, 0 bytes                                                                          
total 0.000 sec, 0 bytes/sec, 0.00 docs/sec                                                    
indexing index 'company'...                                                                    
ERROR: index 'company': sql_connect: Access denied for user 'root'@'localhost' (using password:
 YES) (DSN=mysql://root:***@localhost:3306/industry).                                          
total 0 docs, 0 bytes                                                                          
total 0.000 sec, 0 bytes/sec, 0.00 docs/sec                                                    
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg                                   
total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg


А при попытке войти в MySQL через Shell-клиент во входе и доступе не отказано — пускает!
Следовательно, что-то в конфиге не дописал или что-то ещё.

Поэтому буду рад любой мысли, совету или напутствию.
  • Вопрос задан
  • 279 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
Ну очевидно что пароль неправильный или у вас вход по локальному руту без пароля
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@pnorkin
У меня была схожая ситуация, два индекса в конфиге, один работает, второй так отвечает.
Я максимально упростил запрос - и чудо ошибка ушла.
Начал разбираться в итоге нашел во view.
ERROR 1449 (HY000): The user specified as a definer ('some_user'@'localhost') does not exist

Итого: сообщение об ошибке не было сообщением конкретно подключения к базе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы