2015-11-08 2 views
0

У меня проблемы со всем днем, и я совсем застрял в этом, давайте объясним это.Разрешение отклонено при попытке подключиться к Mysql, установив mediawiki

Я запускаю MariaDB, который является flavuor mysql для Fedora Linux Distibution. Я пытаюсь установить на своей локальной машине php cms, который нуждается в бэкэнде базы данных, поэтому я создал базу данных (это не первый раз, поэтому я должен знать, что я делаю), допустим, это называется myDb нормально? Тогда я создал пользователя, допустим, myDbUser @ localhost ok? Затем предоставляются привилегии на db пользователю (GRANT ALL для конкретного). Затем я проверил пользователя и предоставленные привилегии из командной строки db, все работает нормально, я могу войти в систему, и я могу видеть db.

Затем я запустил сценарий установки cms в порядке?

Database type: MySQL (or compatible) 
Database host: localhost 
Database name: myDb 
Database username: myDbUser 
Database password: passowrd 

Те же данные, которые работают из командной строки. Но результат:

DB connection error: Permission denied (localhost). 
Check the host, username and password and try again. 

Учитывая, что имя пользователя и пароль, отлично работает из командной строки я предполагаю, что это проблема «хозяина» ..

Так я провел весь вечер, пытаясь понять, что случилось с ним и единственное, что я пришел с (я знаю, что это не так много) является вывод этой команды:

netstat -tln 
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address   Foreign Address   State  
tcp  0  0 127.0.0.1:631   0.0.0.0:*    LISTEN  
tcp  0  0 0.0.0.0:2393   0.0.0.0:*    LISTEN  
tcp  0  0 0.0.0.0:3306   0.0.0.0:*    LISTEN  
tcp6  0  0 ::1:631     :::*     LISTEN  
tcp6  0  0 :::80     :::*     LISTEN 

Я попробовал все из тех IP без какого-либо успеха. У меня всегда была одна и та же ошибка, поэтому любая идея, подсказка, подсказка, даже фрагмент, хотя? Благодарю.

EDIT: Таким образом, дальнейшие исследования показали, что проблема НЕ является проблемой базы данных, а является проблемой CMS. Это потому, что я могу подключиться к db из командной строки с данным пользователем и паролем.

EDIT2: Другие исследователи заявляют, что проблема может быть permission problem.. Я вхожу в db от пользователя root моей машины, но веб-сервер обращается к нему от другого пользователя. Я до сих пор не знаю, как это решить.

EDIT3: Вот лог-файл сервера Apache:

/var/www/html/Wiki/includes/limit.sh: line 61: ulimit: cpu time: cannot modify limit: Permission denied 
/var/www/html/Wiki/includes/limit.sh: line 90: ulimit: file size: cannot modify limit: Permission denied 

кто сталкивался с подобной проблемой, прежде чем и может помочь? У меня есть эти две ссылки: 12, но они, похоже, не помогают мне больше, потому что я не понимаю, почему этот скрипт не может выполнять эти команды.

+0

использования Try 127.0.0.1:3306 – c4pricorn

+0

DB соединение error: Permission denied (127.0.0.1:3306) Проверьте хост, имя пользователя и пароль и повторите попытку. – softwareplay

+0

Порт MySQL по умолчанию - '3306', поэтому вы будете искать записи с': 3306'. Там только один ('0.0.0.0'), и этот IP выглядит особо, поэтому не уверен, что именно это означает. Тем не менее, похоже, что вы также должны иметь строку '127.0.0.1: 3306' на выходе' netstat'. –

ответ

0

Ну, это получилось, что это не проблема MySql или PHP вообще. Вместо этого это была проблема безопасности, у сервера не было разрешения на доступ к каналу mysql. Я должен был исправить его с помощью этих команд:

   # grep httpd /var/log/audit/audit.log | audit2allow 
       # semodule -i mypol.pp 

Я действительно имел трудное время найти это решение, я должен был идти искать системные сообщения с journalctl (команда я не знал раньше).Так что это была большая пита *, но в конце концов я ее нашел.

Так что, если у кого-то будет аналогичная проблема, по крайней мере, ответ есть.

0

Если вы не знакомы с тем, как работают разрешения MySQL, просто дайте установочному файлу MediaWiki пароль root, и он создаст пользователя для себя с правом доступа.

0

Вы можете попробовать дать разрешения, такие как 'youUser' @ '%', используя '%' вместо localhost. Это должно сработать.

0

На самом деле, то, что вам нужно было

setsebool -P httpd_can_network_connect_db 1 

Я всегда, каждый! Один! время !, сталкиваются с одной или несколькими проблемами selinux, когда я настраиваю новый хост. И каждый раз, когда я заканчиваю поиски проблемы, как правило, часов, прежде чем я в конечном итоге запущу sealert -a и сам справимся с этим.

Таким образом, вы должны понимать, немного как читать

sealert -a /var/log/audit/audit.log 

который показал вам Grep решение применяется. Вы должны прочитать немного дальше. Ваш вывод выглядел бы, как показано ниже (обратите внимание на эту проблему, первый вставили линию, и предлагаемые решения с их уверенностью, что вы выбрали один падает довольно короткий):

SELinux is preventing /usr/sbin/httpd from name_connect access on the tcp_socket . 

***** Plugin catchall_boolean (47.5 confidence) suggests ******************* 

If you want to allow HTTPD scripts and modules to connect to the network using TCP. 
Then you must tell SELinux about this by enabling the 'httpd_can_network_connect'boolean. 
Do 
setsebool -P httpd_can_network_connect 1 

***** Plugin catchall_boolean (47.5 confidence) suggests ******************* 

If you want to allow HTTPD scripts and modules to connect to databases over the network. 
Then you must tell SELinux about this by enabling the 'httpd_can_network_connect_db'boolean. 
Do 
setsebool -P httpd_can_network_connect_db 1 

***** Plugin catchall (6.38 confidence) suggests *************************** 

If you believe that httpd should be allowed name_connect access on the tcp_socket by default. 
Then you should report this as a bug. 
You can generate a local policy module to allow this access. 
Do 
allow this access for now by executing: 
# grep httpd /var/log/audit/audit.log | audit2allow -M mypol 
# semodule -i mypol.pp 


Additional Information: 
Source Context    unconfined_u:system_r:httpd_t:s0 
Target Context    system_u:object_r:mysqld_port_t:s0 
Target Objects     [ tcp_socket ] 
Source      httpd 
Source Path     /usr/sbin/httpd 
Port       3306 
Host       <Unknown> 
Source RPM Packages   httpd-2.2.15-54.el6.centos.x86_64 
Target RPM Packages 
Policy RPM     selinux-policy-3.7.19-292.el6.noarch 
Selinux Enabled    True 
Policy Type     targeted 
Enforcing Mode    Enforcing 
Host Name      publicsrv 
Platform      Linux publicsrv 2.6.32-642.el6.x86_64 #1 SMP Tue 
           May 10 17:27:01 UTC 2016 x86_64 x86_64 
Alert Count     26 
First Seen     Sat 01 Oct 2016 09:14:01 PM EEST 
Last Seen      Sat 01 Oct 2016 11:23:12 PM EEST 
Local ID      064b82b4-2e50-42ea-9a07-11468d0a62a6 

Raw Audit Messages 
type=AVC msg=audit(1475353392.72:578): avc: denied { name_connect } for pid=5858 comm="httpd" dest=3306 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket 


type=SYSCALL msg=audit(1475353392.72:578): arch=x86_64 syscall=connect success=no exit=EACCES a0=e a1=7f0cd22a6008 a2=10 a3=40 items=0 ppid=5852 pid=5858 auid=0 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=1 comm=httpd exe=/usr/sbin/httpd subj=unconfined_u:system_r:httpd_t:s0 key=(null) 

Hash: httpd,httpd_t,mysqld_port_t,tcp_socket,name_connect 

audit2allow 

#============= httpd_t ============== 

#!!!! This avc can be allowed using one of the these booleans: 
#  httpd_can_network_connect, httpd_can_network_connect_db 
allow httpd_t mysqld_port_t:tcp_socket name_connect; 

audit2allow -R 

#============= httpd_t ============== 

#!!!! This avc can be allowed using one of the these booleans: 
#  httpd_can_network_connect, httpd_can_network_connect_db 
allow httpd_t mysqld_port_t:tcp_socket name_connect; 
Смежные вопросы